Mercurial > hg > nginx-vendor-0-5
comparison src/core/ngx_shmtx.h @ 258:6ae1357b7b7c NGINX_0_4_14
nginx 0.4.14
*) Feature: the "proxy_pass_error_message" directive in IMAP/POP3 proxy.
*) Feature: now configure detects system PCRE library on FreeBSD,
Linux, and NetBSD.
*) Bugfix: ngx_http_perl_module did not work with perl built with the
threads support; bug appeared in 0.3.38.
*) Bugfix: ngx_http_perl_module did not work if perl was called
recursively.
*) Bugfix: nginx ignored a host name in an request line.
*) Bugfix: a worker process may got caught in an endless loop, if a
FastCGI server sent too many data to the stderr.
*) Bugfix: the $upstream_response_time variable may be negative if the
system time was changed backward.
*) Bugfix: the "Auth-Login-Attempt" parameter was not sent to IMAP/POP3
proxy authentication server when POP3 was used.
*) Bugfix: a segmentation fault might occur if connect to IMAP/POP3
proxy authentication server failed.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 27 Nov 2006 00:00:00 +0300 |
parents | 73e8476f9142 |
children | 052a7b1d40e5 |
comparison
equal
deleted
inserted
replaced
257:0e566ee1bcd5 | 258:6ae1357b7b7c |
---|---|
16 #if (NGX_HAVE_ATOMIC_OPS) | 16 #if (NGX_HAVE_ATOMIC_OPS) |
17 ngx_atomic_t *lock; | 17 ngx_atomic_t *lock; |
18 #else | 18 #else |
19 ngx_fd_t fd; | 19 ngx_fd_t fd; |
20 u_char *name; | 20 u_char *name; |
21 ngx_log_t *log; | |
22 #endif | 21 #endif |
23 } ngx_shmtx_t; | 22 } ngx_shmtx_t; |
24 | 23 |
25 | 24 |
26 ngx_int_t ngx_shmtx_create(ngx_shmtx_t *mtx, void *addr, u_char *name, | 25 ngx_int_t ngx_shmtx_create(ngx_shmtx_t *mtx, void *addr, u_char *name); |
27 ngx_log_t *log); | |
28 | 26 |
29 | 27 |
30 #if (NGX_HAVE_ATOMIC_OPS) | 28 #if (NGX_HAVE_ATOMIC_OPS) |
31 | 29 |
32 static ngx_inline ngx_uint_t | 30 static ngx_inline ngx_uint_t |
61 | 59 |
62 if (err == NGX_EAGAIN) { | 60 if (err == NGX_EAGAIN) { |
63 return 0; | 61 return 0; |
64 } | 62 } |
65 | 63 |
66 ngx_log_error(NGX_LOG_ALERT, mtx->log, err, ngx_trylock_fd_n " failed"); | 64 ngx_log_abort(err, ngx_trylock_fd_n " failed"); |
67 | |
68 ngx_abort(); | |
69 } | 65 } |
70 | 66 |
71 | 67 |
72 static ngx_inline void | 68 static ngx_inline void |
73 ngx_shmtx_lock(ngx_shmtx_t *mtx) | 69 ngx_shmtx_lock(ngx_shmtx_t *mtx) |
78 | 74 |
79 if (err == 0) { | 75 if (err == 0) { |
80 return; | 76 return; |
81 } | 77 } |
82 | 78 |
83 ngx_log_error(NGX_LOG_ALERT, mtx->log, err, ngx_lock_fd_n " failed"); | 79 ngx_log_abort(err, ngx_lock_fd_n " failed"); |
84 | |
85 ngx_abort(); | |
86 } | 80 } |
87 | 81 |
88 | 82 |
89 static ngx_inline void | 83 static ngx_inline void |
90 ngx_shmtx_unlock(ngx_shmtx_t *mtx) | 84 ngx_shmtx_unlock(ngx_shmtx_t *mtx) |
95 | 89 |
96 if (err == 0) { | 90 if (err == 0) { |
97 return; | 91 return; |
98 } | 92 } |
99 | 93 |
100 ngx_log_error(NGX_LOG_ALERT, mtx->log, err, ngx_unlock_fd_n " failed"); | 94 ngx_log_abort(err, ngx_unlock_fd_n " failed"); |
101 | |
102 ngx_abort(); | |
103 } | 95 } |
104 | 96 |
105 | 97 |
106 void ngx_shmtx_destory(ngx_shmtx_t *mtx); | 98 void ngx_shmtx_destory(ngx_shmtx_t *mtx); |
107 | 99 |