]> git.pond.sub.org Git - empserver/commitdiff
Limit telegram squashing to 5s total
authorMarkus Armbruster <armbru@pond.sub.org>
Mon, 21 Nov 2011 19:38:02 +0000 (20:38 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 29 Dec 2011 10:47:07 +0000 (11:47 +0100)
Before, only the time between adjacent telegrams was limited, not the
total time.

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;
 }
 
 /*