diff --git a/Kernel/Net/TCPSocket.h b/Kernel/Net/TCPSocket.h index 1a1c1cbced..bfbe5eda20 100644 --- a/Kernel/Net/TCPSocket.h +++ b/Kernel/Net/TCPSocket.h @@ -6,7 +6,8 @@ #include #include -class TCPSocket final : public IPv4Socket { +class TCPSocket final : public IPv4Socket + , public Weakable { public: static void for_each(Function); static NonnullRefPtr create(int protocol); @@ -129,7 +130,8 @@ public: static RefPtr from_endpoints(const IPv4Address& local_address, u16 local_port, const IPv4Address& peer_address, u16 peer_port); RefPtr create_client(const IPv4Address& local_address, u16 local_port, const IPv4Address& peer_address, u16 peer_port); - void set_originator(RefPtr originator) { m_originator = originator; } + void set_originator(TCPSocket& originator) { m_originator = originator.make_weak_ptr(); } + bool has_originator() { return !!m_originator; } void release_to_originator(); void release_for_accept(RefPtr); @@ -150,7 +152,7 @@ private: virtual KResult protocol_bind() override; virtual KResult protocol_listen() override; - RefPtr m_originator; + WeakPtr m_originator; HashMap> m_pending_release_for_accept; Direction m_direction { Direction::Unspecified }; Error m_error { Error::None };