[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