summaryrefslogtreecommitdiff
path: root/network_io/os2/sockets.c
diff options
context:
space:
mode:
Diffstat (limited to 'network_io/os2/sockets.c')
-rw-r--r--network_io/os2/sockets.c33
1 files changed, 4 insertions, 29 deletions
diff --git a/network_io/os2/sockets.c b/network_io/os2/sockets.c
index aab2d2edc..96eb1cef0 100644
--- a/network_io/os2/sockets.c
+++ b/network_io/os2/sockets.c
@@ -87,35 +87,8 @@ static apr_status_t socket_cleanup(void *sock)
static void set_socket_vars(apr_socket_t *sock, int family, int type)
{
sock->type = type;
- sock->local_addr->family = family;
- sock->local_addr->sa.sin.sin_family = family;
- sock->remote_addr->family = family;
- sock->remote_addr->sa.sin.sin_family = family;
-
- if (family == AF_INET) {
- sock->local_addr->salen = sizeof(struct sockaddr_in);
- sock->local_addr->addr_str_len = 16;
- sock->local_addr->ipaddr_ptr = &(sock->local_addr->sa.sin.sin_addr);
- sock->local_addr->ipaddr_len = sizeof(struct in_addr);
-
- sock->remote_addr->salen = sizeof(struct sockaddr_in);
- sock->remote_addr->addr_str_len = 16;
- sock->remote_addr->ipaddr_ptr = &(sock->remote_addr->sa.sin.sin_addr);
- sock->remote_addr->ipaddr_len = sizeof(struct in_addr);
- }
-#if APR_HAVE_IPV6
- else if (family == AF_INET6) {
- sock->local_addr->salen = sizeof(struct sockaddr_in6);
- sock->local_addr->addr_str_len = 46;
- sock->local_addr->ipaddr_ptr = &(sock->local_addr->sa.sin6.sin6_addr);
- sock->local_addr->ipaddr_len = sizeof(struct in6_addr);
-
- sock->remote_addr->salen = sizeof(struct sockaddr_in6);
- sock->remote_addr->addr_str_len = 46;
- sock->remote_addr->ipaddr_ptr = &(sock->remote_addr->sa.sin6.sin6_addr);
- sock->remote_addr->ipaddr_len = sizeof(struct in6_addr);
- }
-#endif
+ apr_sockaddr_vars_set(sock->local_addr, family, 0);
+ apr_sockaddr_vars_set(sock->remote_addr, family, 0);
}
static void alloc_socket(apr_socket_t **new, apr_pool_t *p)
@@ -223,6 +196,8 @@ 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)->remote_addr->port = ntohs((*new)->remote_addr->sa.sin.sin_port);
apr_pool_cleanup_register((*new)->cntxt, (void *)(*new),
socket_cleanup, apr_pool_cleanup_null);