if (r < 0) {
goto fail;
}
- net.set_socket_options(sd);
center->create_file_event(sd, EVENT_READABLE, read_handler);
state = STATE_CONNECTING_WAIT_BANNER;
listen_sd = -1;
return -errno;
}
+
+ net.set_socket_options(listen_sd);
+
// use whatever user specified (if anything)
entity_addr_t listen_addr = bind_addr;
listen_addr.set_family(family);
return ret;
}
}
+
+ set_socket_options(s);
+
ret = ::connect(s, (sockaddr*)&addr.addr, addr.addr_size());
if (ret < 0) {
if (errno == EINPROGRESS && nonblock)
return -errno;
}
- set_socket_options(s);
-
return s;
}
return rc;
}
+ if (msgr->cct->_conf->ms_tcp_rcvbuf) {
+ int size = msgr->cct->_conf->ms_tcp_rcvbuf;
+ rc = ::setsockopt(listen_sd, SOL_SOCKET, SO_RCVBUF, (void*)&size, sizeof(size));
+ if (rc < 0) {
+ rc = -errno;
+ lderr(msgr->cct) << "accepter.bind failed to set SO_RCVBUF to " << size << ": " << cpp_strerror(r) << dendl;
+ return rc;
+ }
+ }
+
ldout(msgr->cct,10) << "accepter.bind bound to " << listen_addr << dendl;
// listen!
}
recv_reset();
+
+ set_socket_options();
+
// connect!
ldout(msgr->cct,10) << "connecting to " << peer_addr << dendl;
rc = ::connect(sd, (sockaddr*)&peer_addr.addr, peer_addr.addr_size());
goto fail;
}
- set_socket_options();
-
// verify banner
// FIXME: this should be non-blocking, or in some other way verify the banner as we get it.
if (tcp_read((char*)&banner, strlen(CEPH_BANNER)) < 0) {