rx-readproc32-avoid-losing-currentpacket-20080925

LICENSE IPL10

when currentPacket is empty, avoid leaking it and instead free and NULL it
This commit is contained in:
Jeffrey Altman 2008-09-25 18:06:24 +00:00 committed by Derrick Brashear
parent eb875d3034
commit 883683fc31

View File

@ -325,6 +325,16 @@ rx_ReadProc(struct rx_call *call, char *buf, int nbytes)
call->curpos = tcurpos + nbytes;
call->curlen = tcurlen - nbytes;
call->nLeft = tnLeft - nbytes;
if (!call->nLeft) {
/* out of packet. Get another one. */
NETPRI;
MUTEX_ENTER(&call->lock);
rxi_FreePacket(call->currentPacket);
call->currentPacket = (struct rx_packet *)0;
MUTEX_EXIT(&call->lock);
USERPRI;
}
return nbytes;
}
@ -373,6 +383,15 @@ rx_ReadProc32(struct rx_call *call, afs_int32 * value)
call->curpos = tcurpos + sizeof(afs_int32);
call->curlen = (u_short)(tcurlen - sizeof(afs_int32));
call->nLeft = (u_short)(tnLeft - sizeof(afs_int32));
if (!call->nLeft) {
/* out of packet. Get another one. */
NETPRI;
MUTEX_ENTER(&call->lock);
rxi_FreePacket(call->currentPacket);
call->currentPacket = (struct rx_packet *)0;
MUTEX_EXIT(&call->lock);
USERPRI;
}
return sizeof(afs_int32);
}