summaryrefslogtreecommitdiff
path: root/network_io/os2
diff options
context:
space:
mode:
authorWilliam A. Rowe Jr <wrowe@apache.org>2006-11-28 21:24:40 +0000
committerWilliam A. Rowe Jr <wrowe@apache.org>2006-11-28 21:24:40 +0000
commit11228c897da35fa25e41e80eac7f78f007097c73 (patch)
tree5312e5cbf61e5369b7269a5ef1a6fe1f22c3ea9e /network_io/os2
parent538913e8f6c6442708de930dfdace4526bdb1dbf (diff)
downloadapr-11228c897da35fa25e41e80eac7f78f007097c73.tar.gz
Sync Win32/OS2 unknown remote_addr and local_port flags to unix src.
Reviewed by wrowe and jorton git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@480212 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'network_io/os2')
-rw-r--r--network_io/os2/sockets.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/network_io/os2/sockets.c b/network_io/os2/sockets.c
index aa112a600..bb951e4c8 100644
--- a/network_io/os2/sockets.c
+++ b/network_io/os2/sockets.c
@@ -62,9 +62,11 @@ static void alloc_socket(apr_socket_t **new, apr_pool_t *p)
(*new)->local_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool,
sizeof(apr_sockaddr_t));
(*new)->local_addr->pool = p;
+
(*new)->remote_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool,
sizeof(apr_sockaddr_t));
(*new)->remote_addr->pool = p;
+ (*new)->remote_addr_unknown = 1;
/* Create a pollset with room for one descriptor. */
/* ### check return codes */
@@ -140,6 +142,10 @@ APR_DECLARE(apr_status_t) apr_socket_bind(apr_socket_t *sock,
return APR_OS2_STATUS(sock_errno());
else {
sock->local_addr = sa;
+ /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */
+ if (sock->local_addr->sa.sin.sin_port == 0) { /* no need for ntohs() when comparing w/ 0 */
+ sock->local_port_unknown = 1; /* kernel got us an ephemeral port */
+ }
return APR_SUCCESS;
}
}