Please post this on a bug on jira.freeswitch.org for further discussion. Mike On Dec 9, 2009, at 5:23 AM, Matteo wrote:
Hi all,
as promised, I've created a small patch to handle PRESENCE_IN and MWI events over multicast (using mod event multicast).
When used along registrations sharing with multicast, you can send presence info over the mcast-bus :) and deliver the information to the phones, even if the call is not handled on the same switch the phone sent the subscription to. To make it work, the sip domain must be the all for all the machines and on the phones, otherwise the phones will ignore them.
This allows distributed BLF and MWI notifications :)
BUT doing that I noticed a issue that must be addressed imho, which arises when you handle NAT.
"distributed blf" works behind nat right now, since the event will get sent to all switches, but delivered only to the phone were fs knows about the subscription. Which is the one where the phone registers to.
"distributed mwi" results into sending N copies of same MWI notifications , where N is the number of switches. Behind NAT the phone will receive only the one sent by the switch where it's registered to.
We can avoid sending multiple event if we're able to know which is the "original" server where the phone registered to.
This is also needed to call the phone: think about a distributed registration cluster. if Alice (reg'ed on FS1) calls Bob on (reg'ed on FS2), right now the call is routed from FS1 to Bob, since FS1 knows where Bob is. This works ok without NAT.
But with NAT FS1 cannot contact Bob, because Bob is on FS2 "really" and can receive calls from FS2 (nat pinhole).
The solution is to check where Bob is (looking to registration table), get the "real" server and route the call from FS1 to FS2 then to Bob.
But right now, sofia registration does not have a field holding the "original" server. If we want to leverage on distributed registration using multicast, I think knowing the original server is "a must".
the patch is pretty trivial, but we must add a field onto the db.
Doing that, we can also filter MWI notification, and send them only if the phone is "really" registered on the server which receives the MWI event over the mcast-bus .
What do you think about it?
Regards, mat
P.S. this is my first patch to FS, so please be kind on my mistakes :)
<sofia.c.diff>_______________________________________________ FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org