mirror of https://github.com/aria2/aria2
commit
b4010a52c8
|
@ -68,6 +68,11 @@ HttpRequestEntry::HttpRequestEntry(std::unique_ptr<HttpRequest> httpRequest)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HttpRequestEntry::resetHttpHeaderProcessor()
|
||||||
|
{
|
||||||
|
proc_ = make_unique<HttpHeaderProcessor>(HttpHeaderProcessor::CLIENT_PARSER);
|
||||||
|
}
|
||||||
|
|
||||||
std::unique_ptr<HttpRequest> HttpRequestEntry::popHttpRequest()
|
std::unique_ptr<HttpRequest> HttpRequestEntry::popHttpRequest()
|
||||||
{
|
{
|
||||||
return std::move(httpRequest_);
|
return std::move(httpRequest_);
|
||||||
|
@ -151,9 +156,16 @@ std::unique_ptr<HttpResponse> HttpConnection::receiveResponse()
|
||||||
socketRecvBuffer_->getBufferLength())) {
|
socketRecvBuffer_->getBufferLength())) {
|
||||||
A2_LOG_INFO(
|
A2_LOG_INFO(
|
||||||
fmt(MSG_RECEIVE_RESPONSE, cuid_, proc->getHeaderString().c_str()));
|
fmt(MSG_RECEIVE_RESPONSE, cuid_, proc->getHeaderString().c_str()));
|
||||||
|
auto result = proc->getResult();
|
||||||
|
if (result->getStatusCode() / 100 == 1) {
|
||||||
|
socketRecvBuffer_->drain(proc->getLastBytesProcessed());
|
||||||
|
outstandingHttpRequests_.front()->resetHttpHeaderProcessor();
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
auto httpResponse = make_unique<HttpResponse>();
|
auto httpResponse = make_unique<HttpResponse>();
|
||||||
httpResponse->setCuid(cuid_);
|
httpResponse->setCuid(cuid_);
|
||||||
httpResponse->setHttpHeader(proc->getResult());
|
httpResponse->setHttpHeader(std::move(result));
|
||||||
httpResponse->setHttpRequest(
|
httpResponse->setHttpRequest(
|
||||||
outstandingHttpRequests_.front()->popHttpRequest());
|
outstandingHttpRequests_.front()->popHttpRequest());
|
||||||
socketRecvBuffer_->drain(proc->getLastBytesProcessed());
|
socketRecvBuffer_->drain(proc->getLastBytesProcessed());
|
||||||
|
|
|
@ -62,6 +62,10 @@ private:
|
||||||
public:
|
public:
|
||||||
HttpRequestEntry(std::unique_ptr<HttpRequest> httpRequest);
|
HttpRequestEntry(std::unique_ptr<HttpRequest> httpRequest);
|
||||||
|
|
||||||
|
// Resets proc_ by recreating the object. Thus any object obtained
|
||||||
|
// by getHttpRequest() before this call is invalidated.
|
||||||
|
void resetHttpHeaderProcessor();
|
||||||
|
|
||||||
const std::unique_ptr<HttpRequest>& getHttpRequest() const
|
const std::unique_ptr<HttpRequest>& getHttpRequest() const
|
||||||
{
|
{
|
||||||
return httpRequest_;
|
return httpRequest_;
|
||||||
|
|
Loading…
Reference in New Issue