[sr-dev] git:master: ims_registrar_scscf: Added params to partial notifies - previously only done in full

Richard Good richard.good at smilecoms.com
Thu Nov 20 12:32:39 CET 2014


Module: sip-router
Branch: master
Commit: a538cf860139e2f72c2ab8f444908965125a9ec4
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=a538cf860139e2f72c2ab8f444908965125a9ec4

Author: Richard Good <richard.good at smilecoms.com>
Committer: Richard Good <richard.good at smilecoms.com>
Date:   Thu Nov 20 13:31:55 2014 +0200

ims_registrar_scscf: Added params to partial notifies - previously only done in full

---

 modules/ims_registrar_scscf/registrar_notify.c |   27 +++++++++++++++++++++++-
 1 files changed, 26 insertions(+), 1 deletions(-)

diff --git a/modules/ims_registrar_scscf/registrar_notify.c b/modules/ims_registrar_scscf/registrar_notify.c
index cebc889..7cc2677 100644
--- a/modules/ims_registrar_scscf/registrar_notify.c
+++ b/modules/ims_registrar_scscf/registrar_notify.c
@@ -1637,7 +1637,8 @@ str get_reginfo_partial(impurecord_t *r, ucontact_t *c, int event_type) {
     int terminate_impu = 1;
     ucontact_t *c_tmp;
     str state, event;
-
+    param_t *param;
+    
     buf.s = bufc;
     buf.len = 0;
     pad.s = padc;
@@ -1716,6 +1717,30 @@ str get_reginfo_partial(impurecord_t *r, ucontact_t *c, int event_type) {
             STR_APPEND(buf, uri_s);
             STR_APPEND(buf, (c->c));
             STR_APPEND(buf, uri_e);
+	    
+	    param = c->params;
+	    while (param && supported_param(&param->name) == 0) {
+		
+		if(param->body.len > 0) {
+		    LM_DBG("This contact has params name: [%.*s] body [%.*s]\n", param->name.len, param->name.s, param->body.len, param->body.s);
+		    if (param->body.s[0] == '<' && param->body.s[param->body.len -1] == '>') {
+			LM_DBG("This param body starts with '<' and ends with '>' we will clean these for the NOTIFY XML with < and >\n");
+			sprintf(pad.s, contact_s_params_with_body_fix.s, param->name.len, param->name.s, param->body.len - 2, param->body.s + 1);
+		    } else {
+			sprintf(pad.s, contact_s_params_with_body.s, param->name.len, param->name.s, param->body.len, param->body.s);
+		    }
+		    
+		    pad.len = strlen(pad.s);
+		    STR_APPEND(buf, pad);
+		} else {
+		    LM_DBG("This contact has params name: [%.*s] \n", param->name.len, param->name.s);
+		    sprintf(pad.s, contact_s_params_no_body.s, param->name.len, param->name.s);
+		    pad.len = strlen(pad.s);
+		    STR_APPEND(buf, pad);
+		}
+		param = param->next;
+	    }
+	    
             STR_APPEND(buf, contact_e);
             STR_APPEND(buf, registration_e);
         }




More information about the sr-dev mailing list