Mercurial > hg > nginx-vendor-current
comparison src/event/ngx_event_timer.c @ 670:ad45b044f1e5 NGINX_1_1_19
nginx 1.1.19
*) Security: specially crafted mp4 file might allow to overwrite memory
locations in a worker process if the ngx_http_mp4_module was used,
potentially resulting in arbitrary code execution (CVE-2012-2089).
Thanks to Matthew Daley.
*) Bugfix: nginx/Windows might be terminated abnormally.
Thanks to Vincent Lee.
*) Bugfix: nginx hogged CPU if all servers in an upstream were marked as
"backup".
*) Bugfix: the "allow" and "deny" directives might be inherited
incorrectly if they were used with IPv6 addresses.
*) Bugfix: the "modern_browser" and "ancient_browser" directives might
be inherited incorrectly.
*) Bugfix: timeouts might be handled incorrectly on Solaris/SPARC.
*) Bugfix: in the ngx_http_mp4_module.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Thu, 12 Apr 2012 00:00:00 +0400 |
parents | d0f7a625f27c |
children |
comparison
equal
deleted
inserted
replaced
669:3f5d0be5ee74 | 670:ad45b044f1e5 |
---|---|
65 | 65 |
66 node = ngx_rbtree_min(root, sentinel); | 66 node = ngx_rbtree_min(root, sentinel); |
67 | 67 |
68 ngx_mutex_unlock(ngx_event_timer_mutex); | 68 ngx_mutex_unlock(ngx_event_timer_mutex); |
69 | 69 |
70 timer = (ngx_msec_int_t) node->key - (ngx_msec_int_t) ngx_current_msec; | 70 timer = (ngx_msec_int_t) (node->key - ngx_current_msec); |
71 | 71 |
72 return (ngx_msec_t) (timer > 0 ? timer : 0); | 72 return (ngx_msec_t) (timer > 0 ? timer : 0); |
73 } | 73 } |
74 | 74 |
75 | 75 |
93 | 93 |
94 node = ngx_rbtree_min(root, sentinel); | 94 node = ngx_rbtree_min(root, sentinel); |
95 | 95 |
96 /* node->key <= ngx_current_time */ | 96 /* node->key <= ngx_current_time */ |
97 | 97 |
98 if ((ngx_msec_int_t) node->key - (ngx_msec_int_t) ngx_current_msec <= 0) | 98 if ((ngx_msec_int_t) (node->key - ngx_current_msec) <= 0) { |
99 { | |
100 ev = (ngx_event_t *) ((char *) node - offsetof(ngx_event_t, timer)); | 99 ev = (ngx_event_t *) ((char *) node - offsetof(ngx_event_t, timer)); |
101 | 100 |
102 #if (NGX_THREADS) | 101 #if (NGX_THREADS) |
103 | 102 |
104 if (ngx_threaded && ngx_trylock(ev->lock) == 0) { | 103 if (ngx_threaded && ngx_trylock(ev->lock) == 0) { |