Mercurial > hg > nginx-quic
annotate src/event/ngx_event_busy_lock.h @ 5999:4d8936b1fc32
Upstream keepalive: drop ready flag on EAGAIN from recv(MSG_PEEK).
Keeping the ready flag in this case might results in missing notification of
broken connection until nginx tried to use it again.
While there, stale comment about stale event was removed since this function
is also can be called directly.
author | Valentin Bartenev <vbart@nginx.com> |
---|---|
date | Tue, 03 Mar 2015 17:48:57 +0300 |
parents | d620f497c50f |
children | 457ec43dd8d5 |
rev | line source |
---|---|
441
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
277
diff
changeset
|
1 |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
277
diff
changeset
|
2 /* |
444
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
441
diff
changeset
|
3 * Copyright (C) Igor Sysoev |
4412 | 4 * Copyright (C) Nginx, Inc. |
441
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
277
diff
changeset
|
5 */ |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
277
diff
changeset
|
6 |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
277
diff
changeset
|
7 |
276
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
8 #ifndef _NGX_EVENT_BUSY_LOCK_H_INCLUDED_ |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
9 #define _NGX_EVENT_BUSY_LOCK_H_INCLUDED_ |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
10 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
11 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
12 #include <ngx_config.h> |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
13 #include <ngx_core.h> |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
14 #include <ngx_event.h> |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
15 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
16 typedef struct ngx_event_busy_lock_ctx_s ngx_event_busy_lock_ctx_t; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
17 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
18 struct ngx_event_busy_lock_ctx_s { |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
19 ngx_event_t *event; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
20 ngx_event_handler_pt handler; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
21 void *data; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
22 ngx_msec_t timer; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
23 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
24 unsigned locked:1; |
277
e91499541410
nginx-0.0.2-2004-03-03-19:14:15 import
Igor Sysoev <igor@sysoev.ru>
parents:
276
diff
changeset
|
25 unsigned waiting:1; |
276
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
26 unsigned cache_updated:1; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
27 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
28 char *md5; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
29 ngx_int_t slot; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
30 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
31 ngx_event_busy_lock_ctx_t *next; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
32 }; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
33 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
34 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
35 typedef struct { |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
36 u_char *md5_mask; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
37 char *md5; |
1565 | 38 ngx_uint_t cacheable; |
276
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
39 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
40 ngx_uint_t busy; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
41 ngx_uint_t max_busy; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
42 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
43 ngx_uint_t waiting; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
44 ngx_uint_t max_waiting; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
45 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
46 ngx_event_busy_lock_ctx_t *events; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
47 ngx_event_busy_lock_ctx_t *last; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
48 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
49 #if (NGX_THREADS) |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
50 ngx_mutex_t *mutex; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
51 #endif |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
52 } ngx_event_busy_lock_t; |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
53 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
54 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
55 ngx_int_t ngx_event_busy_lock(ngx_event_busy_lock_t *bl, |
563 | 56 ngx_event_busy_lock_ctx_t *ctx); |
1565 | 57 ngx_int_t ngx_event_busy_lock_cacheable(ngx_event_busy_lock_t *bl, |
563 | 58 ngx_event_busy_lock_ctx_t *ctx); |
59 void ngx_event_busy_unlock(ngx_event_busy_lock_t *bl, | |
60 ngx_event_busy_lock_ctx_t *ctx); | |
61 void ngx_event_busy_lock_cancel(ngx_event_busy_lock_t *bl, | |
62 ngx_event_busy_lock_ctx_t *ctx); | |
276
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
63 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
64 |
a2d1ccc96111
nginx-0.0.2-2004-03-03-00:14:37 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
65 #endif /* _NGX_EVENT_BUSY_LOCK_H_INCLUDED_ */ |