Hi!
I'm playing around with the dispatcher module and got it working but ran
into some expected problems.
Once I load-balance registrations I do run into the situation that
I won't be able to know where to redirect an INVITE, i.e. due to aliases.
If I use 'touri' to balance registers (let's pretend all registers
have usernames not phone numbers) I can spread those (almost) evenly
across multiple servers.
Once I receive an invite for a username I can use the dispatcher
function with the 'touri' hash to properly forward the request.
What happens if I INVITE a phone number?
A user might have an alias (aka his phone number) but since he
registered with his username and all we know in the INVITE is the
phone number the hashes might differ.
I'm thinking about looking up the username for a phonenumber utilizing
radius (same should work with the DB backend) and then use
ds_select_dst() to get the proper SIP server.
So in worst case it adds one hop to the whole thing but prevents
me from looking up all aliases on the dispatching box.
Any hints to get this done?
Looking at the ds_select_dst() implementation I either have to
replace the touri in ser routing in order to pass an already modified
*sip_msg to it or add another function to lookup a dst for a given
clear text string that I should be able to pull from Radius.
Cheers,
Hendrik
--
freenet Cityline GmbH, Hamburger Chaussee 2-4, 24114 Kiel, Germany
Phone: +49 (0)431 9020552, Fax: +49 (0)431 9020559
Internet:
http://www.freenet.de, eMail: hendrik.scholz(a)freenet-ag.de