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 _ProtocolLoop();
|
||||||
status_t _MakeRequest();
|
status_t _MakeRequest();
|
||||||
|
|
||||||
void _SendRequest();
|
BString _SerializeRequest();
|
||||||
void _SendHeaders();
|
BString _SerializeHeaders();
|
||||||
void _SendPostData();
|
void _SendPostData();
|
||||||
|
|
||||||
void _ParseStatus();
|
void _ParseStatus();
|
||||||
|
|||||||
@@ -551,9 +551,11 @@ BHttpRequest::_MakeRequest()
|
|||||||
_EmitDebug(B_URL_PROTOCOL_DEBUG_TEXT,
|
_EmitDebug(B_URL_PROTOCOL_DEBUG_TEXT,
|
||||||
"Connection opened, sending request.");
|
"Connection opened, sending request.");
|
||||||
|
|
||||||
_SendRequest();
|
BString requestHeaders;
|
||||||
_SendHeaders();
|
requestHeaders.Append(_SerializeRequest());
|
||||||
fSocket->Write("\r\n", 2);
|
requestHeaders.Append(_SerializeHeaders());
|
||||||
|
requestHeaders.Append("\r\n");
|
||||||
|
fSocket->Write(requestHeaders.String(), requestHeaders.Length());
|
||||||
_EmitDebug(B_URL_PROTOCOL_DEBUG_TEXT, "Request sent.");
|
_EmitDebug(B_URL_PROTOCOL_DEBUG_TEXT, "Request sent.");
|
||||||
|
|
||||||
_SendPostData();
|
_SendPostData();
|
||||||
@@ -835,8 +837,8 @@ BHttpRequest::_ParseHeaders()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
BString
|
||||||
BHttpRequest::_SendRequest()
|
BHttpRequest::_SerializeRequest()
|
||||||
{
|
{
|
||||||
BString request(fRequestMethod);
|
BString request(fRequestMethod);
|
||||||
request << ' ';
|
request << ' ';
|
||||||
@@ -868,12 +870,14 @@ BHttpRequest::_SendRequest()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
fSocket->Write(request.String(), request.Length());
|
_EmitDebug(B_URL_PROTOCOL_DEBUG_HEADER_OUT, "%s", request.String());
|
||||||
|
|
||||||
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
BString
|
||||||
BHttpRequest::_SendHeaders()
|
BHttpRequest::_SerializeHeaders()
|
||||||
{
|
{
|
||||||
BHttpHeaders outputHeaders;
|
BHttpHeaders outputHeaders;
|
||||||
|
|
||||||
@@ -996,7 +1000,7 @@ BHttpRequest::_SendHeaders()
|
|||||||
_EmitDebug(B_URL_PROTOCOL_DEBUG_HEADER_OUT, "%s", header);
|
_EmitDebug(B_URL_PROTOCOL_DEBUG_HEADER_OUT, "%s", header);
|
||||||
}
|
}
|
||||||
|
|
||||||
fSocket->Write(headerData.String(), headerData.Length());
|
return headerData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user