From: Corey Farrell Date: Tue, 24 Oct 2017 14:43:15 +0000 (-0400) Subject: chan_sip: Fix SUBSCRIBE with missing "Expires" header. X-Git-Tag: 13.19.0-rc1~188^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c95ab4c1ced641738a583a7cd6b29109c3cc7202;p=thirdparty%2Fasterisk.git chan_sip: Fix SUBSCRIBE with missing "Expires" header. When chan_sip receives a SUBSCRIBE request with no "Expires" header it processes the request as an unsubscribe. This is incorrect, per RFC3264 when the "Expires" header is missing a default expiry should be used. ASTERISK-18140 Change-Id: Ibf6dcd4fdd07a32c2bc38be1dd557981f08188b5 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index edaa387580..a615b68ab3 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -28460,7 +28460,13 @@ static int handle_request_subscribe(struct sip_pvt *p, struct sip_request *req, p->lastinvite = seqno; } if (!p->needdestroy) { - p->expiry = atoi(sip_get_header(req, "Expires")); + const char *expires_str = sip_get_header(req, "Expires"); + + if (ast_strlen_zero(expires_str)) { + p->expiry = default_expiry; + } else { + p->expiry = atoi(expires_str); + } /* check if the requested expiry-time is within the approved limits from sip.conf */ if (p->expiry > max_subexpiry) {