diff src/event/ngx_event.h @ 5372:36b58ddb566d

Events: support for EPOLLRDHUP (ticket #320). Since Linux 2.6.17, epoll is able to report about peer half-closed connection using special EPOLLRDHUP flag on a read event.
author Valentin Bartenev <vbart@nginx.com>
date Fri, 12 Jul 2013 14:51:07 +0400
parents b95e70ae6bcd
children 3377f9459e99
line wrap: on
line diff
--- a/src/event/ngx_event.h
+++ b/src/event/ngx_event.h
@@ -71,7 +71,7 @@ struct ngx_event_s {
 
     unsigned         deferred_accept:1;
 
-    /* the pending eof reported by kqueue or in aio chain operation */
+    /* the pending eof reported by kqueue, epoll or in aio chain operation */
     unsigned         pending_eof:1;
 
 #if !(NGX_THREADS)
@@ -349,6 +349,11 @@ extern ngx_event_actions_t   ngx_event_a
 #define NGX_VNODE_EVENT    0
 
 
+#if (NGX_HAVE_EPOLL) && !(NGX_HAVE_EPOLLRDHUP)
+#define EPOLLRDHUP         0
+#endif
+
+
 #if (NGX_HAVE_KQUEUE)
 
 #define NGX_READ_EVENT     EVFILT_READ
@@ -392,7 +397,7 @@ extern ngx_event_actions_t   ngx_event_a
 
 #elif (NGX_HAVE_EPOLL)
 
-#define NGX_READ_EVENT     EPOLLIN
+#define NGX_READ_EVENT     (EPOLLIN|EPOLLRDHUP)
 #define NGX_WRITE_EVENT    EPOLLOUT
 
 #define NGX_LEVEL_EVENT    0