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

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

Merged
merged 4 commits into from
Oct 7, 2022

Conversation

gvanrossum
Copy link
Member

@gvanrossum gvanrossum commented Oct 7, 2022

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
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
Member Author

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.

Copy link
Contributor

@kumaraditya303 kumaraditya303 left a comment

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:main Oct 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 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.

None yet

3 participants