summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorAlexander Traud <pabstraud@compuserve.com>2017-04-03 09:30:43 +0200
committerAlexander Traud <pabstraud@compuserve.com>2017-04-03 02:44:05 -0500
commit65c87a8ea970b2fb082ac86d4cdb52f52685b475 (patch)
treed46dea559fff72160290b9b1312831d1a45e5fbd /channels
parent25db34f8a1d12f2e84e0850fffd739db4460d019 (diff)
chan_sip: Session Timers required but refused wrongly.
SIP user-agents indicate which protocol extensions are allowed in headers like Supported and Required. Such protocol extensions are Session Timers (RFC 4028) for example. Session Timers are supported since Mantis-10665. Since ASTERISK-21721, not only the first but multiple Supported/Required headers in a message are parsed. In that change, an existing variable was re-used within a newly added do-loop. Currently, at the end of that loop, that variable is an empty string always. Previously, that variable was used within log output. However, the log output was not changed. ASTERISK-26915 #close Change-Id: I09315f31b4d78fb214bb2a9fb6c0f5e143eae990
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 86c4bea98..052fa9e9c 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -25817,8 +25817,7 @@ static int handle_request_update(struct sip_pvt *p, struct sip_request *req)
* \retval 0 ok
* \retval -1 failure
*/
-static int handle_request_invite_st(struct sip_pvt *p, struct sip_request *req,
- const char *required, int reinvite)
+static int handle_request_invite_st(struct sip_pvt *p, struct sip_request *req, int reinvite)
{
const char *p_uac_se_hdr; /* UAC's Session-Expires header string */
const char *p_uac_min_se; /* UAC's requested Min-SE interval (char string) */
@@ -25898,8 +25897,8 @@ static int handle_request_invite_st(struct sip_pvt *p, struct sip_request *req,
case SESSION_TIMER_MODE_REFUSE:
if (p->reqsipoptions & SIP_OPT_TIMER) {
- transmit_response_with_unsupported(p, "420 Option Disabled", req, required);
- ast_log(LOG_WARNING, "Received SIP INVITE with supported but disabled option: %s\n", required);
+ transmit_response_with_unsupported(p, "420 Option Disabled", req, "timer");
+ ast_log(LOG_WARNING, "Received SIP INVITE with supported but disabled option: timer\n");
return -1;
}
break;
@@ -26005,7 +26004,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, str
* then send a 420 with only those unsupported options listed */
if (!ast_strlen_zero(unsupported)) {
transmit_response_with_unsupported(p, "420 Bad extension (unsupported)", req, unsupported);
- ast_log(LOG_WARNING, "Received SIP INVITE with unsupported required extension: required:%s unsupported:%s\n", required, unsupported);
+ ast_log(LOG_WARNING, "Received SIP INVITE with unsupported required extension: %s\n", unsupported);
p->invitestate = INV_COMPLETED;
if (!p->lastinvite) {
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
@@ -26443,7 +26442,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, str
make_our_tag(p);
- if (handle_request_invite_st(p, req, required, reinvite)) {
+ if (handle_request_invite_st(p, req, reinvite)) {
p->invitestate = INV_COMPLETED;
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
res = INV_REQ_ERROR;
@@ -26485,7 +26484,7 @@ static int handle_request_invite(struct sip_pvt *p, struct sip_request *req, str
if (!req->ignore)
reinvite = 1;
- if (handle_request_invite_st(p, req, required, reinvite)) {
+ if (handle_request_invite_st(p, req, reinvite)) {
p->invitestate = INV_COMPLETED;
if (!p->lastinvite) {
sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);