Module: kamailio Branch: master Commit: b262f704c0cab19c8ada39c36c6f7cf51cd72be6 URL: https://github.com/kamailio/kamailio/commit/b262f704c0cab19c8ada39c36c6f7cf5...
Author: ng-voice GmbH info@ng-voice.com Committer: ng-voice GmbH info@ng-voice.com Date: 2016-06-01T13:05:36+02:00
Merge pull request #649 from athonet-open/fix-ims_registrar_pcscf
ims_registrar_pcscf: fix getContactP() for is_registered_fallback2ip param.
---
Modified: modules/ims_registrar_pcscf/service_routes.c
---
Diff: https://github.com/kamailio/kamailio/commit/b262f704c0cab19c8ada39c36c6f7cf5... Patch: https://github.com/kamailio/kamailio/commit/b262f704c0cab19c8ada39c36c6f7cf5...
---
diff --git a/modules/ims_registrar_pcscf/service_routes.c b/modules/ims_registrar_pcscf/service_routes.c index 3d29d61..bcdb368 100644 --- a/modules/ims_registrar_pcscf/service_routes.c +++ b/modules/ims_registrar_pcscf/service_routes.c @@ -228,6 +228,9 @@ pcontact_t * getContactP(struct sip_msg* _m, udomain_t* _d, enum pcontact_reg_st search_ci.received_port = _m->rcv.src_port; search_ci.received_proto = _m->rcv.proto; search_ci.searchflag = SEARCH_RECEIVED; + if (is_registered_fallback2ip == 1) { + search_ci.searchflag = SEARCH_NORMAL; + } search_ci.via_host = host; search_ci.via_port = port; search_ci.via_prot = proto; @@ -255,6 +258,7 @@ pcontact_t * getContactP(struct sip_msg* _m, udomain_t* _d, enum pcontact_reg_st LM_INFO("Contact not found based on Contact-header, trying IP/Port/Proto\n"); // received_host.len = ip_addr2sbuf(&_m->rcv.src_ip, srcip, sizeof(srcip)); // received_host.s = srcip; + search_ci.searchflag = SEARCH_RECEIVED; if (ul.get_pcontact(_d, &search_ci, &c) == 1) { LM_DBG("No entry in usrloc for %.*s:%i (Proto %i) found!\n", received_host.len, received_host.s, _m->rcv.src_port, _m->rcv.proto); } else { @@ -264,6 +268,17 @@ pcontact_t * getContactP(struct sip_msg* _m, udomain_t* _d, enum pcontact_reg_st } }
+ if ((c == NULL) && (is_registered_fallback2ip == 2)) { + LM_INFO("Contact not found based on IP/Port/Proto, trying Contact-header\n"); + search_ci.searchflag = SEARCH_NORMAL; + if (ul.get_pcontact(_d, &search_ci, &c) == 1) { + } else { + if (checkcontact(_m, c) != 0) { + c = NULL; + } + } + } + asserted_identity = NULL; registration_contact = NULL; if (c) {