]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-9671 fix wrong cseq in notify Expires 0
authorluiztelles <luiz.telles@tropiconet.com>
Mon, 31 Oct 2016 11:57:07 +0000 (09:57 -0200)
committerluiztelles <luiz.telles@tropiconet.com>
Mon, 31 Oct 2016 11:57:07 +0000 (09:57 -0200)
src/mod/endpoints/mod_sofia/sofia_presence.c

index e1973efabe2b790349adc587b0ac4fb0c67cfa9c..22df27e82645b1af12ff24c9b0898e94a9faa292 100644 (file)
@@ -3686,6 +3686,8 @@ void sofia_presence_handle_sip_i_subscribe(int status,
        char buf[1025] = "";
        char *orig_to_user = NULL;
        char *p;
+       uint32_t callsequence;
+    sip_cseq_t * cseq;
 
        if (!sip) {
                return;
@@ -4110,9 +4112,12 @@ void sofia_presence_handle_sip_i_subscribe(int status,
 
                        if (zstr(full_agent) || (*full_agent != 'z' && *full_agent != 'Z')) {
                                /* supress endless loop bug with zoiper */
+                               callsequence = sofia_presence_get_cseq(profile);
+                               cseq = sip_cseq_create(nh->nh_home, callsequence, SIP_METHOD_NOTIFY);
                                nua_notify(nh,
                                                   SIPTAG_EXPIRES_STR("0"),
                                                   SIPTAG_SUBSCRIPTION_STATE_STR(sstr),
+                                                  SIPTAG_CSEQ(cseq),
                                                   TAG_END());
                        }
 
@@ -4170,11 +4175,13 @@ void sofia_presence_handle_sip_i_subscribe(int status,
                                if ((p = strchr(full_call_info, ';'))) {
                                        p++;
                                }
-
+                               callsequence = sofia_presence_get_cseq(profile);
+                               cseq = sip_cseq_create(nh->nh_home, callsequence, SIP_METHOD_NOTIFY);
                                nua_notify(nh,
                                                   SIPTAG_FROM(sip->sip_to),
                                                   SIPTAG_TO(sip->sip_from),
                                                   SIPTAG_EXPIRES_STR(exp_delta_str),
+                                                  SIPTAG_CSEQ(cseq),
                                                   SIPTAG_SUBSCRIPTION_STATE_STR(sstr),
                                                   SIPTAG_EVENT_STR("line-seize"), TAG_IF(full_call_info, SIPTAG_CALL_INFO_STR(full_call_info)), TAG_END());