From 869d65337ecc9e119a32a9b17b624e8a0c7d263c Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Sat, 13 Jan 2007 23:33:21 +0000 Subject: fixed bad variable use when getting the size which we should read when attempting not to read data that might belong to the next response (if pipelining) --- lib/transfer.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/transfer.c b/lib/transfer.c index 3004d14c3..ca112331e 100644 --- a/lib/transfer.c +++ b/lib/transfer.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2006, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2007, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -347,8 +347,14 @@ CURLcode Curl_readwrite(struct connectdata *conn, size_t bytestoread = buffersize; int readrc; - if (k->size != -1 && !k->header) - bytestoread = (size_t)(k->size - k->bytecount); + if (k->size != -1 && !k->header) { + /* make sure we don't read "too much" if we can help it since we + might be pipelining and then someone else might want to read what + follows! */ + curl_off_t totalleft = k->size - k->bytecount; + if(totalleft < bytestoread) + bytestoread = (size_t)totalleft; + } /* receive data from the network! */ readrc = Curl_read(conn, conn->sockfd, k->buf, bytestoread, &nread); -- cgit v1.2.3