diff options
author | wrowe <wrowe@13f79535-47bb-0310-9956-ffa450edef68> | 2006-11-28 21:24:40 +0000 |
---|---|---|
committer | wrowe <wrowe@13f79535-47bb-0310-9956-ffa450edef68> | 2006-11-28 21:24:40 +0000 |
commit | 65fef9cb9c62db6364c013c8bab8c59461ceecec (patch) | |
tree | 5312e5cbf61e5369b7269a5ef1a6fe1f22c3ea9e /network_io/os2 | |
parent | f0bf4e18df854bd42b4f3d020762df3e8890649d (diff) | |
download | libapr-65fef9cb9c62db6364c013c8bab8c59461ceecec.tar.gz |
Sync Win32/OS2 unknown remote_addr and local_port flags to unix src.
Reviewed by wrowe and jorton
git-svn-id: http://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; } } |