]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE12-rx-debug-20040529
authorJeffrey Altman <jaltman@mit.edu>
Mon, 18 Oct 2004 06:20:48 +0000 (06:20 +0000)
committerDerrick Brashear <shadow@dementia.org>
Mon, 18 Oct 2004 06:20:48 +0000 (06:20 +0000)
Fix MakeDebugCall to properly check the return code of select() and
recvfrom().  Do not copy data buffer unless recvfrom() succeeds.

(cherry picked from commit 52898404c69832c3954cb746b7529174d57169fc)

src/rx/rx.c

index 369dbbc29d7d833f916b85b9e4eae37c691b52b6..dfedf8f0056fae37638851d81e8dd211e65156b3 100644 (file)
@@ -6175,14 +6175,17 @@ static int MakeDebugCall(
        tv.tv_sec = 1;
        tv.tv_usec = 0;
        code = select(socket+1, &imask, 0, 0, &tv);
-       if (code > 0) {
+       if (code == 1 && FD_ISSET(socket,&imask)) {
            /* now receive a packet */
            faddrLen = sizeof(struct sockaddr_in);
            code = recvfrom(socket, tbuffer, sizeof(tbuffer), 0,
                            (struct sockaddr *) &faddr, &faddrLen);
 
-           memcpy(&theader, tbuffer, sizeof(struct rx_header));
-           if (counter == ntohl(theader.callNumber)) break;
+           if (code > 0) {
+               memcpy(&theader, tbuffer, sizeof(struct rx_header));
+               if (counter == ntohl(theader.callNumber))
+                   break;
+           }
        }
 
        /* see if we've timed out */