diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 77685b2f80..affd73fbd5 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -12507,11 +12507,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 index 0000000000..259782f518 --- /dev/null +++ b/doc/CHANGES-staging/chan_sip_session-timer_on_update.txt @@ -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 +