Skip to content

HTTPS proxy connection not initialized if first request is chunked #3844

@bpitman

Description

@bpitman

Using code below, will produce 403 error without https_proxy:

$ ./test.py
<Response [403]>

But ssl error with https_proxy (because CONNECT request is never sent):

$ https_proxy=http://10.32.2.100:1080/ ./test.py
Traceback (most recent call last):
  File "./test.py", line 11, in <module>
    res = session.put("https://github.com/kennethreitz", data=StringIO.StringIO(""))
  File "/opt/pepperdata/native/lib/python2.7/site-packages/requests/sessions.py", line 533, in put
    return self.request('PUT', url, data=data, **kwargs)
  File "/opt/pepperdata/native/lib/python2.7/site-packages/requests/sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "/opt/pepperdata/native/lib/python2.7/site-packages/requests/sessions.py", line 596, in send
    r = adapter.send(request, **kwargs)
  File "/opt/pepperdata/native/lib/python2.7/site-packages/requests/adapters.py", line 492, in send
    raise ConnectionError(err, request=request)
ConnectionError: [SSL: UNKNOWN_PROTOCOL] unknown protocol (_ssl.c:590)

For now, I'm patching my local requests/adaptor.py to init proxy when first conn use is with chunked request:

>                 if hasattr(conn, 'proxy'):
>                     if conn.proxy is not None and not getattr(low_conn, 'sock', None):
>                         conn._prepare_proxy(low_conn)
## test.py ########################################################
import requests
import traceback
import StringIO
import sys

try:
   session = requests.session()
   res = session.put("https://github.com/kennethreitz", data=StringIO.StringIO(""))
   sys.stdout.write(str(res) + "\n")
except Exception:
    traceback.print_exc()

session.close()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions