From 575d48538fa9da54fe7b68e2e4c3ec228cd98da5 Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Sat, 6 Jun 2009 01:08:57 +0000 Subject: [PATCH] darwin-rx-netreceive-fix-20090605 LICENSE IPL10 put back code that went missing post-rxtcp --- src/rx/DARWIN/rx_knet.c | 32 +++++--------------------------- 1 file changed, 5 insertions(+), 27 deletions(-) diff --git a/src/rx/DARWIN/rx_knet.c b/src/rx/DARWIN/rx_knet.c index aac3023b2..6d621a47d 100644 --- a/src/rx/DARWIN/rx_knet.c +++ b/src/rx/DARWIN/rx_knet.c @@ -53,7 +53,6 @@ osi_NetReceive(osi_socket so, struct sockaddr_in *addr, struct iovec *dvec, thread_funnel_switch(KERNEL_FUNNEL, NETWORK_FUNNEL); #endif #ifdef AFS_DARWIN80_ENV -#if 1 resid = *alength; memset(&msg, 0, sizeof(struct msghdr)); msg.msg_name = &ss; @@ -73,32 +72,6 @@ osi_NetReceive(osi_socket so, struct sockaddr_in *addr, struct iovec *dvec, } } mbuf_freem(m); -#else - resid = *alength; - printf("Want to read %d bytes...", resid); - for (i=0; i < nvecs && resid; i++) { - if (resid < iov[i].iov_len) - iov[0].iov_len = resid; - resid -= iov[i].iov_len; - } - printf("Using %d/%d iovs\n", i, nvecs); - nvecs = i; - rlen = 0; - memset(&msg, 0, sizeof(struct msghdr)); - msg.msg_name = &ss; - msg.msg_namelen = sizeof(struct sockaddr_storage); - msg.msg_iov = &iov[0]; - msg.msg_iovlen = nvecs; - sa =(struct sockaddr_in *) &ss; - code = sock_receive(asocket, &msg, 0, &rlen); - resid = *alength; - if (resid != rlen) - printf("recieved %d bytes\n", rlen); - if (resid > rlen) - resid -= rlen; - else - resid = 0; -#endif #else u.uio_iov = &iov[0]; @@ -122,6 +95,11 @@ osi_NetReceive(osi_socket so, struct sockaddr_in *addr, struct iovec *dvec, return code; *alength -= resid; if (sa) { + if (sa->sa_family == AF_INET) { + if (addr) + *addr = *(struct sockaddr_in *)sa; + } else + printf("Unknown socket family %d in NetReceive\n", sa->sa_family); #ifndef AFS_DARWIN80_ENV FREE(sa, M_SONAME); #endif -- 2.39.5