mirror of
https://github.com/opnsense/src.git
synced 2026-04-24 15:48:48 -04:00
Don't call xdrrec_skiprecord in the non-blocking case. If
__xdrrec_getrec has returned TRUE, then we have a complete request in the buffer - calling xdrrec_skiprecord is not necessary. In particular, if there is another record already buffered on the stream, xdrrec_skiprecord will discard both this request and the next one, causing the call to xdr_callmsg to fail and the stream to be closed. Sponsored by: Isilon Systems
This commit is contained in:
parent
7ea7cc4bab
commit
ecc03b80f1
1 changed files with 2 additions and 1 deletions
|
|
@ -604,10 +604,11 @@ svc_vc_recv(xprt, msg)
|
|||
if (cd->nonblock) {
|
||||
if (!__xdrrec_getrec(xdrs, &cd->strm_stat, TRUE))
|
||||
return FALSE;
|
||||
} else {
|
||||
(void)xdrrec_skiprecord(xdrs);
|
||||
}
|
||||
|
||||
xdrs->x_op = XDR_DECODE;
|
||||
(void)xdrrec_skiprecord(xdrs);
|
||||
if (xdr_callmsg(xdrs, msg)) {
|
||||
cd->x_id = msg->rm_xid;
|
||||
return (TRUE);
|
||||
|
|
|
|||
Loading…
Reference in a new issue