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]
