From daf2f95c8b0194498041679da3ef1248e33f9167 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 14 Jul 2025 13:33:00 -0400 Subject: [PATCH] MT#62181 use deque to contain sockets and servers No functional changes. Change-Id: I8accc263c101c3bc74ce35130851b3e51e953eee --- core/SipCtrlInterface.cpp | 119 ++++++++------------------------------ core/SipCtrlInterface.h | 20 ++----- 2 files changed, 30 insertions(+), 109 deletions(-) diff --git a/core/SipCtrlInterface.cpp b/core/SipCtrlInterface.cpp index c0afb207..1144c154 100644 --- a/core/SipCtrlInterface.cpp +++ b/core/SipCtrlInterface.cpp @@ -61,18 +61,6 @@ bool _SipCtrlInterface::log_parsed_messages = true; int _SipCtrlInterface::udp_rcvbuf = -1; -int _SipCtrlInterface::alloc_udp_structs() -{ - udp_sockets = new udp_trsp_socket*[ AmConfig::SIP_Ifs.size() ]; - udp_servers = new udp_trsp* [ AmConfig::SIPServerThreads - * AmConfig::SIP_Ifs.size() ]; - - if(udp_sockets && udp_servers) - return 0; - - return -1; -} - int _SipCtrlInterface::init_udp_servers(int if_num) { udp_trsp_socket* udp_socket = @@ -103,30 +91,16 @@ int _SipCtrlInterface::init_udp_servers(int if_num) } trans_layer::instance()->register_transport(udp_socket); - udp_sockets[if_num] = udp_socket; + udp_sockets.push_back(udp_socket); inc_ref(udp_socket); - nr_udp_sockets++; for(int j=0; jadd_threads(AmConfig::SIPServerThreads); trans_layer::instance()->register_transport(tcp_socket); - tcp_sockets[if_num] = tcp_socket; + tcp_sockets.push_back(tcp_socket); inc_ref(tcp_socket); - nr_tcp_sockets++; - tcp_servers[if_num] = new tcp_trsp(tcp_socket); - nr_tcp_servers++; + tcp_servers.push_back(new tcp_trsp(tcp_socket)); return 0; } @@ -222,11 +194,6 @@ int _SipCtrlInterface::load() DBG("assuming SIP default settings.\n"); } - if(alloc_udp_structs() < 0) { - ERROR("no enough memory to alloc UDP structs"); - return -1; - } - // Init UDP transport instances for(unsigned int i=0; iregister_ua(this); } @@ -376,19 +334,14 @@ int _SipCtrlInterface::run(SdNotifier& sd) DBG("Starting SIP control interface\n"); wheeltimer::instance()->start(); - if (NULL != udp_servers) { - for(int i=0; istart(sd); - } - } + for (auto it = udp_servers.begin(); it != udp_servers.end(); it++) + (*it)->start(sd); - if (NULL != tcp_servers) { - for(int i=0; istart(sd); - } - } + for (auto it = tcp_servers.begin(); it != tcp_servers.end(); it++) + (*it)->start(sd); DBG("SIP control interface ending\n"); + return 0; } @@ -401,52 +354,28 @@ void _SipCtrlInterface::cleanup() { DBG("Stopping SIP control interface threads\n"); - if (NULL != udp_servers) { - for(int i=0; istop(); - udp_servers[i]->join(); - delete udp_servers[i]; - } - - delete [] udp_servers; - udp_servers = NULL; - nr_udp_servers = 0; + for (auto it = udp_servers.begin(); it != udp_servers.end(); it++) { + (*it)->stop(); + (*it)->join(); + delete *it; } - if (NULL != tcp_servers) { - for(int i=0; istop(); - tcp_servers[i]->join(); - delete tcp_servers[i]; - } - - delete [] tcp_servers; - tcp_servers = NULL; - nr_tcp_servers = 0; + for (auto it = tcp_servers.begin(); it != tcp_servers.end(); it++) { + (*it)->stop(); + (*it)->join(); + delete *it; } trans_layer::instance()->clear_transports(); - if (NULL != udp_sockets) { - for(int i=0; istop(); diff --git a/core/SipCtrlInterface.h b/core/SipCtrlInterface.h index 6eb1719b..0ea98405 100644 --- a/core/SipCtrlInterface.h +++ b/core/SipCtrlInterface.h @@ -34,8 +34,10 @@ #include #include +#include using std::string; using std::list; +using std::deque; class AmSipRequest; class AmSipReply; @@ -64,22 +66,12 @@ class _SipCtrlInterface: AmCondition stopped; - unsigned short nr_udp_sockets; - udp_trsp_socket** udp_sockets; + deque udp_sockets; + deque udp_servers; + deque tcp_sockets; + deque tcp_servers; - unsigned short nr_udp_servers; - udp_trsp** udp_servers; - - unsigned short nr_tcp_sockets; - tcp_server_socket** tcp_sockets; - - unsigned short nr_tcp_servers; - tcp_trsp** tcp_servers; - - int alloc_udp_structs(); int init_udp_servers(int if_num); - - int alloc_tcp_structs(); int init_tcp_servers(int if_num); public: