]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
darwin-rx-netreceive-fix-20090605
authorDerrick Brashear <shadow@dementia.org>
Sat, 6 Jun 2009 01:08:57 +0000 (01:08 +0000)
committerDerrick Brashear <shadow@dementia.org>
Sat, 6 Jun 2009 01:08:57 +0000 (01:08 +0000)
LICENSE IPL10

put back code that went missing post-rxtcp

src/rx/DARWIN/rx_knet.c

index aac3023b249be6a3c985f8970b6ed8d8b1544e53..6d621a47dfac062a7fa8e74e8028303ff898258e 100644 (file)
@@ -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