mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 20:04:50 +00:00
res_pjsip: config option 'timers' can't be set to 'no'
When setting the configuration option 'timers' equal to 'no' the bit flag was not properly negated. This patch clears all associated flags and only sets the specified one. pjsip will handle any necessary flag combinations. Also went ahead and did similar for the '100rel' option. ASTERISK-24910 #close Reported by: Ray Crumrine Review: https://reviewboard.asterisk.org/r/4582/ ........ Merged revisions 434131 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@434132 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -347,10 +347,11 @@
|
||||
<synopsis>Session timers for SIP packets</synopsis>
|
||||
<description>
|
||||
<enumlist>
|
||||
<enum name="forced" />
|
||||
<enum name="no" />
|
||||
<enum name="required" />
|
||||
<enum name="yes" />
|
||||
<enum name="required" />
|
||||
<enum name="always" />
|
||||
<enum name="forced"><para>Alias of always</para></enum>
|
||||
</enumlist>
|
||||
</description>
|
||||
</configOption>
|
||||
|
@@ -141,13 +141,14 @@ static int prack_handler(const struct aco_option *opt, struct ast_variable *var,
|
||||
{
|
||||
struct ast_sip_endpoint *endpoint = obj;
|
||||
|
||||
/* clear all */
|
||||
endpoint->extensions.flags &= ~(PJSIP_INV_SUPPORT_100REL | PJSIP_INV_REQUIRE_100REL);
|
||||
|
||||
if (ast_true(var->value)) {
|
||||
endpoint->extensions.flags |= PJSIP_INV_SUPPORT_100REL;
|
||||
} else if (ast_false(var->value)) {
|
||||
endpoint->extensions.flags &= ~PJSIP_INV_SUPPORT_100REL;
|
||||
} else if (!strcasecmp(var->value, "required")) {
|
||||
endpoint->extensions.flags |= PJSIP_INV_REQUIRE_100REL;
|
||||
} else {
|
||||
} else if (!ast_false(var->value)){
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -174,15 +175,18 @@ static int timers_handler(const struct aco_option *opt, struct ast_variable *var
|
||||
{
|
||||
struct ast_sip_endpoint *endpoint = obj;
|
||||
|
||||
/* clear all */
|
||||
endpoint->extensions.flags &= ~(PJSIP_INV_SUPPORT_TIMER | PJSIP_INV_REQUIRE_TIMER
|
||||
| PJSIP_INV_ALWAYS_USE_TIMER);
|
||||
|
||||
/* set only the specified flag and let pjsip normalize if needed */
|
||||
if (ast_true(var->value)) {
|
||||
endpoint->extensions.flags |= PJSIP_INV_SUPPORT_TIMER;
|
||||
} else if (ast_false(var->value)) {
|
||||
endpoint->extensions.flags &= PJSIP_INV_SUPPORT_TIMER;
|
||||
} else if (!strcasecmp(var->value, "required")) {
|
||||
endpoint->extensions.flags |= PJSIP_INV_REQUIRE_TIMER;
|
||||
} else if (!strcasecmp(var->value, "always")) {
|
||||
} else if (!strcasecmp(var->value, "always") || !strcasecmp(var->value, "forced")) {
|
||||
endpoint->extensions.flags |= PJSIP_INV_ALWAYS_USE_TIMER;
|
||||
} else {
|
||||
} else if (!ast_false(var->value)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user