diff --git a/sflphone-client-gnome/pixmaps/Makefile.am b/sflphone-client-gnome/pixmaps/Makefile.am index 33dc526e3ffdce17f9f6263f09eabb4079192978..56a6e20755c43cd3f4e87ef2bcf6872627f228ec 100644 --- a/sflphone-client-gnome/pixmaps/Makefile.am +++ b/sflphone-client-gnome/pixmaps/Makefile.am @@ -25,6 +25,7 @@ buttons_DATA = current.svg \ busy.svg \ sflphone.svg \ sflphone_small.svg \ + sflphone_notif.svg \ stock_person.svg \ icon_rec.svg \ rec_call.svg \ diff --git a/sflphone-client-gnome/src/config/audioconf.c b/sflphone-client-gnome/src/config/audioconf.c index 8d3a55c7d40bee20bc371fad3fb88aa2c3dc340d..308131207f5c401c8753ec6701c0915edf651c7a 100644 --- a/sflphone-client-gnome/src/config/audioconf.c +++ b/sflphone-client-gnome/src/config/audioconf.c @@ -770,9 +770,14 @@ GtkWidget* noise_box() static void record_path_changed( GtkFileChooser *chooser , GtkLabel *label UNUSED) { + DEBUG("record_path_changed"); + gchar* path; - path = gtk_file_chooser_get_uri( GTK_FILE_CHOOSER( chooser )); - path = g_strndup (path + 7, strlen(path) - 7); + // path = gtk_file_chooser_get_uri( GTK_FILE_CHOOSER( chooser )); + // DEBUG("path1 %s", path); + path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER( chooser )); + DEBUG("path2 %s", path); + // path = g_strndup (path + 6, strlen(path) - 6); dbus_set_record_path( path ); } @@ -853,9 +858,9 @@ GtkWidget* create_audio_configuration() GtkWidget *folderChooser; gchar *dftPath; - /* Get the path where to save audio files */ - dftPath = dbus_get_record_path ();/* Get the path where to save audio files */ + /* Get the path where to save audio files */ dftPath = dbus_get_record_path (); + DEBUG("load recording path %s\n", dftPath); gnome_main_section_new_with_table (_("Recordings"), &frame, &table, 1, 2); gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0); diff --git a/sflphone-client-gnome/src/config/preferencesdialog.c b/sflphone-client-gnome/src/config/preferencesdialog.c index b472887b6d4c4859341d5a7a7a168d4072afc605..d804865fa4dba066698196f1538f8ac3c4d28458 100644 --- a/sflphone-client-gnome/src/config/preferencesdialog.c +++ b/sflphone-client-gnome/src/config/preferencesdialog.c @@ -87,10 +87,10 @@ start_hidden( void ) dbus_start_hidden(); } -static void -set_popup_mode( void ) +static void set_popup_mode (GtkWidget *widget, gpointer *userdata) { - dbus_switch_popup_mode(); + if (dbus_popup_mode () || gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) + dbus_switch_popup_mode (); } @@ -452,14 +452,15 @@ create_general_settings () gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0); GtkWidget* trayItem1 = gtk_radio_button_new_with_mnemonic(NULL, _("_Popup main window on incoming call")); - gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(trayItem1), dbus_popup_mode() ); - g_signal_connect(G_OBJECT( trayItem1 ), "clicked", G_CALLBACK( set_popup_mode ) , NULL); + g_signal_connect(G_OBJECT (trayItem1), "toggled", G_CALLBACK (set_popup_mode), NULL); gtk_table_attach( GTK_TABLE(table), trayItem1, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 5); - trayItem = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(trayItem1), _("Ne_ver popup main window")); - gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(trayItem), !dbus_popup_mode() ); + trayItem = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON(trayItem1), _("Ne_ver popup main window")); gtk_table_attach( GTK_TABLE(table), trayItem, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 5); + // Toggle according to the user configuration + dbus_popup_mode () ? gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (trayItem1), TRUE) : gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (trayItem), TRUE); + trayItem = gtk_check_button_new_with_mnemonic(_("Hide SFLphone window on _startup")); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(trayItem), dbus_is_start_hidden() ); g_signal_connect(G_OBJECT( trayItem ) , "clicked" , G_CALLBACK( start_hidden ) , NULL); diff --git a/sflphone-client-gnome/src/dbus/dbus.c b/sflphone-client-gnome/src/dbus/dbus.c index 557351e80794d179f8ddeeb6f05233b112b46a6a..7f9f0f732999dc7e1533ca02d14e18ded5b4dd9e 100644 --- a/sflphone-client-gnome/src/dbus/dbus.c +++ b/sflphone-client-gnome/src/dbus/dbus.c @@ -64,7 +64,8 @@ incoming_call_cb (DBusGProxy *proxy UNUSED, create_new_call (CALL, CALL_STATE_INCOMING, g_strdup(callID), g_strdup(accountID), peer_name, peer_number, &c); #if GTK_CHECK_VERSION(2,10,0) - status_tray_icon_blink( TRUE ); + status_tray_icon_blink (TRUE); + popup_main_window (); #endif set_timestamp (&c->_time_start); diff --git a/sflphone-client-gnome/src/sflphone_const.h b/sflphone-client-gnome/src/sflphone_const.h index 89fa9d3b2ace59d28379987dbc058746cff08e51..d76373fd71bba4c63cd2d8b69fbcbe3d8df2e9b7 100644 --- a/sflphone-client-gnome/src/sflphone_const.h +++ b/sflphone-client-gnome/src/sflphone_const.h @@ -29,6 +29,7 @@ */ #define LOGO ICONS_DIR "/sflphone.svg" +#define LOGO_NOTIF ICONS_DIR "/sflphone_notif.svg" #define LOGO_SMALL ICONS_DIR "/sflphone_small.svg" #define CURRENT_CALLS "current_calls" diff --git a/sflphone-client-gnome/src/statusicon.c b/sflphone-client-gnome/src/statusicon.c index 9757996a6aedd89beec22c308f112e6cd20a73ed..99b8dcc2c6ccec24d66d924fe44b11a4cea5adcd 100644 --- a/sflphone-client-gnome/src/statusicon.c +++ b/sflphone-client-gnome/src/statusicon.c @@ -29,6 +29,16 @@ GtkStatusIcon* status; GtkWidget * show_menu_item; gboolean __minimized = MINIMIZED; + +void popup_main_window (void) +{ + if (__POPUP_WINDOW) + { + gtk_widget_show (get_main_window ()); + set_minimized (FALSE); + } +} + void status_quit ( void * foo UNUSED) { @@ -41,31 +51,27 @@ status_icon_unminimize() gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(show_menu_item), TRUE); } -gboolean -main_widget_minimized() +gboolean main_widget_minimized() { return __minimized; } -void -show_hide (void) +void show_hide (void) { - if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(show_menu_item))) - { - gtk_widget_show(GTK_WIDGET(get_main_window())); - set_minimized( !MINIMIZED ); - } - else - { - gtk_widget_hide(GTK_WIDGET(get_main_window())); - set_minimized( MINIMIZED ); - } - + if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(show_menu_item))) + { + gtk_widget_show(GTK_WIDGET(get_main_window())); + set_minimized( !MINIMIZED ); + } + else + { + gtk_widget_hide(GTK_WIDGET(get_main_window())); + set_minimized( MINIMIZED ); + } } -void -status_click (GtkStatusIcon *status_icon UNUSED, void * foo UNUSED) +void status_click (GtkStatusIcon *status_icon UNUSED, void * foo UNUSED) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(show_menu_item), !gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(show_menu_item))); @@ -80,8 +86,7 @@ void menu (GtkStatusIcon *status_icon, status_icon, button, activate_time); } -GtkWidget * -create_menu() +GtkWidget* create_menu() { GtkWidget * menu; GtkWidget * menu_items; @@ -129,10 +134,13 @@ show_status_icon() g_free(tip); } -void -status_tray_icon_blink( gboolean active ) +void status_tray_icon_blink (gboolean active) { - gtk_status_icon_set_blinking( status , active ); + // Set a different icon to notify of an event + active ? gtk_status_icon_set_from_file (status, LOGO_NOTIF) : gtk_status_icon_set_from_file (status, LOGO); + // Do not blink anymore ... + // gtk_status_icon_set_blinking (status, active); + } GtkStatusIcon* diff --git a/sflphone-client-gnome/src/statusicon.h b/sflphone-client-gnome/src/statusicon.h index a269bde64d9d7da179dc8528a053364229593fdf..4a841c4ea0ae2c81a9dfcaf74b32320bd4e7f51b 100644 --- a/sflphone-client-gnome/src/statusicon.h +++ b/sflphone-client-gnome/src/statusicon.h @@ -30,6 +30,11 @@ * @brief The status icon in the system tray. */ +/** + * Popup the main window. Used on incoming calls + */ +void popup_main_window (void); + /** * Create the status icon */ diff --git a/sflphone-common/src/dbus/configurationmanager.cpp b/sflphone-common/src/dbus/configurationmanager.cpp index 34fefc53164a6a7dd7c15c405acc2ced1237b034..d971993194406f44ea716573ebe672a2a3ede843 100644 --- a/sflphone-common/src/dbus/configurationmanager.cpp +++ b/sflphone-common/src/dbus/configurationmanager.cpp @@ -715,7 +715,7 @@ ConfigurationManager::getMailNotify (void) int ConfigurationManager::getSipAddress (void) { - return Manager::instance().getSipAddress(); + return Manager::instance().getLocalIp2IpPort(); // return "ok"; } @@ -724,7 +724,7 @@ void ConfigurationManager::setSipAddress (const std::string& address) { _debug ("Manager received setSipAddress: %s", address.c_str()); - Manager::instance().setSipAddress (address); + Manager::instance().setLocalIp2IpInfo(address); } std::map<std::string, int32_t> ConfigurationManager::getAddressbookSettings (void) diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp index a3a8d819ecb47b9c3e219dd0786bc3e5484a7bf0..884705ab1f60b1d199e3a408d0e89ae4acb1cb14 100644 --- a/sflphone-common/src/managerimpl.cpp +++ b/sflphone-common/src/managerimpl.cpp @@ -3196,35 +3196,50 @@ void ManagerImpl::setMicVolume (unsigned short mic_vol) } -void ManagerImpl::setSipAddress (const std::string& address) -{ - _debug ("Setting new ip to ip address %s", address.c_str()); + + +void ManagerImpl::setLocalIp2IpInfo(const std::string& address) +{ std::string ip_address = std::string(address); int index = ip_address.find_first_of(":"); std::string local_address = ip_address.substr(0,index); std::string local_port = ip_address.substr(index+1); + int newPort = atoi(local_port.c_str()); - _debug ("Setting new ip to ip address %s and port %s", local_address.c_str(), local_port.c_str()); + _debug ("Setting new address %s and port %s for default account (ip to ip calls)", local_address.c_str(), local_port.c_str()); int prevPort = getConfigInt (IP2IP_PROFILE, LOCAL_PORT); std::string prevAddress = getConfigString(IP2IP_PROFILE, LOCAL_ADDRESS); - if (prevPort != atoi(local_port.c_str()) || (prevAddress.compare(local_address) != 0)) { + if ((prevPort != newPort) || (prevAddress.compare(local_address) != 0)) { + + + if(_directIpAccount) { + + SIPAccount* account = dynamic_cast<SIPAccount*>(_directIpAccount); + + account->setLocalPort(newPort); + account->setLocalAddress(local_address); + } + setConfig (IP2IP_PROFILE, LOCAL_ADDRESS, local_address); - setConfig (IP2IP_PROFILE, LOCAL_PORT, atoi(local_port.c_str())); + setConfig (IP2IP_PROFILE, LOCAL_PORT, newPort); + + SIPVoIPLink* siplink = SIPVoIPLink::instance (""); + // if(siplink) + siplink->updateAccountInfo(_directIpAccount->getAccountID()); // this->restartPJSIP (); } } -int ManagerImpl::getSipAddress (void) +int ManagerImpl::getLocalIp2IpPort (void) { - // return getConfigInt (PREFERENCES , CONFIG_SIP_PORT); - /* The 'global' SIP port is set throug the IP profile */ - _debug("-----------------------------------------getSipAddress %i", getConfigInt (IP2IP_PROFILE, LOCAL_PORT)); + /* The SIP port used for default account (IP to IP) calls */ + _debug("Default account port %i", getConfigInt (IP2IP_PROFILE, LOCAL_PORT)); return getConfigInt (IP2IP_PROFILE, LOCAL_PORT); @@ -4115,6 +4130,8 @@ short ManagerImpl::loadAccountMap() { + _debug("ManagerImpl::loadAccountMap\n"); + short nbAccount = 0; TokenList sections = _config.getSections(); std::string accountType; @@ -4123,7 +4140,7 @@ ManagerImpl::loadAccountMap() TokenList::iterator iter = sections.begin(); - // Those calls that are placed to an uri that cannot be + // Those calls that are placed to an uri that cannot be // associated to an account are using that special account. // An account, that is not account, in the sense of // registration. This is useful since the Account object @@ -4131,6 +4148,17 @@ ManagerImpl::loadAccountMap() // and loading of various settings. _directIpAccount = AccountCreator::createAccount (AccountCreator::SIP_DIRECT_IP_ACCOUNT, ""); + if (_directIpAccount == NULL) { + _debug ("Failed to create direct ip calls \"account\"\n"); + } else { + // Force the options to be loaded + // No registration in the sense of + // the REGISTER method is performed. + _debug ("Succeed to create direct ip calls \"account\"\n"); + _accountMap[IP2IP_PROFILE] = _directIpAccount; + _directIpAccount->registerVoIPLink(); + } + while (iter != sections.end()) { // Check if it starts with "Account:" (SIP and IAX pour le moment) if ( (int) (iter->find ("Account:")) != 0) { @@ -4160,7 +4188,7 @@ ManagerImpl::loadAccountMap() iter++; } - + /* if (_directIpAccount == NULL) { _debug ("Failed to create direct ip calls \"account\""); } else { @@ -4169,9 +4197,10 @@ ManagerImpl::loadAccountMap() // the REGISTER method is performed. _debug ("Succeed to create direct ip calls \"account\""); _directIpAccount->registerVoIPLink(); + _accountMap[IP2IP_PROFILE] = _directIpAccount; } - - _debug ("nbAccount loaded %i ",nbAccount); + */ + _debug ("nbAccount loaded %i", nbAccount); return nbAccount; } diff --git a/sflphone-common/src/managerimpl.h b/sflphone-common/src/managerimpl.h index f241fabc4038b685a91a544985a288a4012a3ccb..4f6c85e93894d7484c1150cbb1ccc076e34108f0 100644 --- a/sflphone-common/src/managerimpl.h +++ b/sflphone-common/src/managerimpl.h @@ -1315,9 +1315,9 @@ class ManagerImpl { AccountID getAccountIdFromNameAndServer(const std::string& userName, const std::string& server); - int getSipAddress(); + int getLocalIp2IpPort(); - void setSipAddress( const std::string& address ); + void setLocalIp2IpInfo( const std::string& address ); std::string getStunServer (void); void setStunServer (const std::string &server); diff --git a/sflphone-common/src/sip/sipaccount.cpp b/sflphone-common/src/sip/sipaccount.cpp index 33445ad71ad9193b9a4deec3949e1a378781fa30..75162d1a0a6664586a231a21615eddda9210560d 100644 --- a/sflphone-common/src/sip/sipaccount.cpp +++ b/sflphone-common/src/sip/sipaccount.cpp @@ -35,6 +35,7 @@ SIPAccount::SIPAccount (const AccountID& accountID) , _localPort (atoi (DEFAULT_SIP_PORT)) , _publishedPort (atoi (DEFAULT_SIP_PORT)) , _transportType (PJSIP_TRANSPORT_UNSPECIFIED) + , _transport(NULL) , _resolveOnce (false) , _credentialCount (0) , _cred (NULL) @@ -341,7 +342,6 @@ void SIPAccount::loadConfig() bool tlsEnabled = Manager::instance().getConfigBool (_accountID, TLS_ENABLE); if (tlsEnabled) { - _debug ("---------------------------- TLS Enabled"); initTlsConfiguration(); _transportType = PJSIP_TRANSPORT_TLS; } else { diff --git a/sflphone-common/src/sip/sipaccount.h b/sflphone-common/src/sip/sipaccount.h index 0b304bb326afa46752317aab13f14ac5ea4fedc7..7a3a17d887a4551938d2229a3b96e23b3eaf1757 100644 --- a/sflphone-common/src/sip/sipaccount.h +++ b/sflphone-common/src/sip/sipaccount.h @@ -331,7 +331,7 @@ class SIPAccount : public Account pjsip_transport_type_e _transportType; - pjsip_transport* _transport; + pjsip_transport* _transport; // Special hack that is not here to stay // See #1852 diff --git a/sflphone-common/src/sip/sipvoiplink.cpp b/sflphone-common/src/sip/sipvoiplink.cpp index d4862dd51a0ddafac1766907cd0913898533a297..bed4aa782e5117ad3b8b2d36215761b26d3aab6a 100644 --- a/sflphone-common/src/sip/sipvoiplink.cpp +++ b/sflphone-common/src/sip/sipvoiplink.cpp @@ -270,7 +270,7 @@ bool SIPVoIPLink::init() // TODO This port should be the one configured for the IP profile // and not the global one - _regPort = Manager::instance().getSipAddress(); + _regPort = Manager::instance().getLocalIp2IpPort(); /* Instanciate the C++ thread */ _evThread = new EventThread (this); @@ -286,14 +286,21 @@ bool SIPVoIPLink::init() void SIPVoIPLink::terminate() { + _debug("SIPVoIPLink::terminate"); + + + if (_evThread) { + _debug("SIPVoIPLink:: delete eventThread"); delete _evThread; _evThread = NULL; } + /* Clean shutdown of pjsip library */ if (initDone()) { + _debug("pjsip_shutdown\n"); pjsip_shutdown(); } @@ -472,7 +479,7 @@ int SIPVoIPLink::sendRegister (AccountID id) status = createUDPServer (id); if (status != PJ_SUCCESS) { - _debug ("Use the local UDP transport", id.c_str()); + _debug ("Use the local UDP transport"); account->setAccountTransport (_localUDPTransport); } } @@ -1438,7 +1445,8 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to) AccountID accountId = Manager::instance().getAccountFromCall (id); SIPAccount * account = NULL; - account = dynamic_cast<SIPAccount *> (Manager::instance().getAccount (accountId)); + + account = dynamic_cast<SIPAccount *> (Manager::instance().getAccount (IP2IP_PROFILE)); if (account == NULL) { _debug ("Account is null. Returning"); @@ -1447,6 +1455,7 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to) // Set SDP parameters localAddress = account->getLocalAddress (); + _debug("new_ip_to_ip_call localAddress: %s\n", localAddress.c_str()); if (localAddress == "0.0.0.0"){ _debug ("Here is the local address: %s", localAddress.c_str ()); loadSIPLocalIP (&localAddress); @@ -1468,6 +1477,15 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to) _debug ("! SIP Failure: Unable to create RTP Session in SIPVoIPLink::new_ip_to_ip_call (%s:%d)", __FILE__, __LINE__); } + // If no account already set, use the default one created at pjsip initialization + if(account->getAccountTransport() == NULL) { + _debug("No transport for this account, using the default one\n"); + account->setAccountTransport(_localUDPTransport); + } + + _debug("IptoIP local port %i\n", account->getLocalPort()); + _debug("IptoIP local address %s\n", account->getLocalAddress().c_str()); + // Create URI std::string fromUri; @@ -1475,9 +1493,9 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to) fromUri = account->getFromUri(); - std::string address = findLocalAddressFromUri (toUri, _localUDPTransport); + std::string address = findLocalAddressFromUri (toUri, account->getAccountTransport()); - int port = findLocalPortFromUri (toUri, _localUDPTransport); + int port = findLocalPortFromUri (toUri, account->getAccountTransport()); std::stringstream ss; @@ -1520,7 +1538,7 @@ bool SIPVoIPLink::new_ip_to_ip_call (const CallID& id, const std::string& to) // Set the appropriate transport pjsip_tpselector *tp; - init_transport_selector (_localUDPTransport, &tp); + init_transport_selector (account->getAccountTransport(), &tp); status = pjsip_dlg_set_transport (dialog, tp); @@ -1657,6 +1675,8 @@ bool SIPVoIPLink::pjsip_init() name_mod = "sflphone"; + _debug("pjsip_init\n"); + // Init PJLIB: must be called before any call to the pjsip library status = pj_init(); // Use pjsip macros for sanity check @@ -1703,10 +1723,10 @@ bool SIPVoIPLink::pjsip_init() if (account == NULL) { _debug ("Account is null in pjsip init"); - port = _regPort; + port = _regPort; } else { directIpCallsTlsEnabled = account->isTlsEnabled(); - port = account->getLocalPort (); + port = account->getLocalPort (); } // Create a UDP listener meant for all accounts @@ -1900,13 +1920,14 @@ int SIPVoIPLink::createUDPServer (AccountID id) pjsip_host_port a_name; char tmpIP[32]; pjsip_transport *transport; - std::string listeningAddress = "127.0.0.1"; - int listeningPort = _regPort; + std::string listeningAddress = "127.0.0.1"; + int listeningPort = _regPort; - /* Use my local address as default value */ - if (!loadSIPLocalIP (&listeningAddress)) - return !PJ_SUCCESS; + /* Use my local address as default value */ + if (!loadSIPLocalIP (&listeningAddress)) + return !PJ_SUCCESS; + _debug("SIPVoIPLink::createUDPServer\n"); /* * Retrieve the account information */ @@ -1916,7 +1937,7 @@ int SIPVoIPLink::createUDPServer (AccountID id) // Set information to the local address and port if (account == NULL) { - _debug ("Account is null in createUDPServer."); + _debug ("Account with id \"%s\" is null in createUDPServer.", id.c_str()); } else { // We are trying to initialize a UDP transport available for all local accounts and direct IP calls if (account->getLocalAddress () != "0.0.0.0"){ @@ -2266,7 +2287,7 @@ pj_status_t SIPVoIPLink::createAlternateUdpTransport (AccountID id) listeningPort = (int) a_name.port; // Set the address to be used in SDP - account->setPublishedAddress (listeningAddress); + account->setPublishedAddress (listeningAddress); account->setPublishedPort (listeningPort); // Create the UDP transport @@ -2360,6 +2381,15 @@ pj_status_t SIPVoIPLink::createTlsTransport (AccountID id) return PJ_SUCCESS; } + +void SIPVoIPLink::updateAccountInfo(const AccountID& accountID) +{ + + createUDPServer(accountID); + +} + + bool SIPVoIPLink::loadSIPLocalIP (std::string *addr) { @@ -2382,6 +2412,8 @@ bool SIPVoIPLink::loadSIPLocalIP (std::string *addr) void SIPVoIPLink::busy_sleep (unsigned msec) { + + _debug("SIPVoIPLink::busy_sleep\n"); #if defined(PJ_SYMBIAN) && PJ_SYMBIAN != 0 /* Ideally we shouldn't call pj_thread_sleep() and rather * CActiveScheduler::WaitForAnyRequest() here, but that will @@ -2436,6 +2468,8 @@ bool SIPVoIPLink::pjsip_shutdown (void) /* Shutdown PJLIB */ pj_shutdown(); + _debug ("UserAgent: Shutted down succesfully\n"); + /* Done. */ return true; } @@ -2911,8 +2945,6 @@ mod_on_rx_request (pjsip_rx_data *rdata) char* from_header = strstr (rdata->msg_info.msg_buf, "From: "); - // _debug("------------------------------ thefromheader: %s", from_header); - if (from_header) { std::string temp (from_header); diff --git a/sflphone-common/src/sip/sipvoiplink.h b/sflphone-common/src/sip/sipvoiplink.h index 87729d84a5d3b65bf167e2333e860fab774032ed..7b28b1761b1acb4a1869d8d8c02586faefe2e4b2 100644 --- a/sflphone-common/src/sip/sipvoiplink.h +++ b/sflphone-common/src/sip/sipvoiplink.h @@ -187,7 +187,7 @@ class SIPVoIPLink : public VoIPLink /** * Terminate only one call */ - void terminateOneCall(const CallID& id); + void terminateOneCall(const CallID& id); /** * Send an outgoing call invite @@ -297,6 +297,11 @@ class SIPVoIPLink : public VoIPLink bool loadSIPLocalIP (std::string *addr); + /** + * This method is used to create a new transport and attach it to the appropriate account + */ + void updateAccountInfo(const AccountID& accountID); + private: /** * Constructor