Skip to content
  • Stefan Hajnoczi's avatar
    main-loop: narrow win32 pollfds_fill() event bitmasks · 8db165b3
    Stefan Hajnoczi authored
    
    
    pollfds_fill() and pollfds_poll() translate GPollFD to rfds/wfds/xfds
    for sockets on win32.  select(2) is the underlying system call which is
    used to monitor sockets for activity.
    
    Currently file descriptors that monitor G_IO_ERR will be included in
    both rfds and wfds.  As a result, select(2) will report writability on
    file descriptors where we only really wanted to monitor readability
    (with errors).
    
    slirp_pollfds_poll() hit this issue: UDP sockets are blocking sockets so
    we hang in sorecvfrom() when G_IO_ERR is set due to the socket being
    writable (we only wanted to check for readability).
    
    This patch fixes the slirp_pollfds_poll() hang.
    
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
    Message-id: 1368718561-7816-2-git-send-email-stefanha@redhat.com
    Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
    8db165b3