|
@@ -61,7 +61,7 @@ void init(TSelf* self, TJob job)
|
|
|
}
|
|
|
|
|
|
template<typename TBadgedProtocol, typename TPipeResult>
|
|
|
-OwnPtr<Request> start_request(TBadgedProtocol&& protocol, ConnectionFromClient& client, ByteString const& method, const URL& url, HashMap<ByteString, ByteString> const& headers, ReadonlyBytes body, TPipeResult&& pipe_result, Core::ProxyData proxy_data = {})
|
|
|
+OwnPtr<Request> start_request(TBadgedProtocol&& protocol, i32 request_id, ConnectionFromClient& client, ByteString const& method, const URL& url, HashMap<ByteString, ByteString> const& headers, ReadonlyBytes body, TPipeResult&& pipe_result, Core::ProxyData proxy_data = {})
|
|
|
{
|
|
|
using TJob = typename TBadgedProtocol::Type::JobType;
|
|
|
using TRequest = typename TBadgedProtocol::Type::RequestType;
|
|
@@ -99,13 +99,15 @@ OwnPtr<Request> start_request(TBadgedProtocol&& protocol, ConnectionFromClient&
|
|
|
|
|
|
auto output_stream = MUST(Core::File::adopt_fd(pipe_result.value().write_fd, Core::File::OpenMode::Write));
|
|
|
auto job = TJob::construct(move(request), *output_stream);
|
|
|
- auto protocol_request = TRequest::create_with_job(forward<TBadgedProtocol>(protocol), client, (TJob&)*job, move(output_stream));
|
|
|
+ auto protocol_request = TRequest::create_with_job(forward<TBadgedProtocol>(protocol), client, (TJob&)*job, move(output_stream), request_id);
|
|
|
protocol_request->set_request_fd(pipe_result.value().read_fd);
|
|
|
|
|
|
- if constexpr (IsSame<typename TBadgedProtocol::Type, HttpsProtocol>)
|
|
|
- ConnectionCache::get_or_create_connection(ConnectionCache::g_tls_connection_cache, url, job, proxy_data);
|
|
|
- else
|
|
|
- ConnectionCache::get_or_create_connection(ConnectionCache::g_tcp_connection_cache, url, job, proxy_data);
|
|
|
+ Core::EventLoop::current().deferred_invoke([=] {
|
|
|
+ if constexpr (IsSame<typename TBadgedProtocol::Type, HttpsProtocol>)
|
|
|
+ ConnectionCache::get_or_create_connection(ConnectionCache::g_tls_connection_cache, url, job, proxy_data);
|
|
|
+ else
|
|
|
+ ConnectionCache::get_or_create_connection(ConnectionCache::g_tcp_connection_cache, url, job, proxy_data);
|
|
|
+ });
|
|
|
|
|
|
return protocol_request;
|
|
|
}
|