Remove the special treatment of non-blocking mode in xdrrec_eof(). This change broke seriously reading serialized xdr-records. A end of a request could sometimes not be recognized and the answer to the client did fail. Return always FALSE in set_input_fragment() for non-blocking mode. Since this was not used in FreeBSD, I omitted it at the first time. Now we use this function and we should always return FALSE for it. --- lib/libc/xdr/xdr_rec.c.orig Thu Feb 27 13:40:01 2003 +++ lib/libc/xdr/xdr_rec.c Sat May 17 17:20:24 2003 @@ -489,15 +489,6 @@ XDR *xdrs; { RECSTREAM *rstrm = (RECSTREAM *)(xdrs->x_private); - enum xprt_stat xstat; - - if (rstrm->nonblock) { - if (__xdrrec_getrec(xdrs, &xstat, FALSE)) - return FALSE; - if (!rstrm->in_haveheader && xstat == XPRT_IDLE) - return TRUE; - return FALSE; - } while (rstrm->fbtbc > 0 || (! rstrm->last_frag)) { if (! skip_input_bytes(rstrm, rstrm->fbtbc)) @@ -744,6 +735,8 @@ { u_int32_t current; + if (rstrm->nonblock) + return FALSE; while (cnt > 0) { current = (size_t)((long)rstrm->in_boundry - (long)rstrm->in_finger);