void *Accepter::entry()
{
- const md_config_t *conf = msgr->cct->_conf;
ldout(msgr->cct,10) << "accepter starting" << dendl;
int errors = 0;
errors = 0;
ldout(msgr->cct,10) << "accepted incoming on sd " << sd << dendl;
- // disable Nagle algorithm?
- if (conf->ms_tcp_nodelay) {
- int flag = 1;
- int r = ::setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(flag));
- if (r < 0)
- ldout(msgr->cct,0) << "accepter could't set TCP_NODELAY: " << strerror_r(errno, buf, sizeof(buf)) << dendl;
- }
-
msgr->add_accept_pipe(sd);
} else {
ldout(msgr->cct,0) << "accepter no incoming connection? sd = " << sd
{
ldout(msgr->cct,10) << "accept" << dendl;
+ set_socket_options();
+
// my creater gave me sd via accept()
assert(state == STATE_ACCEPTING);
return -1;
}
+void Pipe::set_socket_options()
+{
+ // disable Nagle algorithm?
+ if (msgr->cct->_conf->ms_tcp_nodelay) {
+ int flag = 1;
+ int r = ::setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(flag));
+ if (r < 0) {
+ r = -errno;
+ ldout(msgr->cct,0) << "couldn't set TCP_NODELAY: " << cpp_strerror(r) << dendl;
+ }
+ }
+}
+
int Pipe::connect()
{
bool got_bad_auth = false;
goto fail;
}
- // disable Nagle algorithm?
- if (conf->ms_tcp_nodelay) {
- int flag = 1;
- int r = ::setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(flag));
- if (r < 0)
- ldout(msgr->cct,0) << "connect couldn't set TCP_NODELAY: " << strerror_r(errno, buf, sizeof(buf)) << dendl;
- }
+ set_socket_options();
// verify banner
// FIXME: this should be non-blocking, or in some other way verify the banner as we get it.
uint64_t out_seq;
uint64_t in_seq, in_seq_acked;
+ void set_socket_options();
+
int accept(); // server handshake
int connect(); // client handshake
void reader();