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