Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-31711: On SSLObject.write method, added assert that data has content. #17671

Closed
wants to merge 2 commits into from

Conversation

choyos
Copy link

@choyos choyos commented Dec 20, 2019

This avoid to rise ssl.SSLEOFError on petition that has no content on response.

https://bugs.python.org/issue31711

…void to rise ssl.SSLEOFError on petition that has no content on response.
@the-knights-who-say-ni
Copy link

Hello, and thanks for your contribution!

I'm a bot set up to make sure that the project can legally accept this contribution by verifying everyone involved has signed the PSF contributor agreement (CLA).

Recognized GitHub username

We couldn't find a bugs.python.org (b.p.o) account corresponding to the following GitHub usernames:

@choyos

This might be simply due to a missing "GitHub Name" entry in one's b.p.o account settings. This is necessary for legal reasons before we can look at this contribution. Please follow the steps outlined in the CPython devguide to rectify this issue.

You can check yourself to see if the CLA has been received.

Thanks again for the contribution, we look forward to reviewing it!

@choyos choyos changed the title issue31711: On SSLObject.write method, added assert that data has content. #31711: On SSLObject.write method, added assert that data has content. Dec 20, 2019
@raulcd
Copy link
Contributor

raulcd commented Dec 22, 2019

Hi,
Thanks for your contribution. Why would you want to obscure this returning an emtpy string. To me raising an Exception sounds like the approach we should maintain. Can you elaborate more on the case of why this behaviour has to change?
Thanks
Raúl

@tiran tiran changed the title #31711: On SSLObject.write method, added assert that data has content. bpo-31711: On SSLObject.write method, added assert that data has content. Dec 23, 2019
Lib/ssl.py Outdated
@@ -894,7 +894,10 @@ def write(self, data):

The 'data' argument must support the buffer interface.
"""
return self._sslobj.write(data)
if data != b'':
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if data:

Lib/ssl.py Outdated
if data != b'':
return self._sslobj.write(data)
else:
return ""
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

write returns the number of bytes sent. The function should either return 0 or fail with a more useful exception.

@bedevere-bot
Copy link

A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated.

Once you have made the requested changes, please leave a comment on this pull request containing the phrase I have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

@joernheissler
Copy link
Contributor

To me raising an Exception sounds like the approach we should maintain. Can you elaborate more on the case of why this behaviour has to change?

See https://bugs.python.org/issue31711 for some discussion. Currently, the behaviour is undefined, i.e. instead of an exception something else may happen. Some code change is required to achieve defined behaviour, whichever that is.

I prefer a noop.

@slingamn
Copy link

Previous PR implementing no-op behavior: #7559

@choyos
Copy link
Author

choyos commented Jan 9, 2020

Sorry about the delay. I have made the requested changes as suggested by @tiran.
Also, I have looked #7559 indicated by @slingamn. Both solutions seem fine for me, but I think this change is less critical if the C function is used on other points, avoiding regressions.
If there was another solution to this problem, it would also be fine for me, but it needs to be solved.

@csabella
Copy link
Contributor

@choyos, the bot could not find a signed CLA for you. Please take a look at the instructions above for setting that up.

@tiran
Copy link
Member

tiran commented Apr 19, 2021

Thanks to PEP 644 the issue will be fixed in 3.10 by using SSL_read_ex and SSL_write_ex() functions. I couldn't use the functions earlier because Python had to support older OpenSSL versions and LibreSSL. #25468

@tiran tiran closed this Apr 19, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants