/* * purge_recv_buffers_for_fd() - purges any previously-received input * from a given file descriptor. */ void purge_recv_buffers_for_fd( SOCKET fd ) { recvbuf_t *rbufp; recvbuf_t *next; recvbuf_t *punlinked; LOCK(); for (rbufp = HEAD_FIFO(full_recv_fifo); rbufp != NULL; rbufp = next) { next = rbufp->link; if (rbufp->fd == fd) { UNLINK_MID_FIFO(punlinked, full_recv_fifo, rbufp, link, recvbuf_t); INSIST(punlinked == rbufp); full_recvbufs--; freerecvbuf(rbufp); } } UNLOCK(); }
/* * purge_recv_buffers_for_fd() - purges any previously-received input * from a given file descriptor. */ void purge_recv_buffers_for_fd( int fd ) { recvbuf_t *rbufp; recvbuf_t *next; recvbuf_t *punlinked; LOCK(); for (rbufp = HEAD_FIFO(full_recv_fifo); rbufp != NULL; rbufp = next) { next = rbufp->link; # ifdef HAVE_IO_COMPLETION_PORT if (rbufp->dstadr == NULL && rbufp->fd == fd) # else if (rbufp->fd == fd) # endif { UNLINK_MID_FIFO(punlinked, full_recv_fifo, rbufp, link, recvbuf_t); INSIST(punlinked == rbufp); full_recvbufs--; freerecvbuf(rbufp); } } UNLOCK(); }