diff options
author | David Benjamin <davidben@mit.edu> | 2013-08-19 05:49:56 -0400 |
---|---|---|
committer | Karl Ramm <kcr@1ts.org> | 2013-09-28 13:45:17 -0400 |
commit | 241ec6e5c75b6872a32c5e05c17ebb4238e120e0 (patch) | |
tree | 0e32140698f4707d8027727ca0bef7c92c815b54 | |
parent | fa474fe09f89d69a058eb85c863c8778e9dfb77a (diff) |
Bump find_or_insert_uid's time limit
Basing it on krb4's CLOCK_SKEW value doesn't make any sense. We pick 900
because it is just over 128 + 256 + 512, the longest group of three timeouts in
the retransmit schedule used by the zephyrd. This allows us to miss two packets
in a row and still be fine.
-rw-r--r-- | h/internal.h | 5 | ||||
-rw-r--r-- | lib/Zinternal.c | 4 |
2 files changed, 3 insertions, 6 deletions
diff --git a/h/internal.h b/h/internal.h index 0753e67..93d76ab 100644 --- a/h/internal.h +++ b/h/internal.h @@ -19,10 +19,6 @@ #include <hesiod.h> #endif -#ifndef HAVE_KRB4 -#define CLOCK_SKEW 300 /* max time to cache packet ids */ -#endif - #include <arpa/nameser.h> #ifdef HAVE_ARPA_NAMESER_COMPAT_H #include <arpa/nameser_compat.h> @@ -43,6 +39,7 @@ #define Z_FRAGFUDGE 13 /* Room to for multinotice field */ #define Z_NOTICETIMELIMIT 30 /* Time to wait for fragments */ #define Z_INITFILTERSIZE 30 /* Starting size of uid filter */ +#define Z_FILTERTIMELIMIT 900 /* Max time to cache packet ids */ #define Z_AUTHMODE_NONE 0 /* no authentication */ #define Z_AUTHMODE_KRB4 1 /* authenticate using Kerberos V4 */ diff --git a/lib/Zinternal.c b/lib/Zinternal.c index ace1a81..07cd342 100644 --- a/lib/Zinternal.c +++ b/lib/Zinternal.c @@ -145,9 +145,9 @@ find_or_insert_uid(ZUnique_Id_t *uid, return 0; } - /* Age the uid buffer, discarding any uids older than the clock skew. */ + /* Age the uid buffer, discarding any uids older than the time limit. */ time(&now); - while (num && (now - buffer[start % size].t) > CLOCK_SKEW) + while (num && (now - buffer[start % size].t) > Z_FILTERTIMELIMIT) start++, num--; start %= size; |