diff options
author | bjh <bjh@13f79535-47bb-0310-9956-ffa450edef68> | 2002-04-14 08:04:17 +0000 |
---|---|---|
committer | bjh <bjh@13f79535-47bb-0310-9956-ffa450edef68> | 2002-04-14 08:04:17 +0000 |
commit | ffcde1461f4158480b173de701c6ceede02f3d85 (patch) | |
tree | 0b1c4c4dc860e53695f26f831f134acc2bb6951d /network_io/os2 | |
parent | d064090daffd825bf5ba964901a7d0f28b7347fb (diff) | |
download | libapr-ffcde1461f4158480b173de701c6ceede02f3d85.tar.gz |
OS/2: Set up local_addr of accepted socket
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@63262 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'network_io/os2')
-rw-r--r-- | network_io/os2/sockets.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/network_io/os2/sockets.c b/network_io/os2/sockets.c index 96eb1cef0..676291c61 100644 --- a/network_io/os2/sockets.c +++ b/network_io/os2/sockets.c @@ -196,9 +196,16 @@ APR_DECLARE(apr_status_t) apr_accept(apr_socket_t **new, apr_socket_t *sock, apr if ((*new)->socketdes < 0) { return APR_OS2_STATUS(sock_errno()); } - /* XXX fix up any pointers which are no longer valid (or just call - * apr_sockaddr_vars_set() to do it */ + + *(*new)->local_addr = *sock->local_addr; + (*new)->local_addr->pool = connection_context; (*new)->remote_addr->port = ntohs((*new)->remote_addr->sa.sin.sin_port); + + /* fix up any pointers which are no longer valid */ + if (sock->local_addr->sa.sin.sin_family == AF_INET) { + (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin.sin_addr; + } + apr_pool_cleanup_register((*new)->cntxt, (void *)(*new), socket_cleanup, apr_pool_cleanup_null); return APR_SUCCESS; |