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;
}
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);
}
rxi_ReadvProc(struct rx_call *call, struct iovec *iov, int *nio, int maxio,
int nbytes)
{
- struct rx_packet *rp;
int requestCount;
int nextio;