Skip to content

GH-88968: Reject socket that is already used as a transport - #98010

Merged
gvanrossum merged 4 commits into
python:mainfrom
gvanrossum:reject-sock-reuse
Oct 7, 2022
Merged

GH-88968: Reject socket that is already used as a transport#98010
gvanrossum merged 4 commits into
python:mainfrom
gvanrossum:reject-sock-reuse

Conversation

@gvanrossum

@gvanrossumgvanrossum commented Oct 7, 2022

Copy link
Copy Markdown
Member

Add a check to _make_socket_transport() that a socket passed in isn't already in use by a transport.
If it was, this would indicate that someone had closed the socket but not the transport (or the writer built on top of it).

@kumaraditya303

Copy link
Copy Markdown
Contributor

I think SSL socket and datagram have the same issue though I haven't verified this. Perhaps also add this check to _make_datagram_transport and _make_ssl_transport?

@gvanrossum

Copy link
Copy Markdown
MemberAuthor

Done.

I worried a bit about how thoughly to test this, but then realized that this code is tested every time a transport is created using one of these functions -- even if the user didn't pass sock=..., since it is called if the socket was created by the higher-level code (e.g. create_connection) too.

@kumaraditya303kumaraditya303 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

LGTM, I think news can be skipped as the change is very small, leaving up to you to decide.

@gvanrossum
gvanrossum merged commit c062764 into python:mainOct 7, 2022
@gvanrossum
gvanrossum deleted the reject-sock-reuse branch October 7, 2022 19:57
carljm added a commit to carljm/cpython that referenced this pull request Oct 8, 2022
* main: (38 commits)
pythongh-92886: make test_ast pass with -O (assertions off) (pythonGH-98058)
pythongh-92886: make test_coroutines pass with -O (assertions off) (pythonGH-98060)
pythongh-57179: Add note on symlinks for os.walk (python#94799)
pythongh-94808: Fix regex on exotic platforms (python#98036)
pythongh-90085: Remove vestigial -t and -c timeit options (python#94941)
pythonGH-83901: Improve Signature.bind error message for missing keyword-only params (python#95347)
pythongh-61105: Add default param, note on using cookiejar subclass (python#95427)
pythongh-96288: Add a sentence to `os.mkdir`'s docstring. (python#96271)
pythongh-96073: fix backticks in NEWS entry (pythonGH-98056)
pythongh-92886: [clinic.py] raise exception on invalid input instead of assertion (pythonGH-98051)
pythongh-97997: Add col_offset field to tokenizer and use that for AST nodes (python#98000)
pythonGH-88968: Reject socket that is already used as a transport (python#98010)
pythongh-96346: Use double caching for re._compile() (python#96347)
pythongh-91708: Revert params note in urllib.parse.urlparse table (python#96699)
pythongh-96265: Fix some formatting in faq/design.rst (python#96924)
pythongh-73196: Add namespace/scope clarification for inheritance section (python#92840)
pythongh-97646: Change `.js` and `.mjs` files mimetype to conform to RFC 9239 (python#97934)
pythongh-97923: Always run Ubuntu SSL tests with others in CI (python#97940)
pythongh-97956: Mention `generate_global_objects.py` in `AC How-To` (python#97957)
pythongh-96959: Update HTTP links which are redirected to HTTPS (python#98039)
...
Sign up for freeto 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.

3 participants

@gvanrossum@kumaraditya303@bedevere-bot