[tor-commits] [flashproxy/master] Check "OK" responses with an exception rather than an assertion.
dcf at torproject.org
dcf at torproject.org
Fri Oct 12 11:42:10 UTC 2012
commit 87b77670a0e391e53421cc404f383ffd14e87447
Author: David Fifield <david at bamsoftware.com>
Date: Fri Oct 12 04:30:35 2012 -0700
Check "OK" responses with an exception rather than an assertion.
The program tries reconnecting with this kind of exception.
---
facilitator/facilitator-email-poller | 23 +++++++++++++++++------
1 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/facilitator/facilitator-email-poller b/facilitator/facilitator-email-poller
index d6b1b75..5f26edd 100755
--- a/facilitator/facilitator-email-poller
+++ b/facilitator/facilitator-email-poller
@@ -240,11 +240,22 @@ def handle_message(msg):
log(u"registering %s" % safe_str(fac.format_addr(client_addr)))
fac.put_reg(FACILITATOR_ADDR, client_addr)
+def truncate_repr(s, n):
+ if not isinstance(s, basestring):
+ s = repr(s)
+ if len(s) > n:
+ return repr(s[:n]) + "[...]"
+ else:
+ return repr(s)
+def check_imap_return(typ, data):
+ if typ != "OK":
+ raise imaplib.IMAP4.abort("Got type \"%s\": %s" % (typ, truncate_repr(data, 100)))
+
def imap_get_uid(imap, index):
typ, data = imap.fetch(str(index), "(UID)")
if data[0] is None:
return None
- assert typ == "OK"
+ check_imap_return(typ, data)
# This grepping for the UID is bogus, but imaplib doesn't properly break up
# the list of name-value pairs for us.
m = re.match(r'^\d+\s+\(.*\bUID\s+(\d+)\b.*\)\s*$', data[0])
@@ -266,11 +277,11 @@ def imap_loop(imap):
# failsafe so that messages will eventually be deleted if we are not
# able to retrieve them. This act of copying also deletes from All Mail.
typ, data = imap.select("[Gmail]/All Mail")
- assert typ == "OK"
+ check_imap_return(typ, data)
imap.copy("1:*", "[Gmail]/Trash")
typ, data = imap.select("[Gmail]/Trash")
- assert typ == "OK"
+ check_imap_return(typ, data)
exists = int(data[0])
if exists > 0:
while True:
@@ -281,12 +292,12 @@ def imap_loop(imap):
break
typ, data = imap.uid("FETCH", uid, "(BODY[])")
- assert typ == "OK"
+ check_imap_return(typ, data)
msg_text = data[0][1]
typ, data = imap.uid("STORE", uid, "+FLAGS", "\\Deleted")
- assert typ == "OK"
+ check_imap_return(typ, data)
typ, data = imap.expunge()
- assert typ == "OK"
+ check_imap_return(typ, data)
try:
msg = email.message_from_string(msg_text)
More information about the tor-commits
mailing list