diff options
author | William A. Rowe Jr <wrowe@apache.org> | 2006-11-28 21:24:40 +0000 |
---|---|---|
committer | William A. Rowe Jr <wrowe@apache.org> | 2006-11-28 21:24:40 +0000 |
commit | 11228c897da35fa25e41e80eac7f78f007097c73 (patch) | |
tree | 5312e5cbf61e5369b7269a5ef1a6fe1f22c3ea9e /network_io/os2 | |
parent | 538913e8f6c6442708de930dfdace4526bdb1dbf (diff) | |
download | apr-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.c | 6 |
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; } } |