From d035517586fd032425df01776c57b3aba0206a7a Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sun, 23 Jan 2000 08:57:56 +0000 Subject: [PATCH] Don't set frag_sent if no more data, fixes part 2 of bug 1549. --- sunrpc/xdr_rec.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/sunrpc/xdr_rec.c b/sunrpc/xdr_rec.c index 4809589d072..a330a1949da 100644 --- a/sunrpc/xdr_rec.c +++ b/sunrpc/xdr_rec.c @@ -65,8 +65,7 @@ static void xdrrec_destroy (XDR *); static bool_t xdrrec_getint32 (XDR *, int32_t *); static bool_t xdrrec_putint32 (XDR *, const int32_t *); -static const struct xdr_ops xdrrec_ops = -{ +static const struct xdr_ops xdrrec_ops = { xdrrec_getlong, xdrrec_putlong, xdrrec_getbytes, @@ -288,7 +287,7 @@ xdrrec_putbytes (XDR *xdrs, const char *addr, u_int len) rstrm->out_finger += current; addr += current; len -= current; - if (rstrm->out_finger == rstrm->out_boundry) + if (rstrm->out_finger == rstrm->out_boundry && len > 0) { rstrm->frag_sent = TRUE; if (!flush_out (rstrm, FALSE)) @@ -464,8 +463,7 @@ xdrrec_putint32 (XDR *xdrs, const int32_t *ip) * this procedure to guarantee proper record alignment. */ bool_t -xdrrec_skiprecord (xdrs) - XDR *xdrs; +xdrrec_skiprecord (XDR *xdrs) { RECSTREAM *rstrm = (RECSTREAM *) xdrs->x_private; @@ -487,8 +485,7 @@ xdrrec_skiprecord (xdrs) * after consuming the rest of the current record. */ bool_t -xdrrec_eof (xdrs) - XDR *xdrs; +xdrrec_eof (XDR *xdrs) { RECSTREAM *rstrm = (RECSTREAM *) xdrs->x_private; @@ -512,9 +509,7 @@ xdrrec_eof (xdrs) * pipelined procedure calls.) TRUE => immediate flush to tcp connection. */ bool_t -xdrrec_endofrecord (xdrs, sendnow) - XDR *xdrs; - bool_t sendnow; +xdrrec_endofrecord (XDR *xdrs, bool_t sendnow) { RECSTREAM *rstrm = (RECSTREAM *) xdrs->x_private; u_long len; /* fragment length */ -- 2.47.2