HttpRequest: write whole request to socket
Better performance by using a single write, and some servers may not be happy about getting so many TCP fragments for the HTTP header. Change-Id: If7139e2a7748ea423d470676e70bd523a89031b2 Reviewed-on: https://review.haiku-os.org/c/909 Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
committed by
waddlesplash
parent
27aefde9fd
commit
1322d50732
@@ -68,8 +68,8 @@ private:
|
||||
status_t _ProtocolLoop();
|
||||
status_t _MakeRequest();
|
||||
|
||||
void _SendRequest();
|
||||
void _SendHeaders();
|
||||
BString _SerializeRequest();
|
||||
BString _SerializeHeaders();
|
||||
void _SendPostData();
|
||||
|
||||
void _ParseStatus();
|
||||
|
||||
@@ -551,9 +551,11 @@ BHttpRequest::_MakeRequest()
|
||||
_EmitDebug(B_URL_PROTOCOL_DEBUG_TEXT,
|
||||
"Connection opened, sending request.");
|
||||
|
||||
_SendRequest();
|
||||
_SendHeaders();
|
||||
fSocket->Write("\r\n", 2);
|
||||
BString requestHeaders;
|
||||
requestHeaders.Append(_SerializeRequest());
|
||||
requestHeaders.Append(_SerializeHeaders());
|
||||
requestHeaders.Append("\r\n");
|
||||
fSocket->Write(requestHeaders.String(), requestHeaders.Length());
|
||||
_EmitDebug(B_URL_PROTOCOL_DEBUG_TEXT, "Request sent.");
|
||||
|
||||
_SendPostData();
|
||||
@@ -835,8 +837,8 @@ BHttpRequest::_ParseHeaders()
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
BHttpRequest::_SendRequest()
|
||||
BString
|
||||
BHttpRequest::_SerializeRequest()
|
||||
{
|
||||
BString request(fRequestMethod);
|
||||
request << ' ';
|
||||
@@ -868,12 +870,14 @@ BHttpRequest::_SendRequest()
|
||||
break;
|
||||
}
|
||||
|
||||
fSocket->Write(request.String(), request.Length());
|
||||
_EmitDebug(B_URL_PROTOCOL_DEBUG_HEADER_OUT, "%s", request.String());
|
||||
|
||||
return request;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
BHttpRequest::_SendHeaders()
|
||||
BString
|
||||
BHttpRequest::_SerializeHeaders()
|
||||
{
|
||||
BHttpHeaders outputHeaders;
|
||||
|
||||
@@ -996,7 +1000,7 @@ BHttpRequest::_SendHeaders()
|
||||
_EmitDebug(B_URL_PROTOCOL_DEBUG_HEADER_OUT, "%s", header);
|
||||
}
|
||||
|
||||
fSocket->Write(headerData.String(), headerData.Length());
|
||||
return headerData;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user