diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/core.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/server/core.c b/server/core.c index 6c4bccf3b2..1acabdfbc2 100644 --- a/server/core.c +++ b/server/core.c @@ -5086,10 +5086,10 @@ static conn_rec *core_create_conn(apr_pool_t *ptrans, server_rec *server, /* Got a connection structure, so initialize what fields we can * (the rest are zeroed out by pcalloc). */ + c->pool = ptrans; c->conn_config = ap_create_conn_config(ptrans); c->notes = apr_table_make(ptrans, 5); - c->pool = ptrans; if ((rv = apr_socket_addr_get(&c->local_addr, APR_LOCAL, csd)) != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_INFO, rv, server, APLOGNO(00137) @@ -5097,8 +5097,17 @@ static conn_rec *core_create_conn(apr_pool_t *ptrans, server_rec *server, apr_socket_close(csd); return NULL; } + if (apr_sockaddr_ip_get(&c->local_ip, c->local_addr)) { +#if APR_HAVE_SOCKADDR_UN + if (c->local_addr->family == APR_UNIX) { + c->local_ip = apr_pstrndup(c->pool, c->local_addr->ipaddr_ptr, + c->local_addr->ipaddr_len); + } + else +#endif + c->local_ip = apr_pstrdup(c->pool, "unknown"); + } - apr_sockaddr_ip_get(&c->local_ip, c->local_addr); if ((rv = apr_socket_addr_get(&c->client_addr, APR_REMOTE, csd)) != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_INFO, rv, server, APLOGNO(00138) @@ -5106,8 +5115,17 @@ static conn_rec *core_create_conn(apr_pool_t *ptrans, server_rec *server, apr_socket_close(csd); return NULL; } + if (apr_sockaddr_ip_get(&c->client_ip, c->client_addr)) { +#if APR_HAVE_SOCKADDR_UN + if (c->client_addr->family == APR_UNIX) { + c->client_ip = apr_pstrndup(c->pool, c->client_addr->ipaddr_ptr, + c->client_addr->ipaddr_len); + } + else +#endif + c->client_ip = apr_pstrdup(c->pool, "unknown"); + } - apr_sockaddr_ip_get(&c->client_ip, c->client_addr); c->base_server = server; c->id = id; |