2013/9/29 Stoyan Mihaylov <stoyan.v.mihaylov(a)gmail.com>om>:
I think, it will be much better to plane
reorganization of whole process. To
start using Kamailio as registrar and load balance, and Asterisk as media
servers, dial plan etc.
I agree. This is the next for me. I kind of hope to use freeswitch for that too.
But, in current situation, I can suggest next:
1. You can not use authorization of Kamailio. You can use Kamailio only and
alone as load balance. All requests to Kamailio you can forward to Asterisk
servers.
2. When you get first request from somebody - you can do something like:
ds_select_dst("1","4");
$sht(forw=>$ft)=$du;
This way you will store address of Asterisk, where you forwarded request.
3. When you have next request from same "person" you can do:
$du=$sht(forw=>$ft);
I am using something alike, but only for active calls. All my registrations
are handled by Kamailio, and Asterisk servers do not participate in
authentication.
I guess you're registering in Kamailio but your "TOASTERISK" and
"FROMASTERISK" routes relay the entire session directly to the
asterisk server that was selected without touching it. I must look in
this.
Regarding the "easy" solution you proposed, if I understand correctly,
I need to implement a single route function with a simple dipatcher,
like the example in the dipatcher module:
route{
if ( !mf_process_maxfwd_header("10") )
{
sl_send_reply("483","To Many Hops");
drop();
};
ds_select_dst("2", "0");
forward();
# t_relay();
}
How do I modify that example to recognize that a request is coming
from the same "user" ?