X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/94b4fbf93a7653bd9acb52649d6a4a8d5f994d0a..36fb4e9a7743326d1a2ca7601bc9bf1c5b9a0bcb:/libratbox/src/commio.c diff --git a/libratbox/src/commio.c b/libratbox/src/commio.c index 7a46b2b..cd1f5a0 100644 --- a/libratbox/src/commio.c +++ b/libratbox/src/commio.c @@ -21,7 +21,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA * - * $Id: commio.c 26096 2008-09-20 01:05:42Z androsyn $ + * $Id: commio.c 26254 2008-12-10 04:04:38Z androsyn $ */ #include #include @@ -1610,6 +1610,12 @@ rb_inet_socketpair_udp(rb_fde_t **newF1, rb_fde_t **newF2) unsigned int fd[2]; int i, got; unsigned short port; + struct timeval wait = { 0, 100000 }; + int max; + fd_set rset; + struct sockaddr_in readfrom; + unsigned short buf[2]; + int o_errno; memset(&addr, 0, sizeof(addr)); @@ -1648,11 +1654,7 @@ rb_inet_socketpair_udp(rb_fde_t **newF1, rb_fde_t **newF2) } } - - struct timeval wait = { 0, 100000 }; - - int max = fd[1] > fd[0] ? fd[1] : fd[0]; - fd_set rset; + max = fd[1] > fd[0] ? fd[1] : fd[0]; FD_ZERO(&rset); FD_SET(fd[0], &rset); FD_SET(fd[1], &rset); @@ -1664,8 +1666,6 @@ rb_inet_socketpair_udp(rb_fde_t **newF1, rb_fde_t **newF2) goto abort_failed; } - struct sockaddr_in readfrom; - unsigned short buf[2]; for(i = 0; i < 2; i++) { #ifdef MSG_DONTWAIT @@ -1700,7 +1700,7 @@ rb_inet_socketpair_udp(rb_fde_t **newF1, rb_fde_t **newF2) failed: if(errno != ECONNABORTED) rb_get_errno(); - int o_errno = errno; + o_errno = errno; if(F[0] != NULL) rb_close(F[0]); if(F[1] != NULL) @@ -1862,10 +1862,10 @@ try_ports(void) setselect_handler = rb_setselect_ports; select_handler = rb_select_ports; setup_fd_handler = rb_setup_fd_ports; - io_sched_event = NULL; - io_unsched_event = NULL; - io_init_event = NULL; - io_supports_event = rb_unsupported_event; + io_sched_event = rb_ports_sched_event; + io_unsched_event = rb_ports_unsched_event; + io_init_event = rb_ports_init_event; + io_supports_event = rb_ports_supports_event; rb_strlcpy(iotype, "ports", sizeof(iotype)); return 0; } @@ -2156,7 +2156,7 @@ rb_recv_fd_buf(rb_fde_t *F, void *data, size_t datasize, rb_fde_t **xF, int nfds if(msg.msg_controllen > 0 && msg.msg_control != NULL && (cmsg = CMSG_FIRSTHDR(&msg)) != NULL) { - rfds = (msg.msg_controllen - sizeof(struct cmsghdr)) / sizeof(int); + rfds = ((unsigned char *)cmsg + cmsg->cmsg_len - CMSG_DATA(cmsg)) / sizeof(int); for(x = 0; x < nfds && x < rfds; x++) {