From c95ab4c1ced641738a583a7cd6b29109c3cc7202 Mon Sep 17 00:00:00 2001 From: Corey Farrell Date: Tue, 24 Oct 2017 10:43:15 -0400 Subject: [PATCH] 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 --- channels/chan_sip.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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) { -- 2.47.2