@@ -45,7 +45,13 @@ class f1u_gateway_cu_bearer : public f1u_cu_up_gateway_bearer
4545
4646 ~f1u_gateway_cu_bearer () override { stop (); }
4747
48- void stop () override { disconnector.disconnect_cu_bearer (ul_tnl_info); }
48+ void stop () override
49+ {
50+ if (not stopped) {
51+ disconnector.disconnect_cu_bearer (ul_tnl_info);
52+ }
53+ stopped = true ;
54+ }
4955
5056 void attach_du_notifier (srs_du::f1u_du_gateway_bearer_rx_notifier& notifier_,
5157 const up_transport_layer_info& dl_tnl_info_)
@@ -77,6 +83,7 @@ class f1u_gateway_cu_bearer : public f1u_cu_up_gateway_bearer
7783 }
7884
7985private:
86+ bool stopped = false ;
8087 srs_cu_up::f1u_bearer_logger logger;
8188 srs_du::f1u_du_gateway_bearer_rx_notifier* notifier = nullptr ;
8289 srs_cu_up::f1u_bearer_disconnector& disconnector;
@@ -112,7 +119,13 @@ class f1u_gateway_du_bearer : public srs_du::f1u_du_gateway_bearer
112119
113120 ~f1u_gateway_du_bearer () override { disconnector.remove_du_bearer (dl_tnl_info); }
114121
115- void stop () override { disconnector.remove_du_bearer (dl_tnl_info); }
122+ void stop () override
123+ {
124+ if (not stopped) {
125+ disconnector.remove_du_bearer (dl_tnl_info);
126+ }
127+ stopped = true ;
128+ }
116129
117130 void attach_cu_notifier (f1u_cu_up_gateway_bearer_rx_notifier& handler_)
118131 {
@@ -135,8 +148,8 @@ class f1u_gateway_du_bearer : public srs_du::f1u_du_gateway_bearer
135148 }
136149 notifier->on_new_pdu (std::move (msg));
137150 };
138-
139- srs_du::f1u_du_gateway_bearer_rx_notifier* f1u_rx = nullptr ;
151+ bool stopped = false ;
152+ srs_du::f1u_du_gateway_bearer_rx_notifier* f1u_rx = nullptr ;
140153 up_transport_layer_info ul_up_tnl_info;
141154 up_transport_layer_info dl_tnl_info;
142155
0 commit comments