diff --git a/daemon/src/sip/sipaccount.cpp b/daemon/src/sip/sipaccount.cpp index 56d66edd1e9598f2ddb38dcf6cbb07be82e6a894..9e3be270307d42e3a6d42a49291e7d4989fe79b3 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 ed48b1fb419e242734088b465eeced524adf54ef..6e25fd4737ccad88ea9af3409db1b6cb1953a085 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 522d3929810b1c9c41edd6df43d09f2605180c8e..ebd3be75d7dc8240c30d4629df4a01e2274cc1df 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); }