annotate src/core/ngx_rwlock.h @ 7005:3e2d90073adf
Fixed deferred accept with EPOLLRDHUP enabled (ticket #1278).
Previously, the read event of the accepted connection was marked ready, but not
available. This made EPOLLRDHUP-related code (for example, in ngx_unix_recv())
expect more data from the socket, leading to unexpected behavior.
For example, if SSL, PROXY protocol and deferred accept were enabled on a listen
socket, the client connection was aborted due to unexpected return value of
c->recv().
author |
Roman Arutyunyan <arut@nginx.com> |
date |
Wed, 24 May 2017 13:17:08 +0300 |
parents |
682d8222c6b1 |
children |
d1816a2696de |
rev |
line source |
6101
|
1
|
|
2 /*
|
|
3 * Copyright (C) Ruslan Ermilov
|
|
4 * Copyright (C) Nginx, Inc.
|
|
5 */
|
|
6
|
|
7
|
|
8 #ifndef _NGX_RWLOCK_H_INCLUDED_
|
|
9 #define _NGX_RWLOCK_H_INCLUDED_
|
|
10
|
|
11
|
|
12 #include <ngx_config.h>
|
|
13 #include <ngx_core.h>
|
|
14
|
|
15
|
|
16 void ngx_rwlock_wlock(ngx_atomic_t *lock);
|
|
17 void ngx_rwlock_rlock(ngx_atomic_t *lock);
|
|
18 void ngx_rwlock_unlock(ngx_atomic_t *lock);
|
|
19
|
|
20
|
|
21 #endif /* _NGX_RWLOCK_H_INCLUDED_ */
|