aboutsummaryrefslogtreecommitdiff
path: root/src/core/ngx_connection.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2009-05-05 17:33:26 +0000
committerIgor Sysoev <igor@sysoev.ru>2009-05-05 17:33:26 +0000
commitee4be0345fc2a62fcc0544ebed52523fdf2ffe40 (patch)
treeb9f15294e0feb62cde68fff0b784c632832a99a3 /src/core/ngx_connection.c
parent25870d8ea2c5b20de974c88ff2cc30bcd7d401bd (diff)
downloadnginx-ee4be0345fc2a62fcc0544ebed52523fdf2ffe40.tar.gz
nginx-ee4be0345fc2a62fcc0544ebed52523fdf2ffe40.zip
ngx_create_listening()
Diffstat (limited to 'src/core/ngx_connection.c')
-rw-r--r--src/core/ngx_connection.c58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c
index 5dd1b7e23..a743dbbed 100644
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -12,6 +12,64 @@
ngx_os_io_t ngx_io;
+ngx_listening_t *
+ngx_create_listening(ngx_conf_t *cf, void *sockaddr, socklen_t socklen)
+{
+ ngx_listening_t *ls;
+ struct sockaddr *sa;
+ u_char text[NGX_SOCKADDR_STRLEN];
+
+ ls = ngx_array_push(&cf->cycle->listening);
+ if (ls == NULL) {
+ return NULL;
+ }
+
+ ngx_memzero(ls, sizeof(ngx_listening_t));
+
+ sa = ngx_palloc(cf->pool, socklen);
+ if (sa == NULL) {
+ return NULL;
+ }
+
+ ngx_memcpy(sa, sockaddr, socklen);
+
+ ls->sockaddr = sa;
+ ls->socklen = socklen;
+
+ ls->addr_text.len = ngx_sock_ntop(sa, text, NGX_SOCKADDR_STRLEN, 1);
+
+ ls->addr_text.data = ngx_pnalloc(cf->pool, ls->addr_text.len);
+ if (ls->addr_text.data == NULL) {
+ return NULL;
+ }
+
+ ngx_memcpy(ls->addr_text.data, text, ls->addr_text.len);
+
+ ls->fd = (ngx_socket_t) -1;
+ ls->type = SOCK_STREAM;
+
+ switch (ls->sockaddr->sa_family) {
+#if (NGX_HAVE_INET6)
+ case AF_INET6:
+ ls->addr_text_max_len = NGX_INET6_ADDRSTRLEN;
+ break;
+#endif
+ case AF_INET:
+ ls->addr_text_max_len = NGX_INET_ADDRSTRLEN;
+ break;
+ default:
+ ls->addr_text_max_len = NGX_SOCKADDR_STRLEN;
+ break;
+ }
+
+ ls->backlog = NGX_LISTEN_BACKLOG;
+ ls->rcvbuf = -1;
+ ls->sndbuf = -1;
+
+ return ls;
+}
+
+
ngx_int_t
ngx_set_inherited_sockets(ngx_cycle_t *cycle)
{