Mercurial > hg > nginx-vendor-0-5
view src/event/ngx_event_posted.h @ 332:2eea67ed0bc2 NGINX_0_5_36
nginx 0.5.36
*) Bugfix: the "sub_filter" directive might set text to change into
output.
*) Bugfix: a segmentation fault occurred in worker process, if empty
stub block was used second time in SSI.
*) Bugfix: the "proxy_store" and "fastcgi_store" directives did not
check a response length.
*) Bugfix: nginx issued the bogus error message "SSL_shutdown() failed
(SSL: )"; bug appeared in 0.5.35.
*) Bugfix: in HTTPS mode requests might fail with the "bad write retry"
error; bug appeared in 0.5.35.
*) Bugfix: the "fastcgi_catch_stderr" directive did return error code;
now it returns 502 code, that can be rerouted to a next server using
the "fastcgi_next_upstream invalid_header" directive.
*) Bugfix: a segmentation fault occurred in master process if the
"fastcgi_catch_stderr" directive was used; bug appeared in
0.5.32.
Thanks to Manlio Perillo.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Sun, 04 May 2008 00:00:00 +0400 |
parents | 408f195b3482 |
children |
line wrap: on
line source
/* * Copyright (C) Igor Sysoev */ #ifndef _NGX_EVENT_POSTED_H_INCLUDED_ #define _NGX_EVENT_POSTED_H_INCLUDED_ #include <ngx_config.h> #include <ngx_core.h> #include <ngx_event.h> #if (NGX_THREADS) extern ngx_mutex_t *ngx_posted_events_mutex; #endif #define ngx_locked_post_event(ev, queue) \ \ if (ev->prev == NULL) { \ ev->next = (ngx_event_t *) *queue; \ ev->prev = (ngx_event_t **) queue; \ *queue = ev; \ \ if (ev->next) { \ ev->next->prev = &ev->next; \ } \ \ ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, "post event %p", ev); \ \ } else { \ ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, \ "update posted event %p", ev); \ } #define ngx_post_event(ev, queue) \ \ ngx_mutex_lock(ngx_posted_events_mutex); \ ngx_locked_post_event(ev, queue); \ ngx_mutex_unlock(ngx_posted_events_mutex); #define ngx_delete_posted_event(ev) \ \ *(ev->prev) = ev->next; \ \ if (ev->next) { \ ev->next->prev = ev->prev; \ } \ \ ev->prev = NULL; \ ngx_log_debug1(NGX_LOG_DEBUG_CORE, ev->log, 0, \ "delete posted event %p", ev); void ngx_event_process_posted(ngx_cycle_t *cycle, ngx_thread_volatile ngx_event_t **posted); void ngx_wakeup_worker_thread(ngx_cycle_t *cycle); #if (NGX_THREADS) ngx_int_t ngx_event_thread_process_posted(ngx_cycle_t *cycle); #endif extern ngx_thread_volatile ngx_event_t *ngx_posted_accept_events; extern ngx_thread_volatile ngx_event_t *ngx_posted_events; #endif /* _NGX_EVENT_POSTED_H_INCLUDED_ */