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:
@@ -458,30 +458,33 @@ 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) {
|
||||||
char outputTempBuffer[1024];
|
|
||||||
ssize_t read = 0;
|
|
||||||
|
|
||||||
while (read != -1) {
|
for(;;) {
|
||||||
read = fOptInputData->Read(outputTempBuffer, 1024);
|
char outputTempBuffer[1024];
|
||||||
|
ssize_t read = fOptInputData->Read(outputTempBuffer,
|
||||||
|
sizeof(outputTempBuffer));
|
||||||
|
|
||||||
if (read > 0) {
|
if(read <= 0) break;
|
||||||
if (fOptInputDataSize < 0)
|
|
||||||
{
|
|
||||||
// Chunked transfer
|
|
||||||
char hexSize[16];
|
|
||||||
size_t hexLength = sprintf(hexSize, "%ld", read);
|
|
||||||
|
|
||||||
fSocket->Write(hexSize, hexLength);
|
if (fOptInputDataSize < 0)
|
||||||
fSocket->Write("\r\n", 2);
|
{
|
||||||
fSocket->Write(outputTempBuffer, read);
|
// Chunked transfer
|
||||||
fSocket->Write("\r\n", 2);
|
char hexSize[16];
|
||||||
} else {
|
size_t hexLength = sprintf(hexSize, "%ld", read);
|
||||||
fSocket->Write(outputTempBuffer, read);
|
|
||||||
}
|
fSocket->Write(hexSize, hexLength);
|
||||||
|
fSocket->Write("\r\n", 2);
|
||||||
|
fSocket->Write(outputTempBuffer, read);
|
||||||
|
fSocket->Write("\r\n", 2);
|
||||||
|
} else {
|
||||||
|
fSocket->Write(outputTempBuffer, read);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fSocket->Write("0\r\n\r\n", 5);
|
if (fOptInputDataSize < 0) {
|
||||||
|
// Chunked transfer terminating sequence
|
||||||
|
fSocket->Write("0\r\n\r\n", 5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fOutputBuffer.Truncate(0, true);
|
fOutputBuffer.Truncate(0, true);
|
||||||
|
|
||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user