[OpenSIPS-Users] One dispatcher mystery solved; Doesn't seem to be "remembering" a gateway is failed however

Richard Revels rrevels at bandwidth.com
Sun Sep 5 16:25:31 CEST 2010


Another little harmless thing is the 1.6 documentation calls out ds_ping_sock but the param is ds_ping_from.  Didn't see this mentioned on the list so I don't think this has changed in more recent revisions.

Richard

On Apr 16, 2010, at 6:48 AM, Bogdan-Andrei Iancu wrote:

> Hi Jock,
> 
> ok, while investigating, I found a small harmless bug in the 
> ds_next_xxxx() functions - they were trying to populate the ATTR avp 
> even if it was not set - this was the reason for the err message you 
> were getting.
> 
> The bug was fixed, so if you update from SVN it should go away.
> 
> Regards,
> Bogdan
> 
> Jock McKechnie wrote:
>> 
>> 
>> On Thu, Apr 15, 2010 at 8:41 AM, Bogdan-Andrei Iancu 
>> <bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>> wrote:
>> 
>>    Jock McKechnie wrote:
>>> 
>>> 
>>> On Tue, Apr 13, 2010 at 5:04 AM, Bogdan-Andrei Iancu
>>> <bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>
>>    <mailto:bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>>>
>>    wrote:
>>> 
>>>    Hi Jock,
>>> 
>>>    Jock McKechnie wrote:
>>>> 
>>>> On Mon, Apr 12, 2010 at 10:48 AM, Bogdan-Andrei Iancu
>>>> <bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>
>>    <mailto:bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>>
>>>    <mailto:bogdan at voice-system.ro
>>    <mailto:bogdan at voice-system.ro> <mailto:bogdan at voice-system.ro
>>    <mailto:bogdan at voice-system.ro>>>>
>>>    wrote:
>>>> 
>>>>    Hi Jock,
>>>>> I'm wondering if the above error is some kind of AVP
>>>    storage thing I
>>>>> haven't set up that is causing it not to properly
>>    "mark" the
>>>>    gateway,
>>>>> or more likely, not remember the mark. But I can't spot
>>>    anything in
>>>>> the dispatcher documentation that says as such.
>>>>    your guess is right - dispatcher module uses AVPs to keep
>>>    the state
>>>>    (between sequential tries on the same dialog).
>>>> 
>>>>    I guess the ds_mark_dst() fails - can you check this?
>>>    (this function
>>>>    search for the dst and grp avps to identify the last tried
>>>>    destination.).
>>>> 
>>>> Greetings Bogdan, and thanks as always;
>>>> 
>>>> I tried this:
>>>>        if( t_check_status("408") ){
>>>>                xlog( "L_NOTICE", "[$Tf] FR: $ci --
>>    TIMEOUT for
>>>> Gateway $rd (marking as bad)\n" );
>>>>                if (!ds_mark_dst("p")) {
>>>>                        xlog("L_NOTICE", "[$Tf] Panic! Not
>>>    marked\n");
>>>>                        }
>>>>                }
>>>> 
>>>> No 'Panic' in the logs.
>>>> 
>>>> The dst and grp AVPs are set up, as you saw on my original
>>    post,
>>>> but... that doesn't mean I'm not missing anything.
>>>> 
>>>    So, ds_mark does not fail .....
>>> 
>>>    Are you 100% sure your script does define the "cnt" "grp"
>>    "dst" avp
>>>    params for the dispatcher module ????
>>> 
>>> Unless somehow I'm doing it wrong, pretty sure:
>>> 
>>> # Set up the dispatcher
>>> modparam("dispatcher", "db_url",
>>> "mysql://openser:password@192.168.0.20/company
>>    <http://openser:password@192.168.0.20/company>
>>> <http://openser:password@192.168.0.20/company>")
>>> modparam("dispatcher", "table_name", "dispatcher")
>>> modparam("dispatcher", "flags", 2 )
>>> 
>>> modparam("dispatcher", "dst_avp", "$avp(i:271)")
>>> modparam("dispatcher", "grp_avp", "$avp(i:272)")
>>> modparam("dispatcher", "cnt_avp", "$avp(i:273)")
>>> 
>>> modparam("dispatcher", "ds_ping_method", "OPTIONS")
>>> modparam("dispatcher", "ds_ping_interval", 5)
>>> modparam("dispatcher", "ds_ping_from",
>>    "sip:+14109999351 at 192.168.0.2
>>    <mailto:sip%3A%2B14109999351 at 192.168.0.2>
>>> <mailto:sip%3A%2B14109999351 at 192.168.0.2
>>    <mailto:sip%253A%252B14109999351 at 192.168.0.2>>")
>>> modparam("dispatcher", "ds_probing_threshhold", 3)
>>> 
>>> As far as I can tell from the documentation and other people's
>>> examples, this should be all that is required to make this
>>    function...
>>> 
>>    Could you check and be sure the error:
>> 
>>           ERROR:core:search_first_avp: 0 ID or NULL NAME AVP!
>> 
>>    comes from the ds_mark_dst() ? - put some logs before and after
>>    it. Also eabling full debug (level 4) may also help.
>> 
>> 
>> My apologies, Bogdan, I should have done this better myself. I have 
>> traced the error to the ds_next_domain():
>> 
>> Config section from inside failure_route[]:
>> 
>> xlog("L_NOTICE", "[$Tf] HEREA\n");
>> if (ds_next_domain()) {
>>        xlog("L_NOTICE", "[$Tf] HEREB\n");
>>        .
>>        .
>> 
>> The logs contain:
>> [Thu Apr 15 11:23:06 2010] HEREA
>> ERROR:core:search_first_avp: 0 ID or NULL NAME AVP!
>> DBG:dispatcher:ds_next_dst: using [sip:192.168.0.20:5060 
>> <http://192.168.0.20:5060>]
>> [Thu Apr 15 11:23:06 2010] HEREB
>> 
>> 
>> So clearly the ds_next_domain() is producing it. However the function 
>> -is- returning the correct next entry in the dispatcher list, which is 
>> bizarre. I'm not sure, now, how this related to ds_select_domain() 
>> incorrectly choosing "marked" entries, alas.
> 
> -- 
> Bogdan-Andrei Iancu
> www.voice-system.ro
> 
> 
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users




More information about the Users mailing list