[Users] tracking down problems adding permanent usrloc record

Bogdan-Andrei Iancu bogdan at voice-system.ro
Wed Jan 4 19:44:04 CET 2006


Hi,

actually the problem is in the openserctl script - it checks via FIFO if 
the user is or not an alias (that;s because internally same function is 
used for both adding aliases and users).

I will post a bug in order to have this fixed.

regards,
Bogdan

Klaus Darilion wrote:

> Hi Mike!
>
> I do not know why, but you need a lookup("aliases") somewhere in your 
> config, e.g.:
>
> route[5] {
>         # dummy route for aliases lookup
>     # this route will never be used,
>     # but we need it to enable
>     # openserctl ul add ....
>         lookup("aliases");
> }
>
> regards
> klaus
>
>
> Mike Williams wrote:
>
>> On Monday 02 January 2006 11:11, Juha Heinanen wrote:
>>
>>> Mike Williams writes:
>>> > I created the account 11112223333 at mydomain.net to test with, and 
>>> then I
>>> > attempted to use:
>>> >
>>> > openserctl ul add 11112223333 at etcvoip.net sip:18122228203 at etcvoip.net
>>> >
>>> > but it returned:
>>> >
>>> > error: 400; check if you use aliases in OpenSER
>>> >
>>> > I added the alias_db module to my config, but I still get errors. Any
>>> > advice? Should I add them manually to the location database?
>>>
>>> i have never used openserctl.  my management application writes
>>> permanent contacts directly to location table.  remember to tell via
>>> flags field that registration is permanent.
>>>
>>> -- juha
>>
>>
>>
>> I modified the openserctl script to give more output:
>>
>> 400 table (aliases) not found
>> error: 400; check if you use aliases in OpenSER
>>
>> on `openserctl ul add 11112223333 at etcvoip.net 
>> sip:18122228203 at etcvoip.net`
>>
>> I traced this message back to the ul_show_contact function in 
>> ul_fifo.c. Everything is fine until it gets to line 573, where it 
>> calls fifo_find_domain, which sets d=0. Then, in line 575, the error 
>> message given above is returned because d if now false.
>>
>> static inline void fifo_find_domain(str* _name, udomain_t** _d)
>> {
>>     dlist_t* ptr;
>>
>>     ptr = root;
>>     while(ptr) {
>>         if ((ptr->name.len == _name->len) &&
>>             !memcmp(ptr->name.s, _name->s, _name->len)) {
>>             break;
>>         }
>>         ptr = ptr->next;
>>     }
>>     
>>     if (ptr) {
>>         *_d = ptr->d;
>>     } else {
>>         *_d = 0;
>>     }
>> }
>>
>> I'm not a C programmer, so I don't really understand what's happening 
>> here, but it appears to be looping through a list to find a domain, 
>> checking to be sure their lengths and values match. It keeps looping 
>> until it finds one, and then quits on the first one. It appears that 
>> ptr doesn't point to anything in my case; it fails the next if, 
>> setting the passed-by-reference d to 0, leading me to think that it 
>> hasn't found any domains, or couldn't get a domain list in the 
>> beginning. What does this "ptr = root;" mean?
>>
>> I then tried running `openserctl domain show`, only to get:
>>
>> 500 command 'domain_dump' not available
>>
>> Now, I checked the actual database openser.domain table, and my 
>> domain appeared correctly. I am also loading the domain module on 
>> openser startup.
>>
>> Any ideas? I realize this is getting awfully deep into code, but I 
>> hope someone can help. It's probably a simple error on my part. 
>> Thanks in advance.
>>
>> Mike Williams
>>
>> _______________________________________________
>> Users mailing list
>> Users at openser.org
>> http://openser.org/cgi-bin/mailman/listinfo/users
>>
>>
>
>
> _______________________________________________
> Users mailing list
> Users at openser.org
> http://openser.org/cgi-bin/mailman/listinfo/users
>





More information about the Users mailing list