On Thu, Apr 9, 2009 at 9:52 AM, Ross Finlayson <finlay...@live555.com> wrote: > Thanks for the suggestion; I like this. > > Unless anyone sees a problem with this, I will include it in the next > release of the software.
Hello, On Linux, select() is implemented above poll(). In net/core/datagram.c (linux 2.6.26 sources), in datagram_poll() you can see the lines that check for readable event on the socket : /* readable? */ if (!skb_queue_empty(&sk->sk_receive_queue) || (sk->sk_shutdown & RCV_SHUTDOWN)) mask |= POLLIN | POLLRDNORM; The event is set if the socket input buffer is not empty. On FreeBSD it is the same thing : sys/kern/uipc_socket.c in sopoll_generic() : if (events & (POLLIN | POLLRDNORM)) if (soreadable(so)) revents |= events & (POLLIN | POLLRDNORM); sys/sys/socketvar.h : #define soreadable(so) \ ((so)->so_rcv.sb_cc >= (so)->so_rcv.sb_lowat || \ ((so)->so_rcv.sb_state & SBS_CANTRCVMORE) || \ !TAILQ_EMPTY(&(so)->so_comp) || (so)->so_error) -- Aurélien Nephtali _______________________________________________ live-devel mailing list live-devel@lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel