]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
msg/Pipe: move setting of socket options into a common method
authorSage Weil <sage@inktank.com>
Thu, 28 Feb 2013 21:00:19 +0000 (13:00 -0800)
committerSage Weil <sage@inktank.com>
Thu, 28 Feb 2013 21:00:19 +0000 (13:00 -0800)
Signed-off-by: Sage Weil <sage@inktank.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
src/msg/Accepter.cc
src/msg/Pipe.cc
src/msg/Pipe.h

index ac180e2144126236042884299072c82398ceed29..90c68df6cf3de3936709bfd1c5f6b6afa763464b 100644 (file)
@@ -183,7 +183,6 @@ int Accepter::start()
 
 void *Accepter::entry()
 {
-  const md_config_t *conf = msgr->cct->_conf;
   ldout(msgr->cct,10) << "accepter starting" << dendl;
   
   int errors = 0;
@@ -214,14 +213,6 @@ void *Accepter::entry()
       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
index 736146d9f4b7fcc7d21b34d0107e33e7cc7449ae..b9a9c3e93c92dcb0a84fc66d6c23050b3f4cc436 100644 (file)
@@ -212,6 +212,8 @@ int Pipe::accept()
 {
   ldout(msgr->cct,10) << "accept" << dendl;
 
+  set_socket_options();
+
   // my creater gave me sd via accept()
   assert(state == STATE_ACCEPTING);
   
@@ -709,6 +711,19 @@ int Pipe::accept()
   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;
@@ -758,13 +773,7 @@ int Pipe::connect()
     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.
index 3eeae705bd7bb226cd9164bd61b2822e8b5a6dbc..ce6298d9681162d7cc5c65cec8d4d69c8132ff59 100644 (file)
@@ -169,6 +169,8 @@ class DispatchQueue;
     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();