diff --git a/src/kits/network/libnetapi/HttpRequest.cpp b/src/kits/network/libnetapi/HttpRequest.cpp index 57d1dea6ca..d91654a9e6 100644 --- a/src/kits/network/libnetapi/HttpRequest.cpp +++ b/src/kits/network/libnetapi/HttpRequest.cpp @@ -570,6 +570,7 @@ BHttpRequest::_MakeRequest() ssize_t bytesRead = 0; ssize_t bytesReceived = 0; ssize_t bytesTotal = 0; + size_t previousBufferSize = 0; off_t bytesUnpacked = 0; char* inputTempBuffer = new(std::nothrow) char[kHttpBufferSize]; ssize_t inputTempSize = kHttpBufferSize; @@ -579,7 +580,7 @@ BHttpRequest::_MakeRequest() ObjectDeleter decompressingStreamDeleter; while (!fQuit && !(receiveEnd && parseEnd)) { - if (!receiveEnd) { + if ((!receiveEnd) && (fInputBuffer.Size() == previousBufferSize)) { fSocket->WaitForReadable(); BStackOrHeapArray chunk(kHttpBufferSize); bytesRead = fSocket->Read(chunk, kHttpBufferSize); @@ -594,6 +595,8 @@ BHttpRequest::_MakeRequest() } else bytesRead = 0; + previousBufferSize = fInputBuffer.Size(); + if (fRequestStatus < kRequestStatusReceived) { _ParseStatus();