diff options
author | Igor Sysoev <igor@sysoev.ru> | 2009-05-05 17:33:26 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2009-05-05 17:33:26 +0000 |
commit | ee4be0345fc2a62fcc0544ebed52523fdf2ffe40 (patch) | |
tree | b9f15294e0feb62cde68fff0b784c632832a99a3 /src/mail/ngx_mail.c | |
parent | 25870d8ea2c5b20de974c88ff2cc30bcd7d401bd (diff) | |
download | nginx-ee4be0345fc2a62fcc0544ebed52523fdf2ffe40.tar.gz nginx-ee4be0345fc2a62fcc0544ebed52523fdf2ffe40.zip |
ngx_create_listening()
Diffstat (limited to 'src/mail/ngx_mail.c')
-rw-r--r-- | src/mail/ngx_mail.c | 56 |
1 files changed, 7 insertions, 49 deletions
diff --git a/src/mail/ngx_mail.c b/src/mail/ngx_mail.c index a06798958..3ed900d2f 100644 --- a/src/mail/ngx_mail.c +++ b/src/mail/ngx_mail.c @@ -72,15 +72,13 @@ ngx_mail_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) ngx_listening_t *ls; ngx_mail_listen_t *mls; ngx_mail_module_t *module; - struct sockaddr *sa; - struct sockaddr_in *sin; + struct sockaddr_in sin; ngx_mail_in_port_t *mip; ngx_mail_conf_ctx_t *ctx; ngx_mail_conf_in_port_t *in_port; ngx_mail_conf_in_addr_t *in_addr; ngx_mail_core_srv_conf_t **cscfp; ngx_mail_core_main_conf_t *cmcf; - u_char buf[NGX_SOCKADDR_STRLEN]; if (cmd->name.data[0] == 'i') { ngx_conf_log_error(NGX_LOG_WARN, cf, 0, @@ -302,57 +300,17 @@ ngx_mail_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) continue; } - ls = ngx_array_push(&cf->cycle->listening); - if (ls == NULL) { - return NULL; - } - - ngx_memzero(ls, sizeof(ngx_listening_t)); - - sin = ngx_pcalloc(cf->pool, sizeof(struct sockaddr_in)); - if (sin == NULL) { - return NULL; - } - - sin->sin_family = AF_INET; - sin->sin_addr.s_addr = in_addr[a].addr; - sin->sin_port = htons(in_port[p].port); - - sa = (struct sockaddr *) sin; + ngx_memzero(&sin, sizeof(struct sockaddr_in)); - ls->sockaddr = sa; - ls->socklen = sizeof(struct sockaddr_in); + sin.sin_family = AF_INET; + sin.sin_addr.s_addr = in_addr[a].addr; + sin.sin_port = htons(in_port[p].port); - ls->addr_text.len = ngx_sock_ntop(sa, buf, NGX_SOCKADDR_STRLEN, 1); - - ls->addr_text.data = ngx_pnalloc(cf->pool, ls->addr_text.len); - if (ls->addr_text.data == NULL) { + ls = ngx_create_listening(cf, &sin, sizeof(struct sockaddr_in)); + if (ls == NULL) { return NULL; } - ngx_memcpy(ls->addr_text.data, buf, 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; - ls->addr_ntop = 1; ls->handler = ngx_mail_init_connection; ls->pool_size = 256; |