Fix a bug in the userland rpc library, where it would use a

negative return value from write to update its position in
a buffer. The patch, courtesy of Andrey Simonenko, also simplifies
a conditional by removing the "i != cnt" clause, since it is
always true at this point in the code. The bug caused problems
for mountd, when it generated a large reply to an exports RPC
request.

Submitted by:	simon at comsys.ntu-kpi.kiev.ua
MFC after:	2 weeks
This commit is contained in:
Rick Macklem 2011-04-10 14:11:07 +00:00
parent 9d12ecf01e
commit e2c83f74f4

View File

@ -546,7 +546,7 @@ write_vc(xprtp, buf, len)
cd->strm_stat = XPRT_DIED;
return (-1);
}
if (cd->nonblock && i != cnt) {
if (cd->nonblock) {
/*
* For non-blocking connections, do not
* take more than 2 seconds writing the
@ -560,6 +560,7 @@ write_vc(xprtp, buf, len)
return (-1);
}
}
i = 0;
}
}