Skip to content

Mock socket.shutdown for compatibility with urllib3 >= 2.3#485

Open
carlsmedstad wants to merge 1 commit intogabrielfalcao:mainfrom
carlsmedstad:urllib-2.3-compatibility
Open

Mock socket.shutdown for compatibility with urllib3 >= 2.3#485
carlsmedstad wants to merge 1 commit intogabrielfalcao:mainfrom
carlsmedstad:urllib-2.3-compatibility

Conversation

@carlsmedstad
Copy link

Version 2.3.0 of urllib3 gets the attribute socket.shutdown which HTTPretty does no mock. See the following call stack:

/usr/lib/python3.13/site-packages/requests/sessions.py:602: in get
    return self.request("GET", url, **kwargs)
/usr/lib/python3.13/site-packages/requests/sessions.py:589: in request
    resp = self.send(prep, **send_kwargs)
/usr/lib/python3.13/site-packages/requests/sessions.py:703: in send
    r = adapter.send(request, **kwargs)
/usr/lib/python3.13/site-packages/requests/adapters.py:667: in send
    resp = conn.urlopen(
/usr/lib/python3.13/site-packages/urllib3/connectionpool.py:787: in urlopen
    response = self._make_request(
/usr/lib/python3.13/site-packages/urllib3/connectionpool.py:534: in _make_request
    response = conn.getresponse()
/usr/lib/python3.13/site-packages/urllib3/connection.py:513: in getresponse
    _shutdown = getattr(self.sock, "shutdown", None)

Version 2.3.0 of urllib3 gets the attribute socket.shutdown which
HTTPretty does no mock. See the following call stack:

    /usr/lib/python3.13/site-packages/requests/sessions.py:602: in get
        return self.request("GET", url, **kwargs)
    /usr/lib/python3.13/site-packages/requests/sessions.py:589: in request
        resp = self.send(prep, **send_kwargs)
    /usr/lib/python3.13/site-packages/requests/sessions.py:703: in send
        r = adapter.send(request, **kwargs)
    /usr/lib/python3.13/site-packages/requests/adapters.py:667: in send
        resp = conn.urlopen(
    /usr/lib/python3.13/site-packages/urllib3/connectionpool.py:787: in urlopen
        response = self._make_request(
    /usr/lib/python3.13/site-packages/urllib3/connectionpool.py:534: in _make_request
        response = conn.getresponse()
    /usr/lib/python3.13/site-packages/urllib3/connection.py:513: in getresponse
        _shutdown = getattr(self.sock, "shutdown", None)
gentoo-bot pushed a commit to gentoo/gentoo that referenced this pull request Jan 6, 2025
Pull-Request: gabrielfalcao/HTTPretty#485
Signed-off-by: Michał Górny <mgorny@gentoo.org>
@EnricoMi
Copy link

@gabrielfalcao is there a chance to get HTTPretty compatible with urllib3 >= 2.3?

@EnricoMi
Copy link

Fixes #484.

DavidKorczynski pushed a commit to google/oss-fuzz that referenced this pull request Jan 4, 2026
urllib3's `fuzz_requests` has been broken for over a year because it
uses HTTPretty which does not support modern urllib3
gabrielfalcao/HTTPretty#485.

In this PR, I'm replacing HTTPretty with a simple server in a separate
thread, the approach is borrowed from [a httpx
fuzzer](https://github.com/google/oss-fuzz/blob/5b14ead1ed0b85d5a21ce30c993a22d71b415b35/projects/httpx/fuzz_api.py).

Also, I'm adding myself as the primary contact for urllib3 because I'm
its current lead maintainer.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants