Repository: qpid-dispatch
Updated Branches:
  refs/heads/master 20a43f75c -> 1d258301c


DISPATCH-288 - Configure wakeup-pipe FDs as non-blocking.


Project: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/commit/1d258301
Tree: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/tree/1d258301
Diff: http://git-wip-us.apache.org/repos/asf/qpid-dispatch/diff/1d258301

Branch: refs/heads/master
Commit: 1d258301cc263719e9274c77e1c6deaab095dedb
Parents: 20a43f7
Author: Ted Ross <[email protected]>
Authored: Thu Apr 21 14:06:10 2016 -0400
Committer: Ted Ross <[email protected]>
Committed: Thu Apr 21 14:06:10 2016 -0400

----------------------------------------------------------------------
 src/posix/driver.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-dispatch/blob/1d258301/src/posix/driver.c
----------------------------------------------------------------------
diff --git a/src/posix/driver.c b/src/posix/driver.c
index 0273b2a..e9d43e3 100644
--- a/src/posix/driver.c
+++ b/src/posix/driver.c
@@ -217,7 +217,7 @@ static int qdpn_create_socket(int af)
 }
 
 
-static void qdpn_configure_sock(qdpn_driver_t *driver, int sock)
+static void qdpn_configure_sock(qdpn_driver_t *driver, int sock, bool tcp)
 {
     //
     // Set the socket to be non-blocking for asynchronous operation.
@@ -233,9 +233,11 @@ static void qdpn_configure_sock(qdpn_driver_t *driver, int 
sock)
     // Note:  It would be more correct for the "level" argument to be SOL_TCP. 
 However, there
     //        are portability issues with this macro so we use IPPROTO_TCP 
instead.
     //
-    int tcp_nodelay = 1;
-    if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (void*) &tcp_nodelay, 
sizeof(tcp_nodelay)) < 0)
-        qdpn_log_errno(driver, "setsockopt");
+    if (tcp) {
+        int tcp_nodelay = 1;
+        if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (void*) &tcp_nodelay, 
sizeof(tcp_nodelay)) < 0)
+            qdpn_log_errno(driver, "setsockopt");
+    }
 }
 
 
@@ -401,7 +403,7 @@ qdpn_connector_t *qdpn_listener_accept(qdpn_listener_t *l,
             close(sock);
             return 0;
         } else {
-            qdpn_configure_sock(l->driver, sock);
+            qdpn_configure_sock(l->driver, sock, true);
             snprintf(name, PN_NAME_MAX-1, "%s:%s", host, serv);
         }
     }
@@ -496,7 +498,7 @@ qdpn_connector_t *qdpn_connector(qdpn_driver_t *driver,
         return 0;
     }
 
-    qdpn_configure_sock(driver, sock);
+    qdpn_configure_sock(driver, sock, true);
 
     if (connect(sock, addr->ai_addr, addr->ai_addrlen) == -1) {
         if (errno != EINPROGRESS) {
@@ -847,6 +849,9 @@ qdpn_driver_t *qdpn_driver()
         perror("Can't create control pipe");
     }
 
+    qdpn_configure_sock(d, d->ctrl[0], false);
+    qdpn_configure_sock(d, d->ctrl[1], false);
+
     return d;
 }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to