mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 22:57:34 +00:00
Userland: Convert TLS::TLSv12 to a Core::Stream::Socket
This commit converts TLS::TLSv12 to a Core::Stream object, and in the process allows TLS to now wrap other Core::Stream::Socket objects. As a large part of LibHTTP and LibGemini depend on LibTLS's interface, this also converts those to support Core::Stream, which leads to a simplification of LibHTTP (as there's no need to care about the underlying socket type anymore). Note that RequestServer now controls the TLS socket options, which is a better place anyway, as RS is the first receiver of the user-requested options (though this is currently not particularly useful).
This commit is contained in:
parent
7a95c451a3
commit
aafc451016
47 changed files with 841 additions and 1157 deletions
|
@ -36,7 +36,7 @@ void init(TSelf* self, TJob job)
|
|||
if (auto* response = self->job().response()) {
|
||||
self->set_status_code(response->code());
|
||||
self->set_response_headers(response->headers());
|
||||
self->set_downloaded_size(self->output_stream().size());
|
||||
self->set_downloaded_size(response->downloaded_size());
|
||||
}
|
||||
|
||||
// if we didn't know the total size, pretend that the request finished successfully
|
||||
|
@ -50,8 +50,12 @@ void init(TSelf* self, TJob job)
|
|||
self->did_progress(total, current);
|
||||
};
|
||||
if constexpr (requires { job->on_certificate_requested; }) {
|
||||
job->on_certificate_requested = [self](auto&) {
|
||||
job->on_certificate_requested = [job, self] {
|
||||
self->did_request_certificates();
|
||||
Core::EventLoop::current().spin_until([&] {
|
||||
return job->received_client_certificates();
|
||||
});
|
||||
return job->take_client_certificates();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -79,8 +83,7 @@ OwnPtr<Request> start_request(TBadgedProtocol&& protocol, ClientConnection& clie
|
|||
return {};
|
||||
request.set_body(allocated_body_result.release_value());
|
||||
|
||||
auto output_stream = make<OutputFileStream>(pipe_result.value().write_fd);
|
||||
output_stream->make_unbuffered();
|
||||
auto output_stream = MUST(Core::Stream::File::adopt_fd(pipe_result.value().write_fd, Core::Stream::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));
|
||||
protocol_request->set_request_fd(pipe_result.value().read_fd);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue