[Checkins] SVN: zope.sendmail/trunk/src/zope/sendmail/ close smtp connection on failed quit
Adam Groszer
agroszer at gmail.com
Sat Nov 1 15:51:59 EDT 2008
Log message for revision 92747:
close smtp connection on failed quit
Changed:
U zope.sendmail/trunk/src/zope/sendmail/mailer.py
U zope.sendmail/trunk/src/zope/sendmail/tests/test_mailer.py
-=-
Modified: zope.sendmail/trunk/src/zope/sendmail/mailer.py
===================================================================
--- zope.sendmail/trunk/src/zope/sendmail/mailer.py 2008-11-01 19:26:46 UTC (rev 92746)
+++ zope.sendmail/trunk/src/zope/sendmail/mailer.py 2008-11-01 19:51:58 UTC (rev 92747)
@@ -74,4 +74,4 @@
connection.quit()
except socket.sslerror:
#something weird happened while quiting
- pass
+ connection.close()
Modified: zope.sendmail/trunk/src/zope/sendmail/tests/test_mailer.py
===================================================================
--- zope.sendmail/trunk/src/zope/sendmail/tests/test_mailer.py 2008-11-01 19:26:46 UTC (rev 92746)
+++ zope.sendmail/trunk/src/zope/sendmail/tests/test_mailer.py 2008-11-01 19:51:58 UTC (rev 92747)
@@ -30,9 +30,13 @@
global SMTP
class SMTP(object):
+ failOnQuit = False
+
def __init__(myself, h, p):
myself.hostname = h
myself.port = p
+ myself.quited = False
+ myself.closed = False
if type(p) == type(u""):
raise socket.error("Int or String expected")
self.smtp = myself
@@ -47,8 +51,14 @@
self.password = password
def quit(self):
- self.quit = True
+ if self.failOnQuit:
+ raise socket.sslerror("dang")
+ self.quited = True
+ self.close()
+ def close(self):
+ self.closed = True
+
def has_extn(self, ext):
return True
@@ -80,7 +90,8 @@
self.assertEquals(self.smtp.fromaddr, fromaddr)
self.assertEquals(self.smtp.toaddrs, toaddrs)
self.assertEquals(self.smtp.msgtext, msgtext)
- self.assert_(self.smtp.quit)
+ self.assert_(self.smtp.quited)
+ self.assert_(self.smtp.closed)
def test_send_auth(self):
fromaddr = 'me at example.com'
@@ -98,9 +109,25 @@
self.assertEquals(self.smtp.fromaddr, fromaddr)
self.assertEquals(self.smtp.toaddrs, toaddrs)
self.assertEquals(self.smtp.msgtext, msgtext)
- self.assert_(self.smtp.quit)
+ self.assert_(self.smtp.quited)
+ self.assert_(self.smtp.closed)
+ def test_send_failQuit(self):
+ self.mailer.smtp.failOnQuit = True
+ try:
+ fromaddr = 'me at example.com'
+ toaddrs = ('you at example.com', 'him at example.com')
+ msgtext = 'Headers: headers\n\nbodybodybody\n-- \nsig\n'
+ self.mailer.send(fromaddr, toaddrs, msgtext)
+ self.assertEquals(self.smtp.fromaddr, fromaddr)
+ self.assertEquals(self.smtp.toaddrs, toaddrs)
+ self.assertEquals(self.smtp.msgtext, msgtext)
+ self.assert_(not self.smtp.quited)
+ self.assert_(self.smtp.closed)
+ finally:
+ self.mailer.smtp.failOnQuit = False
+
class TestSMTPMailerWithNoEHLO(TestSMTPMailer):
def setUp(self, port=None):
@@ -111,6 +138,8 @@
def __init__(myself, h, p):
myself.hostname = h
myself.port = p
+ myself.quited = False
+ myself.closed = False
if type(p) == type(u""):
raise socket.error("Int or String expected")
self.smtp = myself
More information about the Checkins
mailing list