From 669f51997186d641cfe39a57317af34d9932c2d3 Mon Sep 17 00:00:00 2001 From: lazedo Date: Wed, 10 Dec 2014 02:30:08 +0000 Subject: [PATCH] handle duplicate events handle duplicate events since dbtext doesn't support transactions --- kamailio/presence-role.cfg | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/kamailio/presence-role.cfg b/kamailio/presence-role.cfg index cc4cf00..40a3353 100644 --- a/kamailio/presence-role.cfg +++ b/kamailio/presence-role.cfg @@ -1,4 +1,6 @@ ######## Presence server module ######## +modparam("htable", "htable", "p=>size=32;autoexpire=600;") + loadmodule "presence.so" loadmodule "presence_dialoginfo.so" loadmodule "presence_mwi.so" @@ -82,10 +84,22 @@ route[HANDLE_PUBLISH] event_route[kazoo:consumer-event-presence-update] { - xlog("L_INFO", "received $(kzE{kz.json,Event-Package}) update for $(kzE{kz.json,From}) $kzE"); - kazoo_pua_publish($kzE); - pres_refresh_watchers("$(kzE{kz.json,From})", "$(kzE{kz.json,Event-Package})", 1); - + if( $(kzE{kz.json,Event-Package}) == "dialog") { + if($sht(p=>$(kzE{kz.json,Call-ID})) != $(kzE{kz.json,State})) { + xlog("L_INFO", "received $(kzE{kz.json,Event-Package}) update for $(kzE{kz.json,From}) $kzE"); + xlog("L_INFO", "payload $kzE"); + $sht(p=>$(kzE{kz.json,Call-ID})) = $(kzE{kz.json,State}); + kazoo_pua_publish($kzE); + pres_refresh_watchers("$(kzE{kz.json,From})", "$(kzE{kz.json,Event-Package})", 1); + } else { + xlog("L_INFO", "received duplicate $(kzE{kz.json,Event-Package}) update for $(kzE{kz.json,From}) $kzE"); + xlog("L_INFO", "payload $kzE"); + } + } else { + xlog("L_INFO", "received $(kzE{kz.json,Event-Package}) update for $(kzE{kz.json,From}) $kzE"); + kazoo_pua_publish($kzE); + pres_refresh_watchers("$(kzE{kz.json,From})", "$(kzE{kz.json,Event-Package})", 1); + } } # vim: tabstop=4 softtabstop=4 shiftwidth=4 expandtab