lkml.org 
[lkml]   [2006]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: PROBLEM: epoll_wait() returns wrong events for EOF with EPOLLOUT
On Fri, 14 Jul 2006, Michael Lindner wrote:

> [2.] Full description of the problem/report:
> If a program is waiting in epoll_wait() for EPOLLOUT event on a
> socket and the socket is closed, epoll_wait() returns EPOLLHUP|EPOLLERR,
> but *not* EPOLLOUT.
>
> This differs from the expected behavior in several ways:
>
> 1. epoll_wait is not returning the events it was told to wait for.
> Why not return EPOLLOUT? select() returns an FD as writable on EOF.

Because it is not supposed to.



> 2. epoll_wait() is returning events it was not told to wait for.

Because they are non-maskeable.



> 3. EPOLLHUP is not returned if EPOLLIN was requested, why
> do so on EPOLLOUT?

Please take a look at the POSIX docs for poll(2).



> Also a minor issue - epoll_ctl doesn't check if the fd in events.data.fd
> is the same as the fd that's been passed in as argument 3. If they differ
> (due to programmer error), epoll_wait will return an event with the
> incorrect events.data.fd specified to epoll_ctl().

That's an opaque union and epoll couldn't care less of the content.



- Davide


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-07-15 00:41    [W:0.037 / U:1.384 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site