diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c
index 8274775..226dc1e 100644
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -49,7 +49,6 @@
                         - ls->addr_text.data;
 
     ls->fd = (ngx_socket_t) -1;
-    ls->family = AF_INET;
     ls->type = SOCK_STREAM;
     ls->sockaddr = (struct sockaddr *) sin;
     ls->socklen = sizeof(struct sockaddr_in);
@@ -113,9 +112,8 @@
             return NGX_ERROR;
         }
 
-        ls[i].family = sin->sin_family;
-        len = ngx_sock_ntop(ls[i].family, ls[i].sockaddr,
-                            ls[i].addr_text.data, NGX_INET_ADDRSTRLEN);
+        len = ngx_sock_ntop(ls[i].sockaddr, ls[i].addr_text.data,
+                            NGX_INET_ADDRSTRLEN);
         if (len == 0) {
             return NGX_ERROR;
         }
@@ -255,7 +253,7 @@
                 continue;
             }
 
-            s = ngx_socket(ls[i].family, ls[i].type, 0);
+            s = ngx_socket(ls[i].sockaddr->sa_family, ls[i].type, 0);
 
             if (s == -1) {
                 ngx_log_error(NGX_LOG_EMERG, log, ngx_socket_errno,
diff --git a/src/core/ngx_connection.h b/src/core/ngx_connection.h
index a2ae690..573fb3c 100644
--- a/src/core/ngx_connection.h
+++ b/src/core/ngx_connection.h
@@ -23,7 +23,6 @@
     size_t              addr_text_max_len;
     ngx_str_t           addr_text;
 
-    int                 family;
     int                 type;
 
     int                 backlog;
diff --git a/src/core/ngx_inet.c b/src/core/ngx_inet.c
index dc0a550..a22b2cc 100644
--- a/src/core/ngx_inet.c
+++ b/src/core/ngx_inet.c
@@ -56,12 +56,12 @@
 /* AF_INET only */
 
 size_t
-ngx_sock_ntop(int family, struct sockaddr *sa, u_char *text, size_t len)
+ngx_sock_ntop(struct sockaddr *sa, u_char *text, size_t len)
 {
     u_char              *p;
     struct sockaddr_in  *sin;
 
-    if (family == AF_INET) {
+    if (sa->sa_family == AF_INET) {
 
         sin = (struct sockaddr_in *) sa;
         p = (u_char *) &sin->sin_addr;
@@ -457,7 +457,7 @@
                 return NGX_ERROR;
             }
 
-            len = ngx_sock_ntop(AF_INET, (struct sockaddr *) sin, p, len);
+            len = ngx_sock_ntop((struct sockaddr *) sin, p, len);
 
             u->addrs[i].name.len = ngx_sprintf(&p[len], ":%d", u->port) - p;
             u->addrs[i].name.data = p;
diff --git a/src/core/ngx_inet.h b/src/core/ngx_inet.h
index 95ba30b..cbff8fd 100644
--- a/src/core/ngx_inet.h
+++ b/src/core/ngx_inet.h
@@ -63,7 +63,7 @@
 
 
 in_addr_t ngx_inet_addr(u_char *text, size_t len);
-size_t ngx_sock_ntop(int family, struct sockaddr *sa, u_char *text, size_t len);
+size_t ngx_sock_ntop(struct sockaddr *sa, u_char *text, size_t len);
 size_t ngx_inet_ntop(int family, void *addr, u_char *text, size_t len);
 ngx_int_t ngx_ptocidr(ngx_str_t *text, void *cidr);
 ngx_int_t ngx_parse_url(ngx_pool_t *pool, ngx_url_t *u);
diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c
index e48da2a..39b6515 100644
--- a/src/event/ngx_event_accept.c
+++ b/src/event/ngx_event_accept.c
@@ -207,8 +207,7 @@
                 return;
             }
 
-            c->addr_text.len = ngx_sock_ntop(ls->family, c->sockaddr,
-                                             c->addr_text.data,
+            c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data,
                                              ls->addr_text_max_len);
             if (c->addr_text.len == 0) {
                 ngx_close_accepted_connection(c);
diff --git a/src/event/ngx_event_acceptex.c b/src/event/ngx_event_acceptex.c
index d2752aa..7b14839 100644
--- a/src/event/ngx_event_acceptex.c
+++ b/src/event/ngx_event_acceptex.c
@@ -65,8 +65,7 @@
             return;
         }
 
-        c->addr_text.len = ngx_sock_ntop(c->listening->family, c->sockaddr,
-                                         c->addr_text.data,
+        c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data,
                                          c->listening->addr_text_max_len);
         if (c->addr_text.len == 0) {
             /* TODO: close socket */
@@ -100,7 +99,7 @@
 
         /* TODO: look up reused sockets */
 
-        s = ngx_socket(ls->family, ls->type, 0);
+        s = ngx_socket(ls->sockaddr->sa_family, ls->type, 0);
 
         ngx_log_debug1(NGX_LOG_DEBUG_EVENT, &ls->log, 0,
                        ngx_socket_n " s:%d", s);
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 30b2c0c..754a788 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -1625,8 +1625,8 @@
         return NGX_OK;
     }
 
-    s->len = ngx_inet_ntop(c->listening->family, &r->in_addr,
-                           s->data, NGX_INET_ADDRSTRLEN);
+    s->len = ngx_sock_ntop((struct sockaddr *) &sin, s->data,
+                           NGX_INET_ADDRSTRLEN);
 
     return NGX_OK;
 }
