You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2012/12/11 18:30:46 UTC
svn commit: r1420299 - /qpid/proton/trunk/proton-c/src/driver.c
Author: tross
Date: Tue Dec 11 17:30:45 2012
New Revision: 1420299
URL: http://svn.apache.org/viewvc?rev=1420299&view=rev
Log:
QPID-134 - Make socket-connect call non-blocking.
Modified:
qpid/proton/trunk/proton-c/src/driver.c
Modified: qpid/proton/trunk/proton-c/src/driver.c
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/proton-c/src/driver.c?rev=1420299&r1=1420298&r2=1420299&view=diff
==============================================================================
--- qpid/proton/trunk/proton-c/src/driver.c (original)
+++ qpid/proton/trunk/proton-c/src/driver.c Tue Dec 11 17:30:45 2012
@@ -354,13 +354,16 @@ pn_connector_t *pn_connector(pn_driver_t
return NULL;
}
+ pn_configure_sock(sock);
+
if (connect(sock, addr->ai_addr, addr->ai_addrlen) == -1) {
- pn_error_from_errno(driver->error, "connect");
- freeaddrinfo(addr);
- return NULL;
+ if (errno != EINPROGRESS) {
+ pn_error_from_errno(driver->error, "connect");
+ freeaddrinfo(addr);
+ return NULL;
+ }
}
- pn_configure_sock(sock);
freeaddrinfo(addr);
pn_connector_t *c = pn_connector_fd(driver, sock, context);
@@ -796,6 +799,8 @@ void pn_driver_wait_3(pn_driver_t *d)
c->pending_read = (idx && d->fds[idx].revents & POLLIN);
c->pending_write = (idx && d->fds[idx].revents & POLLOUT);
c->pending_tick = (c->wakeup && c->wakeup <= now);
+ if (idx && d->fds[idx].revents & POLLERR)
+ pn_connector_close(c);
}
c = c->connector_next;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org