From d36b333d910ed6886e89b1c105924fec344ebec8 Mon Sep 17 00:00:00 2001 From: pajama-coder Date: Fri, 21 Jun 2024 12:11:55 +0800 Subject: [PATCH] [fix] connect() filter caused a crash as used with a onState callback --- src/filters/connect.cpp | 1 + src/outbound.cpp | 6 ++++-- src/outbound.hpp | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/filters/connect.cpp b/src/filters/connect.cpp index 313a2cd2..cddab12e 100644 --- a/src/filters/connect.cpp +++ b/src/filters/connect.cpp @@ -209,6 +209,7 @@ void Connect::process(Event *evt) { } try { + m_outbound->open(); if (bind) { m_outbound->bind(bind->str()); } else if (options.protocol == Outbound::Protocol::NETLINK) { diff --git a/src/outbound.cpp b/src/outbound.cpp index 0744616f..73965876 100644 --- a/src/outbound.cpp +++ b/src/outbound.cpp @@ -112,6 +112,10 @@ auto Outbound::address() -> pjs::Str* { return m_address; } +void Outbound::open() { + state(Outbound::State::open); +} + void Outbound::close(StreamEnd *eos) { InputContext ic; retain(); @@ -260,7 +264,6 @@ OutboundTCP::OutboundTCP(EventTarget::Input *output, const Outbound::Options &op , SocketTCP(false, Outbound::m_options) , m_resolver(Net::context()) { - state(Outbound::State::open); } OutboundTCP::~OutboundTCP() { @@ -514,7 +517,6 @@ OutboundUDP::OutboundUDP(EventTarget::Input *output, const Outbound::Options &op , SocketUDP(false, Outbound::m_options) , m_resolver(Net::context()) { - state(Outbound::State::open); } OutboundUDP::~OutboundUDP() { diff --git a/src/outbound.hpp b/src/outbound.hpp index 88071a74..a66710c5 100644 --- a/src/outbound.hpp +++ b/src/outbound.hpp @@ -114,6 +114,7 @@ class Outbound : virtual auto get_traffic_in() ->size_t = 0; virtual auto get_traffic_out() ->size_t = 0; + void open(); void close(StreamEnd *eos); protected: