Don't send a chunked transfer terminator for non-chunked transfers.

* Fixes oversight from previous change.
 * Thanks hamishm for watching !
This commit is contained in:
Adrien Destugues
2013-10-09 12:12:43 +02:00
parent 780967d8ac
commit a5826aafb0
+11 -10
View File
@@ -458,13 +458,14 @@ BHttpRequest::_MakeRequest()
} }
} else if ((fRequestMethod == B_HTTP_POST || fRequestMethod == B_HTTP_PUT) } else if ((fRequestMethod == B_HTTP_POST || fRequestMethod == B_HTTP_PUT)
&& fOptInputData != NULL) { && fOptInputData != NULL) {
for(;;) {
char outputTempBuffer[1024]; char outputTempBuffer[1024];
ssize_t read = 0; ssize_t read = fOptInputData->Read(outputTempBuffer,
sizeof(outputTempBuffer));
while (read != -1) { if(read <= 0) break;
read = fOptInputData->Read(outputTempBuffer, 1024);
if (read > 0) {
if (fOptInputDataSize < 0) if (fOptInputDataSize < 0)
{ {
// Chunked transfer // Chunked transfer
@@ -479,10 +480,12 @@ BHttpRequest::_MakeRequest()
fSocket->Write(outputTempBuffer, read); fSocket->Write(outputTempBuffer, read);
} }
} }
}
if (fOptInputDataSize < 0) {
// Chunked transfer terminating sequence
fSocket->Write("0\r\n\r\n", 5); fSocket->Write("0\r\n\r\n", 5);
} }
}
fOutputBuffer.Truncate(0, true); fOutputBuffer.Truncate(0, true);
fStatusReceived = false; fStatusReceived = false;
@@ -537,13 +540,11 @@ BHttpRequest::_MakeRequest()
fListener->HeadersReceived(this); fListener->HeadersReceived(this);
// Parse received cookies // Parse received cookies
if ((fContext != NULL) && fHeaders.HasHeader("Set-Cookie")) { if (fContext != NULL) {
for (int32 i = 0; i < fHeaders.CountHeaders(); i++) { for (int32 i = 0; i < fHeaders.CountHeaders(); i++) {
if (fHeaders.HeaderAt(i).NameIs("Set-Cookie")) { if (fHeaders.HeaderAt(i).NameIs("Set-Cookie")) {
BNetworkCookie* cookie = new BNetworkCookie(); fContext->GetCookieJar().AddCookie(
cookie->ParseCookieStringFromUrl(
fHeaders.HeaderAt(i).Value(), fUrl); fHeaders.HeaderAt(i).Value(), fUrl);
fContext->GetCookieJar().AddCookie(cookie);
} }
} }
} }
@@ -717,7 +718,7 @@ BHttpRequest::_ParseHeaders()
if (_GetLine(currentHeader) == B_ERROR) if (_GetLine(currentHeader) == B_ERROR)
return; return;
// Empty line // An empty line means the end of the header section
if (currentHeader.Length() == 0) { if (currentHeader.Length() == 0) {
fHeadersReceived = true; fHeadersReceived = true;
return; return;