comparison src/core/ngx_shmtx.h @ 650:4d05413aebad NGINX_1_1_9

nginx 1.1.9 *) Change: now double quotes are encoded in an "echo" SSI-command output. Thanks to Zaur Abasmirzoev. *) Feature: the "valid" parameter of the "resolver" directive. By default TTL returned by a DNS server is used. Thanks to Kirill A. Korinskiy. *) Bugfix: nginx might hang after a worker process abnormal termination. *) Bugfix: a segmentation fault might occur in a worker process if SNI was used; the bug had appeared in 1.1.2. *) Bugfix: in the "keepalive_disable" directive; the bug had appeared in 1.1.8. Thanks to Alexander Usov. *) Bugfix: SIGWINCH signal did not work after first binary upgrade; the bug had appeared in 1.1.1. *) Bugfix: backend responses with length not matching "Content-Length" header line are no longer cached. *) Bugfix: in the "scgi_param" directive, if complex parameters were used. *) Bugfix: in the "epoll" event method. Thanks to Yichun Zhang. *) Bugfix: in the ngx_http_flv_module. Thanks to Piotr Sikora. *) Bugfix: in the ngx_http_mp4_module. *) Bugfix: IPv6 addresses are now handled properly in a request line and in a "Host" request header line. *) Bugfix: "add_header" and "expires" directives did not work if a request was proxied and response status code was 206. *) Bugfix: nginx could not be built on FreeBSD 10. *) Bugfix: nginx could not be built on AIX.
author Igor Sysoev <http://sysoev.ru>
date Mon, 28 Nov 2011 00:00:00 +0400
parents d4da38525468
children d0f7a625f27c
comparison
equal deleted inserted replaced
649:c5b99ec117cd 650:4d05413aebad
11 #include <ngx_config.h> 11 #include <ngx_config.h>
12 #include <ngx_core.h> 12 #include <ngx_core.h>
13 13
14 14
15 typedef struct { 15 typedef struct {
16 ngx_atomic_t lock;
17 #if (NGX_HAVE_POSIX_SEM)
18 ngx_atomic_t wait;
19 #endif
20 } ngx_shmtx_sh_t;
21
22
23 typedef struct {
16 #if (NGX_HAVE_ATOMIC_OPS) 24 #if (NGX_HAVE_ATOMIC_OPS)
17 ngx_atomic_t *lock; 25 ngx_atomic_t *lock;
18 #if (NGX_HAVE_POSIX_SEM) 26 #if (NGX_HAVE_POSIX_SEM)
27 ngx_atomic_t *wait;
19 ngx_uint_t semaphore; 28 ngx_uint_t semaphore;
20 sem_t sem; 29 sem_t sem;
21 #endif 30 #endif
22 #else 31 #else
23 ngx_fd_t fd; 32 ngx_fd_t fd;
25 #endif 34 #endif
26 ngx_uint_t spin; 35 ngx_uint_t spin;
27 } ngx_shmtx_t; 36 } ngx_shmtx_t;
28 37
29 38
30 ngx_int_t ngx_shmtx_create(ngx_shmtx_t *mtx, void *addr, u_char *name); 39 ngx_int_t ngx_shmtx_create(ngx_shmtx_t *mtx, ngx_shmtx_sh_t *addr,
40 u_char *name);
31 void ngx_shmtx_destory(ngx_shmtx_t *mtx); 41 void ngx_shmtx_destory(ngx_shmtx_t *mtx);
32 ngx_uint_t ngx_shmtx_trylock(ngx_shmtx_t *mtx); 42 ngx_uint_t ngx_shmtx_trylock(ngx_shmtx_t *mtx);
33 void ngx_shmtx_lock(ngx_shmtx_t *mtx); 43 void ngx_shmtx_lock(ngx_shmtx_t *mtx);
34 void ngx_shmtx_unlock(ngx_shmtx_t *mtx); 44 void ngx_shmtx_unlock(ngx_shmtx_t *mtx);
45 ngx_uint_t ngx_shmtx_force_unlock(ngx_shmtx_t *mtx, ngx_pid_t pid);
35 46
36 47
37 #endif /* _NGX_SHMTX_H_INCLUDED_ */ 48 #endif /* _NGX_SHMTX_H_INCLUDED_ */