[Users] tracking down problems adding permanent usrloc record

Klaus Darilion klaus.mailinglists at pernau.at
Mon Jan 2 18:55:26 CET 2006


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
> 
> 





More information about the Users mailing list