mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 14:57:35 +00:00
LibCore: Make NetworkJob::start()
take a Stream::BufferedSocketBase&
It used to take a plain `Socket` and cast it to a `BufferedSocketBase`, which can lead to unpleasant result when used with a non-buffered `Socket`.
This commit is contained in:
parent
5fc873f53b
commit
ff47223301
6 changed files with 8 additions and 8 deletions
|
@ -41,7 +41,7 @@ public:
|
||||||
DetachFromSocket,
|
DetachFromSocket,
|
||||||
CloseSocket,
|
CloseSocket,
|
||||||
};
|
};
|
||||||
virtual void start(Core::Socket&) = 0;
|
virtual void start(Core::BufferedSocketBase&) = 0;
|
||||||
virtual void shutdown(ShutdownMode) = 0;
|
virtual void shutdown(ShutdownMode) = 0;
|
||||||
virtual void fail(Error error) { did_fail(error); }
|
virtual void fail(Error error) { did_fail(error); }
|
||||||
|
|
||||||
|
|
|
@ -20,10 +20,10 @@ Job::Job(GeminiRequest const& request, Stream& output_stream)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void Job::start(Core::Socket& socket)
|
void Job::start(Core::BufferedSocketBase& socket)
|
||||||
{
|
{
|
||||||
VERIFY(!m_socket);
|
VERIFY(!m_socket);
|
||||||
m_socket = verify_cast<Core::BufferedSocketBase>(&socket);
|
m_socket = &socket;
|
||||||
on_socket_connected();
|
on_socket_connected();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ public:
|
||||||
explicit Job(GeminiRequest const&, Stream&);
|
explicit Job(GeminiRequest const&, Stream&);
|
||||||
virtual ~Job() override = default;
|
virtual ~Job() override = default;
|
||||||
|
|
||||||
virtual void start(Core::Socket&) override;
|
virtual void start(Core::BufferedSocketBase&) override;
|
||||||
virtual void shutdown(ShutdownMode) override;
|
virtual void shutdown(ShutdownMode) override;
|
||||||
|
|
||||||
GeminiResponse* response() { return static_cast<GeminiResponse*>(Core::NetworkJob::response()); }
|
GeminiResponse* response() { return static_cast<GeminiResponse*>(Core::NetworkJob::response()); }
|
||||||
|
|
|
@ -92,10 +92,10 @@ Job::Job(HttpRequest&& request, Stream& output_stream)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void Job::start(Core::Socket& socket)
|
void Job::start(Core::BufferedSocketBase& socket)
|
||||||
{
|
{
|
||||||
VERIFY(!m_socket);
|
VERIFY(!m_socket);
|
||||||
m_socket = static_cast<Core::BufferedSocketBase*>(&socket);
|
m_socket = &socket;
|
||||||
dbgln_if(HTTPJOB_DEBUG, "Reusing previous connection for {}", url());
|
dbgln_if(HTTPJOB_DEBUG, "Reusing previous connection for {}", url());
|
||||||
deferred_invoke([this] {
|
deferred_invoke([this] {
|
||||||
dbgln_if(HTTPJOB_DEBUG, "HttpJob: on_connected callback");
|
dbgln_if(HTTPJOB_DEBUG, "HttpJob: on_connected callback");
|
||||||
|
|
|
@ -22,7 +22,7 @@ public:
|
||||||
explicit Job(HttpRequest&&, Stream&);
|
explicit Job(HttpRequest&&, Stream&);
|
||||||
virtual ~Job() override = default;
|
virtual ~Job() override = default;
|
||||||
|
|
||||||
virtual void start(Core::Socket&) override;
|
virtual void start(Core::BufferedSocketBase&) override;
|
||||||
virtual void shutdown(ShutdownMode) override;
|
virtual void shutdown(ShutdownMode) override;
|
||||||
|
|
||||||
Core::Socket const* socket() const { return m_socket; }
|
Core::Socket const* socket() const { return m_socket; }
|
||||||
|
|
|
@ -56,7 +56,7 @@ struct Proxy {
|
||||||
template<typename Socket, typename SocketStorageType = Socket>
|
template<typename Socket, typename SocketStorageType = Socket>
|
||||||
struct Connection {
|
struct Connection {
|
||||||
struct JobData {
|
struct JobData {
|
||||||
Function<void(Core::Socket&)> start {};
|
Function<void(Core::BufferedSocketBase&)> start {};
|
||||||
Function<void(Core::NetworkJob::Error)> fail {};
|
Function<void(Core::NetworkJob::Error)> fail {};
|
||||||
Function<Vector<TLS::Certificate>()> provide_client_certificates {};
|
Function<Vector<TLS::Certificate>()> provide_client_certificates {};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue