GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GH-103472: close response in HTTPConnection._tunnel by graingert · Pull Request #103473 · python/cpython

Conversation

@graingert

@graingert graingert commented Apr 12, 2023 •
edited by bedevere-bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor
  • Issue: ResourceWarning due to unclosed response in http.client.HTTPConnection._tunnel #103472

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@graingert
pythonGH-103472: close response in HTTPConnection._tunnel
86952ce
@bedevere-bot bedevere-bot mentioned this pull request Apr 12, 2023
ResourceWarning due to unclosed response in http.client.HTTPConnection._tunnel #103472
Closed
@bedevere-bot bedevere-bot added the awaiting review label Apr 12, 2023
@blurb-it
📜🤖 Added by blurb_it.
6508762
@graingert
graingert marked this pull request as ready for review April 12, 2023 13:07
graingert
graingert commented Apr 12, 2023
View reviewed changes
Comment thread Misc/NEWS.d/next/Library/2023-04-12-13-04-16.gh-issue-103472.C6bOHv.rst Resolved

Uh oh!

There was an error while loading. Please reload this page.

graingert added 2 commits April 12, 2023 15:08
@graingert
Update Misc/NEWS.d/next/Library/2023-04-12-13-04-16.gh-issue-103472.C…
f88793c
…6bOHv.rst
@graingert
Merge branch 'main' into close-response-in-http-client-tunnel
959db96
pquentin
pquentin approved these changes Apr 25, 2023
View reviewed changes
@graingert
Merge branch 'main' into close-response-in-http-client-tunnel
5500734
@arhadthedev

arhadthedev commented Apr 25, 2023

Copy link
Copy Markdown
Member

@gpshead (as a committer into Lib/http/client.py)

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@graingert
test that HTTPConnection._tunnel closes the response on exceptions
2aa460c
@graingert
graingert force-pushed the close-response-in-http-client-tunnel branch from 86c29f5 to 2aa460c Compare April 25, 2023 14:55
orsenthil
orsenthil requested changes Apr 30, 2023
View reviewed changes

@orsenthil orsenthil left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

This piece of code has been there for a while, so making changes here for intermittent failure seems to require bit more understanding on the nature of the error.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread Lib/http/client.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread Lib/http/client.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot bedevere-bot added awaiting changes and removed awaiting review labels Apr 30, 2023
@bedevere-bot

bedevere-bot commented Apr 30, 2023

Copy link
Copy Markdown

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.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@orsenthil
orsenthil requested a review from pquentin April 30, 2023 00:39
@graingert

graingert commented Apr 30, 2023

Copy link
Copy Markdown
Contributor Author

I have made the requested changes; please review again

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot bedevere-bot added awaiting change review and removed awaiting changes labels Apr 30, 2023
@bedevere-bot

bedevere-bot commented Apr 30, 2023

Copy link
Copy Markdown

Thanks for making the requested changes!

@orsenthil: please review the changes made to this pull request.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot
bedevere-bot requested a review from orsenthil April 30, 2023 08:54
@orsenthil

orsenthil commented May 1, 2023

Copy link
Copy Markdown
Member

I have made the requested changes; please review again

Did you push any commits? I don't see it.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@graingert

graingert commented May 1, 2023

Copy link
Copy Markdown
Contributor Author

@orsenthil I responded to your comments I didn't need to make any changes

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

gpshead
gpshead reviewed May 1, 2023
View reviewed changes
Comment thread Lib/test/test_httplib.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

@gpshead

gpshead commented May 1, 2023

Copy link
Copy Markdown
Member

overall, having tried to review the http.client logic in depth, I think what you're doing in this PR makes sense. Our http.client code is... quite complicated.

As you noted, it is the HTTPResponse sock.makefile() having a side "copy" of the socket as a file object that makes always calling response.close() not mess things up in the _tunnel() case. ("Closing the file object returned by makefile() won’t close the original socket unless all other file objects have been closed and socket.close() has been called on the socket object." - socket docs)

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@gpshead gpshead self-assigned this May 1, 2023
@gpshead gpshead added the needs backport to 3.11 only security fixes label May 1, 2023
graingert
graingert commented May 1, 2023
View reviewed changes
Comment thread Lib/http/client.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

gpshead
gpshead approved these changes May 2, 2023
View reviewed changes
@bedevere-bot bedevere-bot added awaiting merge and removed awaiting change review labels May 2, 2023
gpshead added 2 commits May 1, 2023 20:35
@gpshead
minor wording and ReST update to NEWS
c2171c7
@gpshead
word wrap news.
bd079b1
@gpshead
gpshead enabled auto-merge (squash) May 2, 2023 03:36
orsenthil
orsenthil approved these changes May 2, 2023
View reviewed changes

@orsenthil orsenthil left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

LGTM too. Thank you.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@gpshead
gpshead merged commit 9de0cf2 into python:main May 2, 2023
@bedevere-bot bedevere-bot removed the awaiting merge label May 2, 2023
@miss-islington

miss-islington commented May 2, 2023

Copy link
Copy Markdown
Contributor

Thanks @graingert for the PR, and @gpshead for merging it 🌮🎉.. I'm working now to backport this PR to: 3.11.
🐍🍒⛏🤖

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot

bedevere-bot commented May 2, 2023

Copy link
Copy Markdown

GH-104077 is a backport of this pull request to the 3.11 branch.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-bot bedevere-bot removed the needs backport to 3.11 only security fixes label May 2, 2023
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 2, 2023
@graingert @gpshead @miss-islington
pythonGH-103472: close response in HTTPConnection._tunnel (pythonGH-1…
8f1ce8f
…03473)

Avoid a potential `ResourceWarning` in `http.client.HTTPConnection`
by closing the proxy / tunnel's CONNECT response explicitly.

---------

(cherry picked from commit 9de0cf2)

Co-authored-by: Thomas Grainger <[email protected]>
Co-authored-by: Gregory P. Smith <[email protected]>
gpshead added a commit that referenced this pull request May 2, 2023
@miss-islington @graingert @gpshead
[3.11] GH-103472: close response in HTTPConnection._tunnel (GH-103473) (
0d40264
#104077)

GH-103472: close response in HTTPConnection._tunnel (GH-103473)

Avoid a potential `ResourceWarning` in `http.client.HTTPConnection`
by closing the proxy / tunnel's CONNECT response explicitly.

---------

(cherry picked from commit 9de0cf2)

Co-authored-by: Thomas Grainger <[email protected]>
Co-authored-by: Gregory P. Smith <[email protected]>
@graingert
graingert deleted the close-response-in-http-client-tunnel branch May 2, 2023 11:26
carljm added a commit to carljm/cpython that referenced this pull request May 2, 2023
@carljm
Merge branch 'main' into inlinecomp2
0727d6f
* main:
  pythongh-103822: [Calendar] change return value to enum for day and month APIs (pythonGH-103827)
  pythongh-65022: Fix description of tuple return value in copyreg (python#103892)
  pythonGH-103525: Improve exception message from `pathlib.PurePath()` (pythonGH-103526)
  pythongh-84436: Add integration C API tests for immortal objects (pythongh-103962)
  pythongh-103743: Add PyUnstable_Object_GC_NewWithExtraData (pythonGH-103744)
  pythongh-102997: Update Windows installer to SQLite 3.41.2. (python#102999)
  pythonGH-103484: Fix redirected permanently URLs (python#104001)
  Improve assert_type phrasing (python#104081)
  pythongh-102997: Update macOS installer to SQLite 3.41.2. (pythonGH-102998)
  pythonGH-103472: close response in HTTPConnection._tunnel (python#103473)
  pythongh-88496: IDLE - fix another test on macOS (python#104075)
  pythongh-94673: Hide Objects in PyTypeObject Behind Accessors (pythongh-104074)
  pythongh-94673: Properly Initialize and Finalize Static Builtin Types for Each Interpreter (pythongh-104072)
  pythongh-104016: Skip test for deeply neste f-strings on wasi (python#104071)
carljm added a commit to carljm/cpython that referenced this pull request May 2, 2023
@carljm
Merge branch 'main' into cached_property_docs
b9c39e3
* main: (760 commits)
  pythonGH-104102: Optimize `pathlib.Path.glob()` handling of `../` pattern segments (pythonGH-104103)
  pythonGH-104104: Optimize `pathlib.Path.glob()` by avoiding repeated calls to `os.path.normcase()` (pythonGH-104105)
  pythongh-103822: [Calendar] change return value to enum for day and month APIs (pythonGH-103827)
  pythongh-65022: Fix description of tuple return value in copyreg (python#103892)
  pythonGH-103525: Improve exception message from `pathlib.PurePath()` (pythonGH-103526)
  pythongh-84436: Add integration C API tests for immortal objects (pythongh-103962)
  pythongh-103743: Add PyUnstable_Object_GC_NewWithExtraData (pythonGH-103744)
  pythongh-102997: Update Windows installer to SQLite 3.41.2. (python#102999)
  pythonGH-103484: Fix redirected permanently URLs (python#104001)
  Improve assert_type phrasing (python#104081)
  pythongh-102997: Update macOS installer to SQLite 3.41.2. (pythonGH-102998)
  pythonGH-103472: close response in HTTPConnection._tunnel (python#103473)
  pythongh-88496: IDLE - fix another test on macOS (python#104075)
  pythongh-94673: Hide Objects in PyTypeObject Behind Accessors (pythongh-104074)
  pythongh-94673: Properly Initialize and Finalize Static Builtin Types for Each Interpreter (pythongh-104072)
  pythongh-104016: Skip test for deeply neste f-strings on wasi (python#104071)
  pythongh-104057: Fix direct invocation of test_super (python#104064)
  pythongh-87092: Expose assembler to unit tests (python#103988)
  pythongh-97696: asyncio eager tasks factory (python#102853)
  pythongh-84436: Immortalize in _PyStructSequence_InitBuiltinWithFlags() (pythongh-104054)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@gpshead gpshead gpshead approved these changes
@orsenthil orsenthil orsenthil approved these changes
@pquentin pquentin Awaiting requested review from pquentin

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@gpshead gpshead

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

7 participants

@graingert @arhadthedev @bedevere-bot @orsenthil @gpshead @miss-islington @pquentin
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.