mirror of
https://github.com/nginx/nginx.git
synced 2025-02-25 18:55:26 -06:00
ngx_create_listening()
This commit is contained in:
parent
25870d8ea2
commit
ee4be0345f
@ -12,6 +12,64 @@
|
|||||||
ngx_os_io_t ngx_io;
|
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_int_t
|
||||||
ngx_set_inherited_sockets(ngx_cycle_t *cycle)
|
ngx_set_inherited_sockets(ngx_cycle_t *cycle)
|
||||||
{
|
{
|
||||||
|
@ -163,6 +163,8 @@ struct ngx_connection_s {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
ngx_listening_t *ngx_create_listening(ngx_conf_t *cf, void *sockaddr,
|
||||||
|
socklen_t socklen);
|
||||||
ngx_int_t ngx_set_inherited_sockets(ngx_cycle_t *cycle);
|
ngx_int_t ngx_set_inherited_sockets(ngx_cycle_t *cycle);
|
||||||
ngx_int_t ngx_open_listening_sockets(ngx_cycle_t *cycle);
|
ngx_int_t ngx_open_listening_sockets(ngx_cycle_t *cycle);
|
||||||
void ngx_configure_listening_sockets(ngx_cycle_t *cycle);
|
void ngx_configure_listening_sockets(ngx_cycle_t *cycle);
|
||||||
|
@ -1688,54 +1688,14 @@ static ngx_listening_t *
|
|||||||
ngx_http_add_listening(ngx_conf_t *cf, ngx_http_conf_addr_t *addr)
|
ngx_http_add_listening(ngx_conf_t *cf, ngx_http_conf_addr_t *addr)
|
||||||
{
|
{
|
||||||
ngx_listening_t *ls;
|
ngx_listening_t *ls;
|
||||||
struct sockaddr *sa;
|
|
||||||
ngx_http_core_loc_conf_t *clcf;
|
ngx_http_core_loc_conf_t *clcf;
|
||||||
ngx_http_core_srv_conf_t *cscf;
|
ngx_http_core_srv_conf_t *cscf;
|
||||||
u_char text[NGX_SOCKADDR_STRLEN];
|
|
||||||
|
|
||||||
ls = ngx_array_push(&cf->cycle->listening);
|
ls = ngx_create_listening(cf, addr->sockaddr, addr->socklen);
|
||||||
if (ls == NULL) {
|
if (ls == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ngx_memzero(ls, sizeof(ngx_listening_t));
|
|
||||||
|
|
||||||
sa = ngx_palloc(cf->pool, addr->socklen);
|
|
||||||
if (sa == NULL) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
ngx_memcpy(sa, addr->sockaddr, addr->socklen);
|
|
||||||
|
|
||||||
ls->sockaddr = sa;
|
|
||||||
ls->socklen = addr->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->addr_ntop = 1;
|
ls->addr_ntop = 1;
|
||||||
|
|
||||||
ls->handler = ngx_http_init_connection;
|
ls->handler = ngx_http_init_connection;
|
||||||
|
@ -72,15 +72,13 @@ ngx_mail_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
ngx_listening_t *ls;
|
ngx_listening_t *ls;
|
||||||
ngx_mail_listen_t *mls;
|
ngx_mail_listen_t *mls;
|
||||||
ngx_mail_module_t *module;
|
ngx_mail_module_t *module;
|
||||||
struct sockaddr *sa;
|
struct sockaddr_in sin;
|
||||||
struct sockaddr_in *sin;
|
|
||||||
ngx_mail_in_port_t *mip;
|
ngx_mail_in_port_t *mip;
|
||||||
ngx_mail_conf_ctx_t *ctx;
|
ngx_mail_conf_ctx_t *ctx;
|
||||||
ngx_mail_conf_in_port_t *in_port;
|
ngx_mail_conf_in_port_t *in_port;
|
||||||
ngx_mail_conf_in_addr_t *in_addr;
|
ngx_mail_conf_in_addr_t *in_addr;
|
||||||
ngx_mail_core_srv_conf_t **cscfp;
|
ngx_mail_core_srv_conf_t **cscfp;
|
||||||
ngx_mail_core_main_conf_t *cmcf;
|
ngx_mail_core_main_conf_t *cmcf;
|
||||||
u_char buf[NGX_SOCKADDR_STRLEN];
|
|
||||||
|
|
||||||
if (cmd->name.data[0] == 'i') {
|
if (cmd->name.data[0] == 'i') {
|
||||||
ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
ls = ngx_array_push(&cf->cycle->listening);
|
ngx_memzero(&sin, 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 = ngx_create_listening(cf, &sin, sizeof(struct sockaddr_in));
|
||||||
if (ls == NULL) {
|
if (ls == NULL) {
|
||||||
return 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;
|
|
||||||
|
|
||||||
ls->sockaddr = sa;
|
|
||||||
ls->socklen = sizeof(struct sockaddr_in);
|
|
||||||
|
|
||||||
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) {
|
|
||||||
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->addr_ntop = 1;
|
||||||
ls->handler = ngx_mail_init_connection;
|
ls->handler = ngx_mail_init_connection;
|
||||||
ls->pool_size = 256;
|
ls->pool_size = 256;
|
||||||
|
Loading…
Reference in New Issue
Block a user