[lkml]   [2008]   [Aug]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Subjectpaccept() oddity

    2.6.27-rc has paccept():

    int paccept(int fd, struct sockaddr *sockaddr, socklen_t *addrlen,
    const sigset_t *sigmask, int setsize, int flags)

    While considering the sigset argument for paccept() (see my previous
    message), and testing that system call, I realized that there is a certain
    oddness in the implementation of paccept().

    Like accept(), paccept() automatically restarts if interrupted by a signal
    handler that was established with the SA_RESTART flag.

    On the other hand, pselect(), ppoll(), and epoll_pwait() are never restarted
    if interrupted by a handler, even if the handler was established with
    SA_RESTART. (This is the same as with select(), poll(), and epoll_wait().)

    It seems to me that it makes little sense to restart paccept(), especially in
    the case where it is interrupted by a handler for one of the signals that is
    in sigmask, since the whole point of calling paccept() is to block until a
    connection is received, or until one of the signals in sigmask is caught().

    How about changing paccept() so that it is never automatically restarted if
    interrupted by a signal handler, regardless of the SA_RESTART flag. (In
    other words, paccept() should be consistent with pselect(), ppoll(), and
    epoll_pwait(), rather than being consistent with accept().) What are your



     \ /
      Last update: 2008-08-20 18:57    [W:0.020 / U:41.996 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site