From 2e9b206f86425c464fc3f7c20c91575a055c18ca Mon Sep 17 00:00:00 2001 From: Alexandre Savard <alexandresavard@msavard.(none)> Date: Sun, 29 Jan 2012 13:29:44 -0500 Subject: [PATCH] #3674: Add contact option in configuration --- daemon/src/sip/sipaccount.cpp | 4 ++++ daemon/src/sip/sipaccount.h | 1 + daemon/src/sip/sipvoiplink.cpp | 9 +-------- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/daemon/src/sip/sipaccount.cpp b/daemon/src/sip/sipaccount.cpp index 56d66edd1e..9e3be27030 100644 --- a/daemon/src/sip/sipaccount.cpp +++ b/daemon/src/sip/sipaccount.cpp @@ -119,6 +119,7 @@ void SIPAccount::serialize(Conf::YamlEmitter *emitter) portstr << localPort_; ScalarNode port(portstr.str()); ScalarNode serviceRoute(serviceRoute_); + ScalarNode contactUpdateEnabled(contactUpdateEnabled_); ScalarNode mailbox(mailBox_); ScalarNode publishAddr(publishedIpAddress_); @@ -179,6 +180,7 @@ void SIPAccount::serialize(Conf::YamlEmitter *emitter) accountmap.setKeyValue(publishPortKey, &publishPort); accountmap.setKeyValue(sameasLocalKey, &sameasLocal); accountmap.setKeyValue(serviceRouteKey, &serviceRoute); + accountmap.setKeyValue(updateContactHeaderKey, &contactUpdateEnabled); accountmap.setKeyValue(dtmfTypeKey, &dtmfType); accountmap.setKeyValue(displayNameKey, &displayName); accountmap.setKeyValue(codecsKey, &codecs); @@ -281,6 +283,8 @@ void SIPAccount::unserialize(Conf::MappingNode *map) dtmfType_ = dtmfType; map->getValue(serviceRouteKey, &serviceRoute_); + map->getValue(updateContactHeaderKey, &contactUpdateEnabled_); + // stun enabled map->getValue(stunEnabledKey, &stunEnabled_); map->getValue(stunServerKey, &stunServer_); diff --git a/daemon/src/sip/sipaccount.h b/daemon/src/sip/sipaccount.h index ed48b1fb41..6e25fd4737 100644 --- a/daemon/src/sip/sipaccount.h +++ b/daemon/src/sip/sipaccount.h @@ -55,6 +55,7 @@ namespace Conf { const char *const sameasLocalKey = "sameasLocal"; const char *const dtmfTypeKey = "dtmfType"; const char *const serviceRouteKey = "serviceRoute"; + const char *const updateContactHeaderKey = "updateContact"; // TODO: write an object to store credential which implement serializable const char *const srtpKey = "srtp"; diff --git a/daemon/src/sip/sipvoiplink.cpp b/daemon/src/sip/sipvoiplink.cpp index 522d392981..ebd3be75d7 100644 --- a/daemon/src/sip/sipvoiplink.cpp +++ b/daemon/src/sip/sipvoiplink.cpp @@ -1657,29 +1657,25 @@ static void update_contact_header(struct pjsip_regc_cbparam *param, SIPAccount * ss << uri->port; std::string recvContactPort = ss.str(); - DEBUG("SIPVoIPLink: Current contact header %s:%s", recvContactHost.c_str(), recvContactPort.c_str()); std::string currentAddress, currentPort; siplink->findLocalAddressFromTransport(account->transport_, PJSIP_TRANSPORT_UDP, currentAddress, currentPort); - DEBUG("SIPVoIPLink: Current contact header %s:%s\n", currentAddress.c_str(), currentPort.c_str()); - // DEBUG("Received contact header %s", bool updateContact = false; std::string currentContactHeader = account->getContactHeader(); size_t foundHost = currentContactHeader.find(recvContactHost); if(foundHost == std::string::npos) { - DEBUG("SIPVoIPLink: Host %s not in current contact header\n", recvContactHost.c_str()); updateContact = true; } size_t foundPort = currentContactHeader.find(recvContactPort); if(foundPort == std::string::npos) { - DEBUG("SIPVoIPLink: Port %s not in current contact header\n", recvContactPort.c_str()); updateContact = true; } if(updateContact) { + DEBUG("SIPVoIPLink: Update contact header: %s:%s\n", recvContactHost.c_str(), recvContactPort.c_str()); account->setContactHeader(recvContactHost, recvContactPort); siplink->sendRegister(account); } @@ -1691,8 +1687,6 @@ void registration_cb(struct pjsip_regc_cbparam *param) { SIPAccount *account = static_cast<SIPAccount *>(param->token); - ERROR("SipVoipLink: REGISTRATION CALLBACK"); - if (account == NULL) { ERROR("SipVoipLink: account does'nt exist in registration callback"); return; @@ -1703,7 +1697,6 @@ void registration_cb(struct pjsip_regc_cbparam *param) return; } - DEBUG("SipVoipLink: Contact header from UAS, %d contact(s)", param->contact_cnt); if(account->isContactUpdateEnabled()) { update_contact_header(param, account); } -- GitLab