]> git.pond.sub.org Git - empserver/blobdiff - src/lib/subs/wu.c
Limit telegram squashing to 5s total
[empserver] / src / lib / subs / wu.c
index 84549a0df459b7e416b209fb6d4f6dc1f86481b5..b700c3e47f45d93d864439106476e460007f2ab0 100644 (file)
@@ -51,9 +51,7 @@ static struct telstr last_tel[MAXNOC];
 void
 clear_telegram_is_new(natid to)
 {
-    last_tel[to].tel_type = 0;
     last_tel[to].tel_from = NATID_BAD;
-    last_tel[to].tel_date = 0;
 }
 
 /*
@@ -64,18 +62,14 @@ clear_telegram_is_new(natid to)
 static int
 telegram_is_new(natid to, struct telstr *tel)
 {
-    int is_new = 0;
-
-    is_new |= tel->tel_type != last_tel[to].tel_type;
-    is_new |= tel->tel_from != last_tel[to].tel_from;
-    is_new |= tel->tel_type != TEL_UPDATE &&
-       abs(tel->tel_date - last_tel[to].tel_date) > TEL_SECONDS;
-
-    last_tel[to].tel_type = tel->tel_type;
-    last_tel[to].tel_from = tel->tel_from;
-    last_tel[to].tel_date = tel->tel_date;
-
-    return is_new;
+    if (tel->tel_from != last_tel[to].tel_from
+       || tel->tel_type != last_tel[to].tel_type
+       || (tel->tel_type != TEL_UPDATE
+           && abs(tel->tel_date - last_tel[to].tel_date) > TEL_SECONDS)) {
+       last_tel[to] = *tel;
+       return 1;
+    }
+    return 0;
 }
 
 /*