You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by rp...@apache.org on 2010/08/20 16:29:11 UTC

svn commit: r987524 - in /apr/apr/branches/1.5.x: ./ network_io/unix/sockets.c

Author: rpluem
Date: Fri Aug 20 14:29:10 2010
New Revision: 987524

URL: http://svn.apache.org/viewvc?rev=987524&view=rev
Log:
Merge r793193 from trunk:

Fix apr_socket_addr_get() in combination with async connects, for the APR_LOCAL
case.  Before it would return 0.0.0.0:0, instead of the actual local address/port.

TODO: Fix win32 in a similar fashion; though maybe it's better to assume the
  local address is unknown by default...

* network_io/unix/sockets.c
  (apr_socket_connect): Move address determination, or rather
   determining that the local address is unknown, to before returning
   because of e.g. EINPROGRESS.

Submitted by: striker
Reviewed by: rpluem

Modified:
    apr/apr/branches/1.5.x/   (props changed)
    apr/apr/branches/1.5.x/network_io/unix/sockets.c

Propchange: apr/apr/branches/1.5.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Aug 20 14:29:10 2010
@@ -1 +1 @@
-/apr/apr/trunk:733052,747990,748361,748371,748565,748888,748902,748988,749810,760443,782838,783398,783958,784633,784773,788588,793192,794118,794485,795267,799497,800627,809745,809854,810472,811455,813063,821306,829490,831641,835607,908427,910419,917819,917837-917838
+/apr/apr/trunk:733052,747990,748361,748371,748565,748888,748902,748988,749810,760443,782838,783398,783958,784633,784773,788588,793192-793193,794118,794485,795267,799497,800627,809745,809854,810472,811455,813063,821306,829490,831641,835607,908427,910419,917819,917837-917838

Modified: apr/apr/branches/1.5.x/network_io/unix/sockets.c
URL: http://svn.apache.org/viewvc/apr/apr/branches/1.5.x/network_io/unix/sockets.c?rev=987524&r1=987523&r2=987524&view=diff
==============================================================================
--- apr/apr/branches/1.5.x/network_io/unix/sockets.c (original)
+++ apr/apr/branches/1.5.x/network_io/unix/sockets.c Fri Aug 20 14:29:10 2010
@@ -338,9 +338,6 @@ apr_status_t apr_socket_connect(apr_sock
 #endif /* SO_ERROR */
     }
 
-    if (rc == -1 && errno != EISCONN) {
-        return errno;
-    }
 
     if (memcmp(sa->ipaddr_ptr, generic_inaddr_any, sa->ipaddr_len)) {
         /* A real remote address was passed in.  If the unspecified
@@ -364,6 +361,11 @@ apr_status_t apr_socket_connect(apr_sock
          */
         sock->local_interface_unknown = 1;
     }
+
+    if (rc == -1 && errno != EISCONN) {
+        return errno;
+    }
+
 #ifndef HAVE_POLL
     sock->connected=1;
 #endif