Mercurial > hg > nginx
comparison src/event/ngx_event_accept.c @ 581:326634fb9d47 release-0.3.12
nginx-0.3.12-RELEASE import
*) Security: if nginx was built with the ngx_http_realip_module and the
"satisfy_any on" directive was used, then access and authorization
directives did not work. The ngx_http_realip_module was not built
and is not built by default.
*) Change: the "$time_gmt" variable name was changed to "$time_local".
*) Change: the "proxy_header_buffer_size" and
"fastcgi_header_buffer_size" directives was renamed to the
"proxy_buffer_size" and "fastcgi_buffer_size" directives.
*) Feature: the ngx_http_memcached_module.
*) Feature: the "proxy_buffering" directive.
*) Bugfix: the changes in accept mutex handling when the "rtsig" method
was used; the bug had appeared in 0.3.0.
*) Bugfix: if the client sent the "Transfer-Encoding: chunked" header
line, then nginx returns the 411 error.
*) Bugfix: if the "auth_basic" directive was inherited from the http
level, then the realm in the "WWW-Authenticate" header line was
without the "Basic realm" text.
*) Bugfix: if the "combined" format was explicitly specified in the
"access_log" directive, then the empty lines was written to the log;
the bug had appeared in 0.3.8.
*) Bugfix: nginx did not run on the sparc platform under any OS except
Solaris.
*) Bugfix: now it is not necessary to place space between the quoted
string and closing bracket in the "if" directive.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sat, 26 Nov 2005 10:11:11 +0000 |
parents | 4d9ea73a627a |
children | 3f8a2132b93d |
comparison
equal
deleted
inserted
replaced
580:8393757dc220 | 581:326634fb9d47 |
---|---|
263 && ngx_atomic_cmp_set(ngx_accept_mutex, 0, ngx_pid)) | 263 && ngx_atomic_cmp_set(ngx_accept_mutex, 0, ngx_pid)) |
264 { | 264 { |
265 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, | 265 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, cycle->log, 0, |
266 "accept mutex locked"); | 266 "accept mutex locked"); |
267 | 267 |
268 if (ngx_accept_mutex_held | 268 if (ngx_accept_mutex_held && !(ngx_event_flags & NGX_USE_RTSIG_EVENT)) |
269 && (!(ngx_event_flags & NGX_USE_RTSIG_EVENT) | |
270 || *ngx_accept_mutex_last_owner == (ngx_atomic_t) ngx_pid)) | |
271 { | 269 { |
272 return NGX_OK; | 270 return NGX_OK; |
273 } | 271 } |
274 | 272 |
275 if (ngx_enable_accept_events(cycle) == NGX_ERROR) { | 273 if (ngx_enable_accept_events(cycle) == NGX_ERROR) { |
306 | 304 |
307 c = ls[i].connection; | 305 c = ls[i].connection; |
308 | 306 |
309 if (ngx_event_flags & NGX_USE_RTSIG_EVENT) { | 307 if (ngx_event_flags & NGX_USE_RTSIG_EVENT) { |
310 | 308 |
311 if (ngx_accept_mutex_held) { | |
312 c->read->disabled = 1; | |
313 } | |
314 | |
315 if (ngx_add_conn(c) == NGX_ERROR) { | 309 if (ngx_add_conn(c) == NGX_ERROR) { |
316 return NGX_ERROR; | 310 return NGX_ERROR; |
317 } | 311 } |
318 | |
319 *ngx_accept_mutex_last_owner = ngx_pid; | |
320 | 312 |
321 } else { | 313 } else { |
322 if (ngx_add_event(c->read, NGX_READ_EVENT, 0) == NGX_ERROR) { | 314 if (ngx_add_event(c->read, NGX_READ_EVENT, 0) == NGX_ERROR) { |
323 return NGX_ERROR; | 315 return NGX_ERROR; |
324 } | 316 } |