Hi, Mariana!
The dialog timeout avp has effect only if it is set before match_dialog
and loose_route. But only the dialog matched by either loose_route,
either match_dialog, will be updated. If none is found, then nothing
will be changed. Therefore I can't really see a problem here - if the
UPDATE doesn't match the dialog, you can freely reply with a 481 without
any consequences.
Best regards,
Razvan Crainea
OpenSIPS Core Developer
http://www.opensips-solutions.com
On 11/12/2012 08:21 PM, Mariana Arduini wrote:
After some testing I found out the dialog timeout is correctly
refreshed if I set the avp before calling match_dialog(), but this is
a problem, because we can only refresh the timer if the UPDATE message
belongs to a dialog. Otherwise, we must reply with a 481.
I tried using loose_route() instead but no success yet.
Please advise.
Thanks,
Mariana.
On Mon, Nov 12, 2012 at 3:17 PM, Mariana Arduini
<[email protected] <mailto:[email protected]>> wrote:
Hello all,
I´ve checked on SST module and it does not mention anything about
refreshing the dialog timeout value. We need to handle this
through UPDATE messages.
We are using dialog module:
modparam("dialog", "timeout_avp", "$avp(session_expires)")
When we get the INVITE, we do:
if($(hdr(Session-Expires)))
{
# Handling the case "Session-Expires: 4000;refresher=uac"
$var(se_value) = $(hdr(Session-Expires){s.select,0,;});
if($(var(se_value){s.int <http://s.int>}) >= MIN_SE)
{
# Setting/Updating dialog's timeout
$avp(session_expires) = $(var(se_value){s.int
<http://s.int>});
xlog("L_ERR","******** set timer for INVITE:
$avp(session_expires) seconds");
}
else
{
xlog("L_ERR","Session-Expires header value lower
than minimum supported (MIN_SE)");
append_to_reply("Min-SE: MIN_SE\r\n");
sl_send_reply("422","Session Interval Too Small");
exit;
}
}
Using dlg_list, I can see the dialog timeout was correctly set.
When I do the same thing for the UPDATE, the dialog timeout is not
refreshed:
if (is_method("UPDATE") && $(hdr(Session-Expires)) ) {
if(match_dialog())
{
# Handling the case "Session-Expires: 4000;refresher=uac"
$var(se_value) = $(hdr(Session-Expires){s.select,0,;});
if($(var(se_value){s.int <http://s.int>}) >= MIN_SE)
{
$avp(session_expires) = $(var(se_value){s.int
<http://s.int>});
} else {
xlog("L_ERR","Session timer not refreshed");
}
sl_send_reply("200", "OK");
exit;
}
else
{
sl_send_reply("481", "Transaction Does Not Exist");
exit;
}
}
Any hints, please?
Thanks in advance.
Mariana.
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users