Mercurial > hg > nginx
comparison src/http/ngx_http.c @ 2806:a445bd4eb571
ngx_create_listening()
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 05 May 2009 17:33:26 +0000 |
parents | d478379e51ac |
children | d791586bb149 |
comparison
equal
deleted
inserted
replaced
2805:60551422e150 | 2806:a445bd4eb571 |
---|---|
1686 | 1686 |
1687 static ngx_listening_t * | 1687 static ngx_listening_t * |
1688 ngx_http_add_listening(ngx_conf_t *cf, ngx_http_conf_addr_t *addr) | 1688 ngx_http_add_listening(ngx_conf_t *cf, ngx_http_conf_addr_t *addr) |
1689 { | 1689 { |
1690 ngx_listening_t *ls; | 1690 ngx_listening_t *ls; |
1691 struct sockaddr *sa; | |
1692 ngx_http_core_loc_conf_t *clcf; | 1691 ngx_http_core_loc_conf_t *clcf; |
1693 ngx_http_core_srv_conf_t *cscf; | 1692 ngx_http_core_srv_conf_t *cscf; |
1694 u_char text[NGX_SOCKADDR_STRLEN]; | 1693 |
1695 | 1694 ls = ngx_create_listening(cf, addr->sockaddr, addr->socklen); |
1696 ls = ngx_array_push(&cf->cycle->listening); | |
1697 if (ls == NULL) { | 1695 if (ls == NULL) { |
1698 return NULL; | 1696 return NULL; |
1699 } | |
1700 | |
1701 ngx_memzero(ls, sizeof(ngx_listening_t)); | |
1702 | |
1703 sa = ngx_palloc(cf->pool, addr->socklen); | |
1704 if (sa == NULL) { | |
1705 return NULL; | |
1706 } | |
1707 | |
1708 ngx_memcpy(sa, addr->sockaddr, addr->socklen); | |
1709 | |
1710 ls->sockaddr = sa; | |
1711 ls->socklen = addr->socklen; | |
1712 | |
1713 ls->addr_text.len = ngx_sock_ntop(sa, text, NGX_SOCKADDR_STRLEN, 1); | |
1714 | |
1715 ls->addr_text.data = ngx_pnalloc(cf->pool, ls->addr_text.len); | |
1716 if (ls->addr_text.data == NULL) { | |
1717 return NULL; | |
1718 } | |
1719 | |
1720 ngx_memcpy(ls->addr_text.data, text, ls->addr_text.len); | |
1721 | |
1722 ls->fd = (ngx_socket_t) -1; | |
1723 ls->type = SOCK_STREAM; | |
1724 | |
1725 switch (ls->sockaddr->sa_family) { | |
1726 #if (NGX_HAVE_INET6) | |
1727 case AF_INET6: | |
1728 ls->addr_text_max_len = NGX_INET6_ADDRSTRLEN; | |
1729 break; | |
1730 #endif | |
1731 case AF_INET: | |
1732 ls->addr_text_max_len = NGX_INET_ADDRSTRLEN; | |
1733 break; | |
1734 default: | |
1735 ls->addr_text_max_len = NGX_SOCKADDR_STRLEN; | |
1736 break; | |
1737 } | 1697 } |
1738 | 1698 |
1739 ls->addr_ntop = 1; | 1699 ls->addr_ntop = 1; |
1740 | 1700 |
1741 ls->handler = ngx_http_init_connection; | 1701 ls->handler = ngx_http_init_connection; |