comparison src/http/ngx_http.c @ 6593:b3b7e33083ac

Introduced ngx_inet_get_port() and ngx_inet_set_port() functions.
author Roman Arutyunyan <arut@nginx.com>
date Mon, 20 Jun 2016 11:50:39 +0300
parents c90cf79d0e1d
children cebf5fed00bf
comparison
equal deleted inserted replaced
6592:2c7b488a61fb 6593:b3b7e33083ac
1142 ngx_http_listen_opt_t *lsopt) 1142 ngx_http_listen_opt_t *lsopt)
1143 { 1143 {
1144 in_port_t p; 1144 in_port_t p;
1145 ngx_uint_t i; 1145 ngx_uint_t i;
1146 struct sockaddr *sa; 1146 struct sockaddr *sa;
1147 struct sockaddr_in *sin;
1148 ngx_http_conf_port_t *port; 1147 ngx_http_conf_port_t *port;
1149 ngx_http_core_main_conf_t *cmcf; 1148 ngx_http_core_main_conf_t *cmcf;
1150 #if (NGX_HAVE_INET6)
1151 struct sockaddr_in6 *sin6;
1152 #endif
1153 1149
1154 cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module); 1150 cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module);
1155 1151
1156 if (cmcf->ports == NULL) { 1152 if (cmcf->ports == NULL) {
1157 cmcf->ports = ngx_array_create(cf->temp_pool, 2, 1153 cmcf->ports = ngx_array_create(cf->temp_pool, 2,
1160 return NGX_ERROR; 1156 return NGX_ERROR;
1161 } 1157 }
1162 } 1158 }
1163 1159
1164 sa = &lsopt->sockaddr.sockaddr; 1160 sa = &lsopt->sockaddr.sockaddr;
1165 1161 p = ngx_inet_get_port(sa);
1166 switch (sa->sa_family) {
1167
1168 #if (NGX_HAVE_INET6)
1169 case AF_INET6:
1170 sin6 = &lsopt->sockaddr.sockaddr_in6;
1171 p = sin6->sin6_port;
1172 break;
1173 #endif
1174
1175 #if (NGX_HAVE_UNIX_DOMAIN)
1176 case AF_UNIX:
1177 p = 0;
1178 break;
1179 #endif
1180
1181 default: /* AF_INET */
1182 sin = &lsopt->sockaddr.sockaddr_in;
1183 p = sin->sin_port;
1184 break;
1185 }
1186 1162
1187 port = cmcf->ports->elts; 1163 port = cmcf->ports->elts;
1188 for (i = 0; i < cmcf->ports->nelts; i++) { 1164 for (i = 0; i < cmcf->ports->nelts; i++) {
1189 1165
1190 if (p != port[i].port || sa->sa_family != port[i].family) { 1166 if (p != port[i].port || sa->sa_family != port[i].family) {