After you accept a new connection, you must use ev_io_init() and ev_io_start() to start waiting read event on the new fd. By doing this, you can get a read event when the connection goes down.

于 2013年06月13日 14:24, Chaliha, Sayan 写道:
Hi Marc,

1. I'm using Ubuntu 12.04 LTS (bare-bones kernel and very few modules). uname 
-a: Linux ATCA-7311 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 
2012 x86_64 x86_64 x86_64 GNU/Linux
2. Here's my observation:
        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.
        d. With poll it works absolutely fine: For every connection that is 
closed, I immediately get an event.

Thank you for your help!

--
Warm regards,
Sayan.


-----Original Message-----
From: Marc Lehmann [mailto:[email protected]]
Sent: Thursday, June 13, 2013 5:01 AM
To: Chaliha, Sayan
Cc: [email protected]
Subject: Re: libev epoll and EPOLLRDHUP

On Wed, Jun 12, 2013 at 05:19:31PM +0530, "Chaliha, Sayan" 
<[email protected]> wrote:
I'd like a notification from libev when a TCP connection goes down.
This works fine with poll backend, but with epoll backend it doesn't.
My guess is because EPOLLRDHUP is not being handled. Could I have a
patch for this please?
Hi - this doesn't make much sense: libev already notifies you when a tcp 
connection goes down (for both read and write watcher depending on which half 
is closed). It makes no obvious sense for libev to handle EPOLLRDHUP in any way.

Could you describe:

- what behaviour you are seeing.
- what behaviour do you expect instead.
- what exactly you think should be changed.
- how poll differs from epoll in generated signals.

Also, since epoll is extremely badly designed and implemented, maybe you are 
hitting a bug in your kernel - which kernel version do you see the beahviour 
with?




_______________________________________________
libev mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev

Reply via email to