From 1fa4b72c84b7a40787a83241b234355ada380a24 Mon Sep 17 00:00:00 2001
From: Stuart Gathman <stuart@gathman.org>
Date: Mon, 3 Sep 2007 16:18:45 +0000
Subject: [PATCH] Delete unparseable timestamps when loading address cache.
These have arisen because of failure to parse MAIL FROM properly. Will have
to tighten up MAIL FROM parsing to match RFC.
---
Milter/cache.py | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/Milter/cache.py b/Milter/cache.py
index e8ab0b5..16a5a1b 100644
--- a/Milter/cache.py
+++ b/Milter/cache.py
@@ -10,6 +10,9 @@
# CBV results.
#
# $Log$
+# Revision 1.7 2007/01/25 22:47:26 customdesigned
+# Persist blacklisting from delayed DSNs.
+#
# Revision 1.6 2007/01/19 23:31:38 customdesigned
# Move parse_header to Milter.utils.
# Test case for delayed DSN parsing.
@@ -66,13 +69,17 @@ class AddrCache(object):
for ln in fp:
try:
rcpt,ts = ln.strip().split(None,1)
- l = time.strptime(ts,AddrCache.time_format)
- t = time.mktime(l)
- if t < too_old:
- changed = True
- continue
- cache[rcpt.lower()] = (t,None)
- except:
+ try:
+ l = time.strptime(ts,AddrCache.time_format)
+ t = time.mktime(l)
+ if t < too_old:
+ changed = True
+ continue
+ cache[rcpt.lower()] = (t,None)
+ except: # unparsable timestamp - likely garbage
+ changed = True
+ continue
+ except: # manual entry (no timestamp)
cache[ln.strip().lower()] = (now,None)
wfp.write(ln)
if changed:
--
GitLab