summaryrefslogtreecommitdiff
path: root/lib/ZRecvPkt.c
diff options
context:
space:
mode:
authorGravatar Robert S. French <rfrench@mit.edu>1988-06-15 12:55:05 +0000
committerGravatar Robert S. French <rfrench@mit.edu>1988-06-15 12:55:05 +0000
commitddd9009109578d25cced7c894590dea07e3005a0 (patch)
tree759bb7fb3ed36c52040ae37d4d8e46561c76d247 /lib/ZRecvPkt.c
parent8954e484c2f8654993f8570558dab76218861ecd (diff)
For John
Diffstat (limited to 'lib/ZRecvPkt.c')
-rw-r--r--lib/ZRecvPkt.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/lib/ZRecvPkt.c b/lib/ZRecvPkt.c
index 33a48c0..03bf070 100644
--- a/lib/ZRecvPkt.c
+++ b/lib/ZRecvPkt.c
@@ -25,24 +25,17 @@ Code_t ZReceivePacket(buffer, ret_len, from)
int *ret_len;
struct sockaddr_in *from;
{
- int retval;
+ Code_t retval;
struct _Z_InputQ *nextq;
- if (ZGetFD() < 0)
- return (ZERR_NOPORT);
-
- if (ZQLength()) {
- if ((retval = Z_ReadEnqueue()) != ZERR_NONE)
- return (retval);
- }
- else {
- if ((retval = Z_ReadWait()) != ZERR_NONE)
- return (retval);
- }
+ if ((retval = Z_WaitForComplete()) != ZERR_NONE)
+ return (retval);
nextq = (struct _Z_InputQ *) Z_GetFirstComplete();
*ret_len = nextq->packet_len;
+ if (*ret_len > Z_MAXPKTLEN)
+ return (ZERR_PKTLEN);
bcopy(nextq->packet, buffer, *ret_len);