]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
chan_sip.c Session timers get removed on UPDATE
authorMark Petersen <bugs.digium.com@zombie.dk>
Sat, 26 Feb 2022 09:07:53 +0000 (10:07 +0100)
committerFriendly Automation <jenkins2@gerrit.asterisk.org>
Wed, 27 Apr 2022 08:02:57 +0000 (03:02 -0500)
If Asterisk receives a SIP REFER with Session-Timers UAC
maintain Session-Timers when sending UPDATE"

ASTERISK-29843

Change-Id: I8e9a21c13bf757fa34d778f49ba3cf859b29ae5c

channels/chan_sip.c
doc/CHANGES-staging/chan_sip_session-timer_on_update.txt [new file with mode: 0644]

index 58273edb69ee9a035d6dd9a366c87211a17348a9..565f9e1854c73f08d27622756c39ddd85b01f455 100644 (file)
@@ -12505,11 +12505,9 @@ static int reqprep(struct sip_request *req, struct sip_pvt *p, int sipmethod, ui
           An exception to this behavior is the ACK request. Since Asterisk never requires
           session-timers support from a remote end-point (UAS) in an INVITE, it must
           not send 'Require: timer' header in the ACK request.
-          This should only be added in the INVITE transactions, not MESSAGE or REFER or other
-          in-dialog messages.
        */
        if (p->stimer && p->stimer->st_active == TRUE && p->stimer->st_active_peer_ua == TRUE
-           && sipmethod == SIP_INVITE) {
+           && (sipmethod == SIP_INVITE || sipmethod == SIP_UPDATE)) {
                char se_hdr[256];
                snprintf(se_hdr, sizeof(se_hdr), "%d;refresher=%s", p->stimer->st_interval,
                        p->stimer->st_ref == SESSION_TIMER_REFRESHER_US ? "uac" : "uas");
diff --git a/doc/CHANGES-staging/chan_sip_session-timer_on_update.txt b/doc/CHANGES-staging/chan_sip_session-timer_on_update.txt
new file mode 100644 (file)
index 0000000..259782f
--- /dev/null
@@ -0,0 +1,6 @@
+Subject: chan_sip
+
+Session timers get removed on UPDATE
+Fix if Asterisk receives a SIP REFER with Session-Timers UAC
+that Asterisk maintains Session-Timers when sending UPDATE request
+