Skip to content

[BUG] ValueError: too many values to unpack (expected 2) #20

@LudovicRousseau

Description

@LudovicRousseau

Describe the bug
The proxy works fine for HTTP.
For HTTPS I get an error: ValueError: too many values to unpack (expected 2)

To Reproduce
Steps to reproduce the behavior:

  1. mkvirtualenv pyproxy
  2. pip install pyproxytools
  3. mkdir config
  4. touch config/blocked_sites.txt
  5. python3 -m pyproxy

In another terminal use:

$ https_proxy=0.0.0.0:8080 curl https://www.free.fr
curl: (35) Send failure: Broken pipe

Configuration used
No configuration. I use an empty config/blocked_sites.txt file

Expected behavior
I get the https page

Logs

$ python3 -m pyproxy --debug
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=Configuration used:
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] allowed_subnets = None
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] config_custom_header = config/custom_header.json
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] config_shortcuts = config/shortcuts.txt
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] debug = True
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] filter_config = ProxyConfigFilter(no_filter=False, filter_mode='local', blocked_sites='config/blocked_sites.txt', blocked_url='config/blocked_url.txt')
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] host_port = ('0.0.0.0', 8080)
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] html_403 = assets/403.html
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] logger_config = ProxyConfigLogger(access_log='logs/access.log', block_log='logs/block.log', no_logging_access=False, no_logging_block=False, console_format='date=%(asctime)s level=%(levelname)s file=%(filename)s function=%(funcName)s message=%(message)s', access_log_format='date=%(asctime)s ip_src=%(ip_src)s url=%(url)s method=%(method)s domain=%(domain)s port=%(port)s protocol=%(protocol)s bytes_sent=%(bytes_sent)s bytes_received=%(bytes_received)s tls_version=%(tls_version)s', block_log_format='date=%(asctime)s ip_src=%(ip_src)s url=%(url)s method=%(method)s domain=%(domain)s port=%(port)s protocol=%(protocol)s', datefmt='%Y-%m-%d %H:%M:%S')
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] monitoring_config = ProxyConfigMonitoring(flask_port=5000, flask_pass='password')
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] proxy_config = ProxyConfigProxy(enable=False, host='127.0.0.1', port=8081)
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] ssl_config = ProxyConfigSSL(ssl_inspect=False, inspect_ca_cert='certs/ca/cert.pem', inspect_ca_key='certs/ca/key.pem', inspect_certs_folder='certs/', cancel_inspect='config/cancel_inspect.txt')
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=_initialize_processes message=[*] Starting the filter process...
date=2026-04-30 11:12:50 level=INFO file=server.py function=start message=Proxy server started on ('0.0.0.0', 8080)...
date=2026-04-30 11:12:53 level=DEBUG file=server.py function=start message=Connection from ('127.0.0.1', 38550)
Exception in thread Thread-1 (handle_client):
Traceback (most recent call last):
  File "/usr/lib/python3.13/threading.py", line 1043, in _bootstrap_inner
    self.run()
    ~~~~~~~~^^
  File "/usr/lib/python3.13/threading.py", line 994, in run
    self._target(*self._args, **self._kwargs)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/lroussea/.virtualenvs/pyproxy/lib/python3.13/site-packages/pyproxy/handlers/client.py", line 108, in handle_client
    https_handler.handle_https_connection(client_socket, first_line)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/lroussea/.virtualenvs/pyproxy/lib/python3.13/site-packages/pyproxy/handlers/https.py", line 327, in handle_https_connection
    bytes_sent, bytes_received = self.transfer_data_between_sockets(
                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        client_socket, server_socket
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/home/lroussea/.virtualenvs/pyproxy/lib/python3.13/site-packages/pyproxy/handlers/https.py", line 380, in transfer_data_between_sockets
    target_ip, target_port = server_socket.getpeername()
    ^^^^^^^^^^^^^^^^^^^^^^
ValueError: too many values to unpack (expected 2)

Additional context
Add any other context about the problem here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions