libev epoll and EPOLLRDHUP

Marc Lehmann schmorp at schmorp.de
Thu Jun 13 12:55:23 CEST 2013


On Thu, Jun 13, 2013 at 11:54:55AM +0530, "Chaliha, Sayan" <sayan.chaliha at in.verizon.com> wrote:
> 	a. I have a transparent HTTP proxy server
> 	b. The proxy is heavily loaded with connections (around 3 Gbps of data)
> 	c. On any side  of the proxy if a client closes a connection, I don't get a read (or write) event for the last connection that went down. That event 	    comes only when a new connection is established. Off late testers are reporting that more than ten or eleven connection close events are being 	    missed with epoll enabled.

That sounds a lot like a bug in your program (especially when you also see
corruption of the backend_fd already...), less like a bug in epoll, and
looks completely unrelated to EPOLLRDHUP.

If you have a testcase that exhibits the problem, or some strace (or
equivalent) output that shows that epoll doesn't generate EPOLLIN for a
closed connection, then you would have a case.

Until then, you'd probably be better off hunting bugs in your code, such
as closing the wrong fd, or blocking your process, or corrupting libev's
data structures or the like.

-- 
                The choice of a       Deliantra, the free code+content MORPG
      -----==-     _GNU_              http://www.deliantra.net
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      schmorp at schmorp.de
      -=====/_/_//_/\_,_/ /_/\_\



More information about the libev mailing list