Browse Source

Merge remote-tracking branch 'origin/master' into 4.1

4.1 4.1.17
karl anderson 9 years ago
parent
commit
a6a6b251ae
3 changed files with 38 additions and 21 deletions
  1. +32
    -18
      kamailio/nodes-role.cfg
  2. +1
    -1
      kamailio/presence-reset.cfg
  3. +5
    -2
      kamailio/presence-role.cfg

+ 32
- 18
kamailio/nodes-role.cfg View File

@ -35,16 +35,22 @@ route[NODES_ADVERTISE_ROUTE]
event_route[kazoo:consumer-event-nodes-advertise]
{
if($shtinc(nodes=>$(kzE{kz.json,Node})::count) == 1) {
xlog("L_INFO", "$(kzE{kz.json,Msg-ID})|nodes|hearbeat from new node $(kzE{kz.json,Node})\n");
}
$var(count) = $shtinc(nodes=>$(kzE{kz.json,Node})::count);
if($var(count) == 0) {
xlog("L_INFO", "$(kzE{kz.json,Msg-ID})|nodes|hearbeat for reconnected node $(kzE{kz.json,Node})\n");
$var(count) = $shtinc(nodes=>$(kzE{kz.json,Node})::count);
} else {
if($var(count) == 1) {
xlog("L_INFO", "$(kzE{kz.json,Msg-ID})|nodes|hearbeat from new node $(kzE{kz.json,Node})\n");
}
}
mq_add("node_heartbeat", "$(kzE{kz.json,Node})", "$kzE");
}
event_route[htable:expired:nodes]
{
if($shtrecord(key) =~ "::count$$") {
if($shtrecord(value) == 0) {
if($shtrecord(value) == -1) {
xlog("L_INFO", "htable|nodes|node $(shtrecord(key){s.rm,::count}) is still unreachable\n");
}
mq_add("node_track", "$shtrecord(key)", "");
@ -59,7 +65,7 @@ route[NODE_TRACK_ROUTE]
$var(runloop) = 1;
while(mq_fetch("node_track") == 1 && $var(runloop) < MAX_WHILE_LOOPS) {
$var(Key) = $mqk(node_track);
$sht(nodes=>$var(Key)) = 0;
$sht(nodes=>$var(Key)) = -1;
$var(runloop) = $var(runloop) + 1;
}
}
@ -85,28 +91,36 @@ route[CHECK_MEDIA_SERVERS]
if($(var(Payload){kz.json,Media-Servers}) == "") {
return;
}
$var(Media) = $(var(Payload){kz.json,Media-Servers});
$var(Zone) = $(var(Payload){kz.json,AMQP-Broker-Zone});
$var(Dot) = ".";
$var(Perc) = "%";
avp_delete("$avp(MediaKeys)");
avp_delete("$avp(MediaKeys)/g");
if(kazoo_json_keys($var(Payload), "Media-Servers", "$avp(MediaKeys)") == 1) {
$var(Count) = $cnt($avp(MediaKeys));
$var(Idx) = 0;
while( $var(Idx) < $var(Count) ) {
$var(MediaKey) = $(avp(MediaKeys)[$var(Idx)]{s.replace,$var(Dot),$var(Perc)});
$var(MediaUrl1) = $(var(Payload){kz.json,Media-Servers.$var(MediaKey).Interface.URL});
if($var(MediaUrl1) != "") {
$var(MediaUrl) = $(var(MediaUrl1){re.subst,/^sip:(.*)@(.*)/sip:\2/});
if($shtinc(media=>$var(MediaUrl)::count) == 1) {
$sht(media=>$var(MediaUrl)::zone) = $var(Zone);
$shtex(media=>$var(MediaUrl)::zone) = 0;
route(MEDIA_SERVER_UP);
};
$shtex(media=>$var(MediaUrl)::count) = ($(var(Payload){kz.json,Expires}{s.int}) / 1000) + NODES_FUDGE_FACTOR;
}
avp_delete("$avp(ProfileKeys)/g");
if(kazoo_json_keys($var(Payload), "Media-Servers.$var(MediaKey).Interfaces", "$avp(ProfileKeys)") == 1) {
$var(ProfileCount) = $cnt($avp(ProfileKeys));
$var(ProfileIdx) = 0;
xlog("L_INFO", "nodes|media|$var(Node) profile count for $(avp(MediaKeys)[$var(Idx)]) is : $var(ProfileCount)\n");
while( $var(ProfileIdx) < $var(ProfileCount) ) {
$var(MediaRawUrl) = $(var(Payload){kz.json,Media-Servers.$var(MediaKey).Interfaces.$(avp(ProfileKeys)[$var(ProfileIdx)]).URL});
$var(MediaUrl) = $(var(MediaRawUrl){re.subst,/^sip:(.*)@(.*)/sip:\2/});
if($shtinc(media=>$var(MediaUrl)::count) == 1) {
$sht(media=>$var(MediaUrl)::zone) = $var(Zone);
$shtex(media=>$var(MediaUrl)::zone) = 0;
route(MEDIA_SERVER_UP);
};
$shtex(media=>$var(MediaUrl)::count) = ($(var(Payload){kz.json,Expires}{s.int}) / 1000) + NODES_FUDGE_FACTOR;
$var(ProfileIdx) = $var(ProfileIdx) + 1;
}
}
$var(Idx) = $var(Idx) + 1;
}
};


+ 1
- 1
kamailio/presence-reset.cfg View File

@ -106,7 +106,7 @@ event_route[kazoo:consumer-event-presence-reset]
}
xlog("L_INFO", "$(kzE{kz.json,Msg-ID})|reset|received presence reset for $(kzE{kz.json,Username})@$(kzE{kz.json,Realm})\n");
$var(presentity) = "sip:" + $(kzE{kz.json,Username}) + "@" + $(kzE{kz.json,Realm});
$var(presentity) = $_s(sip:$(kzE{kz.json,Username})@$(kzE{kz.json,Realm}));
route(COUNT_SUBSCRIBERS);
sql_query("exec", 'delete from presentity where domain="$(kzE{kz.json,Realm})" and username = "$(kzE{kz.json,Username})"');


+ 5
- 2
kamailio/presence-role.cfg View File

@ -195,8 +195,8 @@ route[COUNT_PRESENTITIES]
route[COUNT_SUBSCRIBERS]
{
$var(Query) = $_s(select event, (select count(*) from active_watchers b where presentity_uri = "$(kzE{kz.json,From})" and b.event = a.event) count from event_list a);
$var(p) = "uri="+$(kzE{kz.json,From});
$var(Query) = $_s(select event, (select count(*) from active_watchers b where presentity_uri = "$var(presentity)" and b.event = a.event) count from event_list a);
$var(p) = $_s(uri=$var(presentity));
if (sql_xquery("cb", "$var(Query)", "subs") == 1)
{
while($xavp(subs) != $null) {
@ -220,6 +220,7 @@ event_route[kazoo:consumer-event-presence-dialog-update]
if($(kzE{kz.json,State}) == "terminated") {
route(COUNT_PRESENTITIES);
} else {
$var(presentity) = $(kzE{kz.json,From});
route(COUNT_SUBSCRIBERS);
}
@ -247,6 +248,7 @@ event_route[kazoo:consumer-event-presence-dialog-update]
event_route[kazoo:consumer-event-presence-mwi-update]
{
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|received message-summary update for $(kzE{kz.json,From})\n");
$var(presentity) = $(kzE{kz.json,From});
route(COUNT_SUBSCRIBERS);
if($xavp(watchers=>message-summary) > 0) {
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|publishing $(kzE{kz.json,From}) message-summary update for $xavp(watchers=>message-summary) watchers\n");
@ -260,6 +262,7 @@ event_route[kazoo:consumer-event-presence-mwi-update]
event_route[kazoo:consumer-event-presence-update]
{
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|received presence update for $(kzE{kz.json,From})\n");
$var(presentity) = $(kzE{kz.json,From});
route(COUNT_SUBSCRIBERS);
if($xavp(watchers=>presence) > 0) {
xlog("L_INFO", "$(kzE{kz.json,Call-ID})|log|publishing $(kzE{kz.json,From}) presence update for $xavp(watchers=>presence) watchers\n");


Loading…
Cancel
Save