Skip to content

Commit 15bcbd2

Browse files
committed
support: fix shutdown of the sctp gateway. io broker subscription must happen after an event is handled
1 parent 364cf74 commit 15bcbd2

File tree

2 files changed

+7
-9
lines changed

2 files changed

+7
-9
lines changed

lib/gateways/sctp_network_gateway_impl.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -350,11 +350,11 @@ void sctp_network_gateway_impl::handle_data(const span<socket_buffer_type> paylo
350350

351351
void sctp_network_gateway_impl::handle_connection_loss()
352352
{
353-
// Stop listening to new Rx events.
354-
io_sub.reset();
355-
356353
// Notify the connection drop.
357354
ctrl_notifier.on_connection_loss();
355+
356+
// Stop listening to new Rx events.
357+
io_sub.reset();
358358
}
359359

360360
///< Process outgoing PDU and send over SCTP socket to peer.

tests/unittests/e2/e2ap_network_adapter_test.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ class e2ap_network_adapter_test : public ::testing::Test
136136

137137
ric_pcap = std::make_unique<dummy_e2ap_pcap>();
138138
ric_net_adapter = std::make_unique<e2ap_network_adapter>(*epoll_broker, *ric_pcap);
139-
ric_gw = create_sctp_network_gateway({ric_config, *ric_net_adapter, *ric_net_adapter});
139+
auto ric_gw = create_sctp_network_gateway({ric_config, *ric_net_adapter, *ric_net_adapter});
140140
ric_net_adapter->bind_and_listen(std::move(ric_gw));
141141
ric_e2_iface = std::make_unique<dummy_ric_e2>(*ric_net_adapter);
142142
ric_net_adapter->connect_e2ap(ric_e2_iface.get(), ric_e2_iface.get());
@@ -155,9 +155,9 @@ class e2ap_network_adapter_test : public ::testing::Test
155155
cfg = srsran::config_helpers::make_default_e2ap_config();
156156
cfg.e2sm_kpm_enabled = true;
157157

158-
pcap = std::make_unique<dummy_e2ap_pcap>();
159-
net_adapter = std::make_unique<e2ap_network_adapter>(*epoll_broker, *pcap);
160-
e2_agent_gw = create_sctp_network_gateway({e2agent_config, *net_adapter, *net_adapter});
158+
pcap = std::make_unique<dummy_e2ap_pcap>();
159+
net_adapter = std::make_unique<e2ap_network_adapter>(*epoll_broker, *pcap);
160+
auto e2_agent_gw = create_sctp_network_gateway({e2agent_config, *net_adapter, *net_adapter});
161161
net_adapter->connect_gateway(std::move(e2_agent_gw));
162162
du_metrics = std::make_unique<dummy_e2_du_metrics>();
163163
du_meas_provider = std::make_unique<dummy_e2sm_kpm_du_meas_provider>();
@@ -187,15 +187,13 @@ class e2ap_network_adapter_test : public ::testing::Test
187187
std::unique_ptr<dummy_e2ap_pcap> ric_pcap;
188188
std::unique_ptr<e2ap_asn1_packer> ric_packer;
189189
std::unique_ptr<e2ap_network_adapter> ric_net_adapter;
190-
std::unique_ptr<sctp_network_gateway> ric_gw;
191190

192191
// E2 agent
193192
e2ap_configuration cfg;
194193
timer_factory factory;
195194
timer_manager timers;
196195
std::unique_ptr<e2ap_network_adapter> net_adapter;
197196
manual_task_worker task_exec{128};
198-
std::unique_ptr<sctp_network_gateway> e2_agent_gw;
199197
std::unique_ptr<dummy_e2ap_pcap> pcap;
200198
std::unique_ptr<e2_subscription_manager> e2_subscription_mngr;
201199
std::unique_ptr<e2sm_handler> e2sm_packer;

0 commit comments

Comments
 (0)