Issue 25328: ValueError in smtpd.py init() is not raised (original) (raw)

Created on 2015-10-06 19:59 by barry, last changed 2022-04-11 14:58 by admin. This issue is now closed.

Messages (6)

msg252426 - (view)

Author: Barry A. Warsaw (barry) * (Python committer)

Date: 2015-10-06 19:59

In Python 3.5, SMTPChannel.init() ensures that enable_SMTPUTF8 and decode_data arguments are not both true. This even seems to be tested in test_smtpd.py. But it's clearly bogus because the exception is never raised! It just creates and throws away the exception instance.

msg252567 - (view)

Author: Mauro S. M. Rodrigues (maurosr) *

Date: 2015-10-08 20:44

Hi Barry, I was testing this and it seems to work, am I doing something wrong in order to reproduce it? I've used the same parameters from the unit tests

Python 3.5.0+ (3.5:1e99ba6b7c98, Oct 8 2015, 17:12:06) [GCC 4.8.4] on linux Type "help", "copyright", "credits" or "license" for more information.

import smtpd smtpd.SMTPServer(("127.0.0.1", 0), ('b',0),enable_SMTPUTF8=True,decode_data=True) Traceback (most recent call last): File "", line 1, in File "/home/maurosr/dev/cpython/Lib/smtpd.py", line 645, in init raise ValueError("The decode_data and enable_SMTPUTF8" ValueError: The decode_data and enable_SMTPUTF8 parameters cannot be set to True at the same time.

msg252568 - (view)

Author: Barry A. Warsaw (barry) * (Python committer)

Date: 2015-10-08 20:48

On Oct 08, 2015, at 08:44 PM, Mauro S. M. Rodrigues wrote:

Python 3.5.0+ (3.5:1e99ba6b7c98, Oct 8 2015, 17:12:06) [GCC 4.8.4] on linux Type "help", "copyright", "credits" or "license" for more information.

import smtpd smtpd.SMTPServer(("127.0.0.1", 0), ('b',0),enable_SMTPUTF8=True,decode_data=True) Traceback (most recent call last): File "", line 1, in File "/home/maurosr/dev/cpython/Lib/smtpd.py", line 645, in init raise ValueError("The decode_data and enable_SMTPUTF8" ValueError: The decode_data and enable_SMTPUTF8 parameters cannot be set to True at the same time.

That's testing the SMTPServer.init() which looks fine. It's the SMTPChannel.init() that's broken.

msg252589 - (view)

Author: Xiang Zhang (xiang.zhang) * (Python committer)

Date: 2015-10-09 06:23

I think this is a typo. The raise is left out.

In test_smtpd.py, it only tests the raise condition in SMTPServer but not STMPChannel.

I add the raise and a corresponding test in SMTPDChannelTest.

msg252615 - (view)

Author: Roundup Robot (python-dev) (Python triager)

Date: 2015-10-09 14:22

New changeset d471cf4a73b2 by R David Murray in branch '3.5': #25328: add missing raise keyword in decode_data+SMTPUTF8 check. https://hg.python.org/cpython/rev/d471cf4a73b2

New changeset 576128c0d068 by R David Murray in branch 'default': Merge #25328: add missing raise keyword in decode_data+SMTPUTF8 check. https://hg.python.org/cpython/rev/576128c0d068

msg252616 - (view)

Author: R. David Murray (r.david.murray) * (Python committer)

Date: 2015-10-09 14:25

Thanks, Xiang. Your analysis was correct and your patch is good.

For anyone who is curious, Barry discovered this while writing tests for a new aiosmtpd, which is based on the existing smtpd code.

History

Date

User

Action

Args

2022-04-11 14:58:22

admin

set

github: 69515

2015-10-09 14:25:36

r.david.murray

set

status: open -> closed
type: behavior
messages: +

resolution: fixed
stage: resolved

2015-10-09 14:22:58

python-dev

set

nosy: + python-dev
messages: +

2015-10-09 06:23:18

xiang.zhang

set

files: + SMTPChannel_raise_ValueError.patch

nosy: + xiang.zhang
messages: +

keywords: + patch

2015-10-08 20:48:03

barry

set

messages: +

2015-10-08 20:44:53

maurosr

set

nosy: + maurosr
messages: +

2015-10-06 19:59:27

barry

create