From ae9ec125618214da09e19b1f647f40bb8a35fc20 Mon Sep 17 00:00:00 2001 From: moret Date: Mon, 11 Aug 2008 10:21:55 +0000 Subject: [PATCH] Fix NetMaster close() git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2777 0c269be4-1314-0410-8aa9-9f06e86f4224 --- common/JackNetInterface.cpp | 11 ++++------- common/JackNetInterface.h | 9 ++++++--- common/JackNetManager.cpp | 14 +++++++++++--- common/JackNetManager.h | 2 +- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/common/JackNetInterface.cpp b/common/JackNetInterface.cpp index c1a12a8a..99103732 100644 --- a/common/JackNetInterface.cpp +++ b/common/JackNetInterface.cpp @@ -34,24 +34,21 @@ namespace Jack { jack_log ( "JackNetInterface::JackNetInterface ip = %s port = %d", ip, port ); - fMulticastIP = new char[strlen ( ip ) + 1]; - strcpy ( fMulticastIP, ip ); + fMulticastIP = strdup ( ip ); } - JackNetInterface::JackNetInterface ( session_params_t& params, JackNetSocket& socket ) : fSocket ( socket ) + JackNetInterface::JackNetInterface ( session_params_t& params, JackNetSocket& socket, const char* multicast_ip ) : fSocket ( socket ) { jack_log ( "JackNetInterface::JackNetInterface ID = %d", params.fID ); fParams = params; - fMulticastIP = new char[strlen ( fSocket.GetSendIP() ) + 1]; - strcpy ( fMulticastIP, fSocket.GetSendIP() ); + fMulticastIP = strdup ( multicast_ip ); } JackNetInterface::~JackNetInterface() { jack_log ( "JackNetInterface::~JackNetInterface" ); fSocket.Close(); - SocketAPIEnd(); delete[] fTxBuffer; delete[] fRxBuffer; delete[] fMulticastIP; @@ -479,7 +476,7 @@ namespace Jack void JackNetMasterInterface::Exit() { - jack_log ( "JackNetMaster::Exit, ID %u", fParams.fID ); + jack_log ( "JackNetMasterInterface::Exit, ID %u", fParams.fID ); //stop process fRunning = false; diff --git a/common/JackNetInterface.h b/common/JackNetInterface.h index bbad6acc..5f4d7a45 100644 --- a/common/JackNetInterface.h +++ b/common/JackNetInterface.h @@ -74,7 +74,7 @@ namespace Jack JackNetInterface() {} JackNetInterface ( const char* ip, int port ); - JackNetInterface ( session_params_t& params, JackNetSocket& socket ); + JackNetInterface ( session_params_t& params, JackNetSocket& socket, const char* multicast_ip ); public: virtual ~JackNetInterface(); @@ -105,7 +105,9 @@ namespace Jack JackNetSlaveInterface ( const char* ip, int port ) : JackNetInterface ( ip, port ) {} ~JackNetSlaveInterface() - {} + { + SocketAPIEnd(); + } }; /** @@ -131,7 +133,8 @@ namespace Jack public: JackNetMasterInterface() : fRunning ( false ) {} - JackNetMasterInterface ( session_params_t& params, JackNetSocket& socket ) : JackNetInterface ( params, socket ) + JackNetMasterInterface ( session_params_t& params, JackNetSocket& socket, const char* multicast_ip ) + : JackNetInterface ( params, socket, multicast_ip ) {} ~JackNetMasterInterface() {} diff --git a/common/JackNetManager.cpp b/common/JackNetManager.cpp index bbab0261..b1af3e08 100644 --- a/common/JackNetManager.cpp +++ b/common/JackNetManager.cpp @@ -32,10 +32,11 @@ namespace Jack { //JackNetMaster****************************************************************************************************** - JackNetMaster::JackNetMaster ( JackNetSocket& socket, session_params_t& params ) - : JackNetMasterInterface ( params, socket ) + JackNetMaster::JackNetMaster ( JackNetSocket& socket, session_params_t& params, const char* multicast_ip ) + : JackNetMasterInterface ( params, socket, multicast_ip ) { jack_log ( "JackNetMaster::JackNetMaster" ); + //settings fClientName = const_cast ( fParams.fName ); fJackClient = NULL; @@ -87,6 +88,7 @@ namespace Jack JackNetMaster::~JackNetMaster() { jack_log ( "JackNetMaster::~JackNetMaster, ID %u.", fParams.fID ); + if ( fJackClient ) { jack_deactivate ( fJackClient ); @@ -194,6 +196,7 @@ namespace Jack void JackNetMaster::FreePorts() { jack_log ( "JackNetMaster::FreePorts, ID %u", fParams.fID ); + uint port_index; for ( port_index = 0; port_index < fParams.fSendAudioChannels; port_index++ ) if ( fAudioCapturePorts[port_index] ) @@ -299,6 +302,7 @@ namespace Jack JackNetMasterManager::JackNetMasterManager ( jack_client_t* client, const JSList* params ) : fSocket() { jack_log ( "JackNetMasterManager::JackNetMasterManager" ); + fManagerClient = client; fManagerName = jack_get_client_name ( fManagerClient ); fMulticastIP = DEFAULT_MULTICAST_IP; @@ -460,6 +464,7 @@ namespace Jack JackNetMaster* JackNetMasterManager::MasterInit ( session_params_t& params ) { jack_log ( "JackNetMasterManager::MasterInit, Slave : %s", params.fName ); + //settings fSocket.GetName ( params.fMasterNetName ); params.fID = ++fGlobalID; @@ -470,7 +475,7 @@ namespace Jack SetSlaveName ( params ); //create a new master and add it to the list - JackNetMaster* master = new JackNetMaster ( fSocket, params ); + JackNetMaster* master = new JackNetMaster ( fSocket, params, fMulticastIP ); if ( master->Init() ) { fMasterList.push_back ( master ); @@ -483,6 +488,7 @@ namespace Jack void JackNetMasterManager::SetSlaveName ( session_params_t& params ) { jack_log ( "JackNetMasterManager::SetSlaveName" ); + master_list_it_t it; for ( it = fMasterList.begin(); it != fMasterList.end(); it++ ) if ( strcmp ( ( *it )->fParams.fName, params.fName ) == 0 ) @@ -492,6 +498,7 @@ namespace Jack master_list_it_t JackNetMasterManager::FindMaster ( uint32_t id ) { jack_log ( "JackNetMasterManager::FindMaster, ID %u.", id ); + master_list_it_t it; for ( it = fMasterList.begin(); it != fMasterList.end(); it++ ) if ( ( *it )->fParams.fID == id ) @@ -502,6 +509,7 @@ namespace Jack int JackNetMasterManager::KillMaster ( session_params_t* params ) { jack_log ( "JackNetMasterManager::KillMaster, ID %u.", params->fID ); + master_list_it_t master = FindMaster ( params->fID ); if ( master != fMasterList.end() ) { diff --git a/common/JackNetManager.h b/common/JackNetManager.h index 8bee0a41..14057ace 100644 --- a/common/JackNetManager.h +++ b/common/JackNetManager.h @@ -69,7 +69,7 @@ namespace Jack int Process(); public: - JackNetMaster ( JackNetSocket& socket, session_params_t& params ); + JackNetMaster ( JackNetSocket& socket, session_params_t& params, const char* multicast_ip ); ~JackNetMaster (); };