mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-05 04:32:44 +00:00
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
This commit is contained in:
@@ -28460,7 +28460,13 @@ static int handle_request_subscribe(struct sip_pvt *p, struct sip_request *req,
|
|||||||
p->lastinvite = seqno;
|
p->lastinvite = seqno;
|
||||||
}
|
}
|
||||||
if (!p->needdestroy) {
|
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 */
|
/* check if the requested expiry-time is within the approved limits from sip.conf */
|
||||||
if (p->expiry > max_subexpiry) {
|
if (p->expiry > max_subexpiry) {
|
||||||
|
Reference in New Issue
Block a user