comparison src/http/modules/ngx_http_access_handler.c @ 10:46833bd150cb NGINX_0_1_5

nginx 0.1.5 *) Bugfix: on Solaris and Linux there may be too many "recvmsg() returned not enough data" alerts. *) Bugfix: there were the "writev() failed (22: Invalid argument)" errors on Solaris in proxy mode without sendfile. On other platforms that do not support sendfile at all the process got caught in an endless loop. *) Bugfix: segmentation fault on Solaris in proxy mode and using sendfile. *) Bugfix: segmentation fault on Solaris. *) Bugfix: on-line upgrade did not work on Linux. *) Bugfix: the ngx_http_autoindex_module module did not escape the spaces, the quotes, and the percent signs in the directory listing. *) Change: the decrease of the copy operations. *) Feature: the userid_p3p directive.
author Igor Sysoev <http://sysoev.ru>
date Thu, 11 Nov 2004 00:00:00 +0300
parents f0b350454894
children 7ca9bdc82b3f
comparison
equal deleted inserted replaced
9:77eee314ddbd 10:46833bd150cb
95 addr_in = (struct sockaddr_in *) r->connection->sockaddr; 95 addr_in = (struct sockaddr_in *) r->connection->sockaddr;
96 96
97 rule = alcf->rules->elts; 97 rule = alcf->rules->elts;
98 for (i = 0; i < alcf->rules->nelts; i++) { 98 for (i = 0; i < alcf->rules->nelts; i++) {
99 99
100 ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "%08X %08X %08X", 100 ngx_log_debug3(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
101 addr_in->sin_addr.s_addr, rule[i].mask, rule[i].addr); 101 "%08XD %08XD %08XD",
102 addr_in->sin_addr.s_addr, rule[i].mask, rule[i].addr);
102 103
103 if ((addr_in->sin_addr.s_addr & rule[i].mask) == rule[i].addr) { 104 if ((addr_in->sin_addr.s_addr & rule[i].mask) == rule[i].addr) {
104 if (rule[i].deny) { 105 if (rule[i].deny) {
105 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, 106 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
106 "access forbidden by rule"); 107 "access forbidden by rule");
155 156
156 return NGX_CONF_OK; 157 return NGX_CONF_OK;
157 } 158 }
158 159
159 if (ngx_ptocidr(&value[1], &in_cidr) == NGX_ERROR) { 160 if (ngx_ptocidr(&value[1], &in_cidr) == NGX_ERROR) {
160 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "invalid paramter \"%s\"", 161 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "invalid paramter \"%V\"",
161 value[1].data); 162 &value[1]);
162 return NGX_CONF_ERROR; 163 return NGX_CONF_ERROR;
163 } 164 }
164 165
165 rule->mask = in_cidr.mask; 166 rule->mask = in_cidr.mask;
166 rule->addr = in_cidr.addr; 167 rule->addr = in_cidr.addr;