Sfoglia il codice sorgente

usrloc: keepalive server id filtering also for in-memory contacts

Daniel-Constantin Mierla 5 anni fa
parent
commit
30eda8a8f2
2 ha cambiato i file con 8 aggiunte e 0 eliminazioni
  1. 3 0
      src/modules/usrloc/dlist.c
  2. 5 0
      src/modules/usrloc/ul_keepalive.c

+ 3 - 0
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;

+ 5 - 0
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) {