From 52898404c69832c3954cb746b7529174d57169fc Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sun, 30 May 2004 01:25:19 +0000 Subject: [PATCH] rx-debug-20040529 Fix MakeDebugCall to properly check the return code of select() and recvfrom(). Do not copy data buffer unless recvfrom() succeeds. --- src/rx/rx.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/rx/rx.c b/src/rx/rx.c index bfb4ddf..4155fe6 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -6127,16 +6127,18 @@ MakeDebugCall(osi_socket socket, afs_uint32 remoteAddr, afs_uint16 remotePort, 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 */ -- 1.9.4