[Twisted-Python] [PATCH] SMTP cleanup, do not hide error messages

Hi. Here's a patch that does two things to twisted.protocol.smtp: 1) use sendLine instead of self.transport.write, for prettiness and also to make debug printing in sendLine be actually useful. 2) use the code and error message from SMTPBadSender and SMTPBadRcpt exceptions trapped, not a hardcoded "550 I'm not telling you what want wrong." Helps debugging scalemail a _lot_. You have at most a few days to protest, or I will commit. Explicitly saying "looks good" appreciated. Index: twisted/protocols/smtp.py =================================================================== RCS file: /cvs/Twisted/twisted/protocols/smtp.py,v retrieving revision 1.69 diff -u -u -r1.69 smtp.py --- twisted/protocols/smtp.py 23 Jul 2003 23:10:54 -0000 1.69 +++ twisted/protocols/smtp.py 2 Aug 2003 14:46:49 -0000 @@ -444,9 +444,9 @@ lines = message.splitlines() lastline = lines[-1:] for line in lines[:-1]: - self.transport.write('%3.3d-%s\r\n' % (code, line)) - self.transport.write('%3.3d %s\r\n' % (code, - lastline and lastline[0] or '')) + self.sendLine('%3.3d-%s' % (code, line)) + self.sendLine('%3.3d %s' % (code, + lastline and lastline[0] or '')) def lineReceived(self, line): self.resetTimeout() @@ -558,7 +558,9 @@ def _ebFromValidate(self, failure): if failure.check(SMTPBadSender): - self.sendCode(550, 'Cannot receive for specified address') + self.sendCode(failure.value.code, + 'Cannot receive for specified address %s: %s' + % (repr(str(failure.value.addr)), failure.value.resp)) elif failure.check(SMTPServerError): self.sendCode(failure.value.code, failure.value.resp) else: @@ -632,7 +634,7 @@ def _ebToValidate(self, failure): if failure.check(SMTPBadRcpt): - self.sendCode(550, 'Cannot receive for specified address') + self.sendCode(failure.value.code, failure.value.resp) elif failure.check(SMTPServerError): self.sendCode(failure.value.code, failure.value.resp) else: -- :(){ :|:&};:
participants (2)
-
Glyph Lefkowitz
-
Tommi Virtanen