summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsip-ua
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-03-02 10:37:41 +0000
committerBenny Prijono <bennylp@teluu.com>2008-03-02 10:37:41 +0000
commit6d938000550afc2c62cf7607adc44f1508ab3d94 (patch)
tree27f71e7c05538c1e725723ddd5bca06737574f6d /pjsip/src/pjsip-ua
parente8774b43447fd993b62f8f59b00734a769845a76 (diff)
Ticket #498: Option in client registration to ignore Contact address in REGISTER response
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1837 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsip-ua')
-rw-r--r--pjsip/src/pjsip-ua/sip_reg.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/pjsip/src/pjsip-ua/sip_reg.c b/pjsip/src/pjsip-ua/sip_reg.c
index e9f77ac1..a183f8f1 100644
--- a/pjsip/src/pjsip-ua/sip_reg.c
+++ b/pjsip/src/pjsip-ua/sip_reg.c
@@ -723,8 +723,20 @@ static void tsx_callback(void *token, pjsip_event *event)
/* Enumerate all Contact headers found in the response and
* find the Contact(s) that we register.
+ *
+ * Note:
+ * by default we require that the exact same URI that we
+ * register is returned in the 200/OK response (by exact,
+ * meaning all URI components including transport param),
+ * otherwise if we don't detect that our URI is there, we
+ * treat registration as failed.
+ *
+ * If your registrar server couldn't do this, you can
+ * disable this exact URI checking. See the compile time
+ * setting PJSIP_REGISTER_CLIENT_CHECK_CONTACT or the
+ * corresponding run-time setting in pjsip_cfg().
*/
- for (i=0; i<contact_cnt; ++i) {
+ for (i=0; i<contact_cnt && pjsip_cfg()->regc.check_contact; ++i) {
pjsip_contact_hdr *our_contact;
our_contact = (pjsip_contact_hdr*)
@@ -760,7 +772,7 @@ static void tsx_callback(void *token, pjsip_event *event)
/* When the response doesn't contain our Contact header, that
* means we have been unregistered.
*/
- if (!has_our_contact)
+ if (pjsip_cfg()->regc.check_contact && !has_our_contact)
expiration = 0;
/* Schedule next registration */