[OpenSIPS-Users] sst causes unnecessary 422s
Bogdan-Andrei Iancu
bogdan at voice-system.ro
Tue Apr 28 18:29:15 CEST 2009
Hi Jeff,
I reviewed the code, and it looks like if no SE hdr exists, the module
does add the SE hdr, but no MINSE....strange....I made a fix (see the
attached patch) -> apply it on P1
Regards,
Bogdan
Jeff Pyle wrote:
> Hi Bogdan,
>
> Here's the call flow:
>
> Adtran CPE gateway (no timer support)
> |
> V
> Opensips 1.4.4 with SST (P1)
> |
> V
> Opensips 1.5.x with SST (P2)
> |
> V
> PSTN carrier
>
>
> The INVITE arrives at P1 from the CPE gateway. The CPE has no timer
> support, so no SE or Min-SE. P1's SST is configured like this:
>
> loadmodule "sst.so"
> modparam("sst", "timeout_avp", "$avp(s:sst_timeout)")
> modparam("sst", "sst_flag", 5)
> modparam("sst", "enable_stats", 1)
> modparam("sst", "min_se", 2400)
>
> Because of this, P1 appends an SE of 2400 to the INVITE before forwarding to
> P2. P2's SST is configured like this:
>
> loadmodule "sst.so"
> modparam("sst|dialog", "timeout_avp", "$avp(s:sst_timeout)")
> modparam("sst", "sst_flag", 6)
> modparam("sst", "enable_stats", 1)
> modparam("sst", "min_se", 1800)
> modparam("sst", "reject_to_small", 1)
>
> The INVITE that arrives at P2 does not have a Min-SE header. The original
> CPE doesn't support the timer at all, and P1 did not append one.
>
> This confuses me some. Given the behavior of Opensips, it seems impossible
> to configure two SST-enabled proxies one behind the other, unless the second
> proxy runs a Min-SE of 90. I'm sure I've missed something. Or, should
> Opensips (P1 in this case) append a Min-SE header as well?
>
> Changing subjects slightly, is it possible to modify Opensips' SE value in a
> failure route processing a 422 failure? If Opensips receives a 422, I'd
> like to be able to re-send the INVITE after adjusting the SE/Min-SE per the
> Min-SE in the 422. If this is possible, perhaps it is also possible to
> select the SE/Min-SE in the request route? I'd like to run a SE of 240, but
> one of my carriers requires no smaller than 1800. I'd love to be able to
> set the SE to 1800 only when serial forking is about to send a request to
> that carrier.
>
>
> Thanks,
> Jeff
>
>
>
> On 4/28/09 8:13 AM, "Bogdan-Andrei Iancu" <bogdan at voice-system.ro> wrote:
>
>
>> Hi Jeff,
>>
>> Could you post the INVITE that gets the 422 ? Does it contain a min-se
>> header? If not, according to the RFC, the default min-se is 90 (from the
>> request) and the server has min-se 1800 -> this is why you get the 422.
>>
>> Regards,
>> Bogdan
>>
>>
>>
>> Jeff Pyle wrote:
>>
>>> Hello,
>>>
>>> I noticed today that if a packet comes into the proxy with a Session-Expires
>>> header, it get's 422'ed. Period. Unfortunately the proxy that is doing
>>> this has real users on it I cannot take down at the moment, so debugging is
>>> limited during the day. It is Opensips 1.5 build revision 5641.
>>>
>>> Here's what I can tell you:
>>>
>>> loadmodule "sst.so"
>>> modparam("sst|dialog", "timeout_avp", "$avp(s:sst_timeout)")
>>> modparam("sst", "sst_flag", 6)
>>> modparam("sst", "enable_stats", 1)
>>> modparam("sst", "min_se", 1800)
>>> modparam("sst", "reject_to_small", 1)
>>>
>>> and...
>>>
>>> if (is_method("INVITE")) {
>>> if (sstCheckMin("1")) {
>>> xlog("L_INFO", "SST too short - M=$rm RURI=$ru F=$fu T=$tu
>>> IP=$si ID=$ci\n");
>>> exit;
>>> }
>>>
>>> // continue call processing...
>>> }
>>>
>>> ... in route[0].
>>>
>>> This xlog trips on an invite that has:
>>> Session-Expires: 2400
>>>
>>> and then sends back a 422 that has:
>>> MIN-SE: 1800
>>>
>>> I looked at sst_handlers.c, and it seems to make sense to me, but
>>> unfortunately my C skills aren't even a B.
>>>
>>> Any assistance would be most appreciated.
>>>
>>>
>>> Thanks,
>>> Jeff
>>>
>>>
>
>
>
h
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sst.patch
Type: text/x-diff
Size: 592 bytes
Desc: not available
Url : http://lists.opensips.org/pipermail/users/attachments/20090428/7da97062/attachment-0001.patch
More information about the Users
mailing list