comparison src/core/ngx_connection.c @ 2806:a445bd4eb571

ngx_create_listening()
author Igor Sysoev <igor@sysoev.ru>
date Tue, 05 May 2009 17:33:26 +0000
parents 60758ab4e5f4
children d788477f5a67
comparison
equal deleted inserted replaced
2805:60551422e150 2806:a445bd4eb571
8 #include <ngx_core.h> 8 #include <ngx_core.h>
9 #include <ngx_event.h> 9 #include <ngx_event.h>
10 10
11 11
12 ngx_os_io_t ngx_io; 12 ngx_os_io_t ngx_io;
13
14
15 ngx_listening_t *
16 ngx_create_listening(ngx_conf_t *cf, void *sockaddr, socklen_t socklen)
17 {
18 ngx_listening_t *ls;
19 struct sockaddr *sa;
20 u_char text[NGX_SOCKADDR_STRLEN];
21
22 ls = ngx_array_push(&cf->cycle->listening);
23 if (ls == NULL) {
24 return NULL;
25 }
26
27 ngx_memzero(ls, sizeof(ngx_listening_t));
28
29 sa = ngx_palloc(cf->pool, socklen);
30 if (sa == NULL) {
31 return NULL;
32 }
33
34 ngx_memcpy(sa, sockaddr, socklen);
35
36 ls->sockaddr = sa;
37 ls->socklen = socklen;
38
39 ls->addr_text.len = ngx_sock_ntop(sa, text, NGX_SOCKADDR_STRLEN, 1);
40
41 ls->addr_text.data = ngx_pnalloc(cf->pool, ls->addr_text.len);
42 if (ls->addr_text.data == NULL) {
43 return NULL;
44 }
45
46 ngx_memcpy(ls->addr_text.data, text, ls->addr_text.len);
47
48 ls->fd = (ngx_socket_t) -1;
49 ls->type = SOCK_STREAM;
50
51 switch (ls->sockaddr->sa_family) {
52 #if (NGX_HAVE_INET6)
53 case AF_INET6:
54 ls->addr_text_max_len = NGX_INET6_ADDRSTRLEN;
55 break;
56 #endif
57 case AF_INET:
58 ls->addr_text_max_len = NGX_INET_ADDRSTRLEN;
59 break;
60 default:
61 ls->addr_text_max_len = NGX_SOCKADDR_STRLEN;
62 break;
63 }
64
65 ls->backlog = NGX_LISTEN_BACKLOG;
66 ls->rcvbuf = -1;
67 ls->sndbuf = -1;
68
69 return ls;
70 }
13 71
14 72
15 ngx_int_t 73 ngx_int_t
16 ngx_set_inherited_sockets(ngx_cycle_t *cycle) 74 ngx_set_inherited_sockets(ngx_cycle_t *cycle)
17 { 75 {