diff --git a/sflphone-gtk/configure.ac b/sflphone-gtk/configure.ac index efff738a4ddeb2ff024bc3f67856c856d290a2e4..0686cbd4093cde64c1f7589017df952f34592414 100644 --- a/sflphone-gtk/configure.ac +++ b/sflphone-gtk/configure.ac @@ -26,6 +26,7 @@ fi AC_PROG_CC AC_PROG_INSTALL AC_STDC_HEADERS +AC_PROG_LIBTOOL PKG_CHECK_MODULES(DEPS, \ dbus-glib-1 >= 0.35 \ diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp index 01a8cbbacacb5f76f16604ea5bbb3a40bb315519..e1344e2d5e3134a3f6eab4bfa764b2a467902fc0 100644 --- a/src/managerimpl.cpp +++ b/src/managerimpl.cpp @@ -375,9 +375,12 @@ ManagerImpl::onHoldCall(const CallID& id) { AccountID accountid; bool returnValue; + CallID call_id; stopTone(true); + call_id = id; + /* Direct IP to IP call */ if (getConfigFromCall (id) == Call::IPtoIP) { returnValue = SIPVoIPLink::instance (AccountNULL)-> onhold (id); @@ -396,7 +399,7 @@ ManagerImpl::onHoldCall(const CallID& id) removeWaitingCall(id); switchCall(""); - if (_dbus) _dbus->getCallManager()->callStateChanged(id, "HOLD"); + if (_dbus) _dbus->getCallManager()->callStateChanged(call_id, "HOLD"); return returnValue; } @@ -409,12 +412,15 @@ ManagerImpl::offHoldCall(const CallID& id) AccountID accountid; bool returnValue, rec; std::string codecName; + CallID call_id; stopTone(false); + call_id = id; //Place current call on hold if it isn't if (hasCurrentCall()) { + _debug ("Put the current call (ID=%s) on hold\n", getCurrentCallId().c_str()); onHoldCall(getCurrentCallId()); } @@ -438,9 +444,9 @@ ManagerImpl::offHoldCall(const CallID& id) if (_dbus){ if (rec) - _dbus->getCallManager()->callStateChanged(id, "UNHOLD_RECORD"); + _dbus->getCallManager()->callStateChanged(call_id, "UNHOLD_RECORD"); else - _dbus->getCallManager()->callStateChanged(id, "UNHOLD_CURRENT"); + _dbus->getCallManager()->callStateChanged(call_id, "UNHOLD_CURRENT"); } switchCall(id); diff --git a/src/sipvoiplink.cpp b/src/sipvoiplink.cpp index 037686ab0fabd2fc87780dd9d2cfff8a80c10078..f4c5a838ba311e5d33d1d578111707b2d02425c3 100644 --- a/src/sipvoiplink.cpp +++ b/src/sipvoiplink.cpp @@ -717,6 +717,7 @@ SIPVoIPLink::offhold(const CallID& id) bool SIPVoIPLink::transfer(const CallID& id, const std::string& to) { + SIPCall *call; std::string tmp_to; pjsip_evsub *sub; @@ -727,7 +728,6 @@ SIPVoIPLink::transfer(const CallID& id, const std::string& to) AccountID account_id; Account* account; - call = getSIPCall(id); call->stopRecording(); account_id = Manager::instance().getAccountFromCall(id); @@ -739,8 +739,14 @@ SIPVoIPLink::transfer(const CallID& id, const std::string& to) } tmp_to = SIPToHeader(to); - if (tmp_to.find("@") == std::string::npos) { - tmp_to = tmp_to + "@" + account->getHostname(); + if (account) { + if (tmp_to.find("@") == std::string::npos) { + tmp_to = tmp_to + "@" + account->getHostname(); + } + } + + else { + } _debug("In transfer, tmp_to is %s\n", tmp_to.data()); @@ -762,7 +768,6 @@ SIPVoIPLink::transfer(const CallID& id, const std::string& to) * because after this function, we can not find the cooresponding * voiplink from the call any more. But the voiplink is useful! */ - AccountID accId = Manager::instance().getAccountFromCall(call->getCallId()); pjsip_evsub_set_mod_data(sub, getModId(), this); /*