1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 23:37:35 +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:
Ali Mohammad Pur 2022-02-02 19:21:55 +03:30 committed by Andreas Kling
parent 7a95c451a3
commit aafc451016
47 changed files with 841 additions and 1157 deletions

View file

@ -10,7 +10,7 @@
namespace Core {
NetworkJob::NetworkJob(OutputStream& output_stream)
NetworkJob::NetworkJob(Core::Stream::Stream& output_stream)
: m_output_stream(output_stream)
{
}
@ -19,7 +19,7 @@ NetworkJob::~NetworkJob()
{
}
void NetworkJob::start(NonnullRefPtr<Core::Socket>)
void NetworkJob::start(Core::Stream::Socket&)
{
}

View file

@ -8,7 +8,9 @@
#include <AK/Function.h>
#include <AK/Stream.h>
#include <LibCore/Forward.h>
#include <LibCore/Object.h>
#include <LibCore/Stream.h>
namespace Core {
@ -39,8 +41,9 @@ public:
DetachFromSocket,
CloseSocket,
};
virtual void start(NonnullRefPtr<Core::Socket>) = 0;
virtual void start(Core::Stream::Socket&) = 0;
virtual void shutdown(ShutdownMode) = 0;
virtual void fail(Error error) { did_fail(error); }
void cancel()
{
@ -49,16 +52,16 @@ public:
}
protected:
NetworkJob(OutputStream&);
NetworkJob(Core::Stream::Stream&);
void did_finish(NonnullRefPtr<NetworkResponse>&&);
void did_fail(Error);
void did_progress(Optional<u32> total_size, u32 downloaded);
size_t do_write(ReadonlyBytes bytes) { return m_output_stream.write(bytes); }
ErrorOr<size_t> do_write(ReadonlyBytes bytes) { return m_output_stream.write(bytes); }
private:
RefPtr<NetworkResponse> m_response;
OutputStream& m_output_stream;
Core::Stream::Stream& m_output_stream;
Error m_error { Error::None };
};