diff -r a8f8ada7825c Lib/smtpd.py --- a/Lib/smtpd.py Fri Jun 12 16:48:30 2015 -0400 +++ b/Lib/smtpd.py Sat Jun 13 16:28:44 2015 +1200 @@ -399,10 +399,6 @@ if not arg: self.push('501 Syntax: HELO hostname') return - # See issue #21783 for a discussion of this behavior. - if self.seen_greeting: - self.push('503 Duplicate HELO/EHLO') - return self._set_rset_state() self.seen_greeting = arg self.push('250 %s' % self.fqdn) @@ -411,10 +407,6 @@ if not arg: self.push('501 Syntax: EHLO hostname') return - # See issue #21783 for a discussion of this behavior. - if self.seen_greeting: - self.push('503 Duplicate HELO/EHLO') - return self._set_rset_state() self.seen_greeting = arg self.extended_smtp = True diff -r a8f8ada7825c Lib/test/test_smtpd.py --- a/Lib/test/test_smtpd.py Fri Jun 12 16:48:30 2015 -0400 +++ b/Lib/test/test_smtpd.py Sat Jun 13 16:28:44 2015 +1200 @@ -333,14 +333,15 @@ def test_EHLO_duplicate(self): self.write_line(b'EHLO example') self.write_line(b'EHLO example') - self.assertEqual(self.channel.socket.last, - b'503 Duplicate HELO/EHLO\r\n') + self.assertEqual(self.channel.socket.last, b'250 HELP\r\n') def test_EHLO_HELO_duplicate(self): + name = smtpd.socket.getfqdn() self.write_line(b'EHLO example') + self.assertEqual(self.channel.socket.last, b'250 HELP\r\n') self.write_line(b'HELO example') self.assertEqual(self.channel.socket.last, - b'503 Duplicate HELO/EHLO\r\n') + '250 {}\r\n'.format(name).encode('ascii')) def test_HELO(self): name = smtpd.socket.getfqdn() @@ -351,8 +352,7 @@ def test_HELO_EHLO_duplicate(self): self.write_line(b'HELO example') self.write_line(b'EHLO example') - self.assertEqual(self.channel.socket.last, - b'503 Duplicate HELO/EHLO\r\n') + self.assertEqual(self.channel.socket.last, b'250 HELP\r\n') def test_HELP(self): self.write_line(b'HELP') @@ -377,10 +377,11 @@ b'501 Syntax: HELO hostname\r\n') def test_HELO_duplicate(self): + name = smtpd.socket.getfqdn() self.write_line(b'HELO example') self.write_line(b'HELO example') self.assertEqual(self.channel.socket.last, - b'503 Duplicate HELO/EHLO\r\n') + '250 {}\r\n'.format(name).encode('ascii')) def test_HELO_parameter_rejected_when_extensions_not_enabled(self): self.extended_smtp = False