summaryrefslogtreecommitdiff
path: root/network_io/os2
diff options
context:
space:
mode:
authorbjh <bjh@13f79535-47bb-0310-9956-ffa450edef68>2002-04-14 08:04:17 +0000
committerbjh <bjh@13f79535-47bb-0310-9956-ffa450edef68>2002-04-14 08:04:17 +0000
commitffcde1461f4158480b173de701c6ceede02f3d85 (patch)
tree0b1c4c4dc860e53695f26f831f134acc2bb6951d /network_io/os2
parentd064090daffd825bf5ba964901a7d0f28b7347fb (diff)
downloadlibapr-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.c11
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;