diff --git a/src/modules/usrloc/dlist.c b/src/modules/usrloc/dlist.c index 14eb75b1d4b..a811df5326e 100644 --- a/src/modules/usrloc/dlist.c +++ b/src/modules/usrloc/dlist.c @@ -222,6 +222,9 @@ int ul_ka_db_records(int partidx) /* flags */ uc.cflags = VAL_BITMAP(ROW_VALUES(row) + 3); + /* server id */ + uc.server_id = server_id; + /* aor from username and domain */ ur.aor.s = aorbuf; ur.domain = &dom->name; diff --git a/src/modules/usrloc/ul_keepalive.c b/src/modules/usrloc/ul_keepalive.c index 3557848e34f..7955efa14bc 100644 --- a/src/modules/usrloc/ul_keepalive.c +++ b/src/modules/usrloc/ul_keepalive.c @@ -31,6 +31,7 @@ #include "../../core/ut.h" #include "../../core/resolve.h" #include "../../core/forward.h" +#include "../../core/globals.h" #include "../../core/parser/parse_uri.h" #include "../../core/parser/parse_from.h" #include "../../core/parser/parse_to.h" @@ -69,6 +70,7 @@ extern str ul_ka_from; extern str ul_ka_domain; extern str ul_ka_method; extern int ul_ka_mode; +extern int ul_ka_filter; extern unsigned int nat_bflag; static unsigned int _ul_ka_counter = 0; @@ -113,6 +115,9 @@ int ul_ka_urecord(urecord_t *ur) if (uc->c.len <= 0) { continue; } + if((ul_ka_filter&GAU_OPT_SERVER_ID) && (uc->server_id != server_id)) { + continue; + } if(ul_ka_mode & ULKA_NAT) { /* keepalive for natted contacts only */ if (nat_bflag == 0) {