Describe the bug
I tried the demo server exactly how it was stated in the readme.md but am getting 400 http response
To Reproduce
Steps to reproduce the behavior:
you put this in a terminal
wstunnel client -L 'tcp://4443:localhost:444?proxy_protocol' -P demo --tls-sni-override=google.fr wss://49.13.58.9
then you put this on another terminal
curl -k https://localhost:4443
Expected behavior
expected behavior is to get > Memento mori !
Your wstunnel setup
Paste your logs of wstunnel, started with --log-lvl=DEBUG, and with the command line used
2026-04-06T05:53:22.334159Z INFO wstunnel: Starting wstunnel client v10.5.2
2026-04-06T05:53:22.334189Z INFO wstunnel::protocols::tcp::server: Starting TCP server listening cnx on 127.0.0.1:4443
2026-04-06T05:53:29.501662Z INFO wstunnel::protocols::tcp::server: Opening TCP connection to 49.13.58.9:443
2026-04-06T05:53:29.501771Z DEBUG wstunnel::protocols::tcp::server: Connecting to 49.13.58.9:443
2026-04-06T05:53:29.519179Z DEBUG wstunnel::protocols::tcp::server: Connected to tcp endpoint 49.13.58.9:443, aborted all other connection attempts
2026-04-06T05:53:29.519218Z INFO wstunnel::protocols::tls::server: Doing TLS handshake using SNI DnsName("google.fr") with the server 49.13.58.9:443
2026-04-06T05:53:29.519262Z DEBUG rustls::client::hs: No cached session for DnsName("google.fr")
2026-04-06T05:53:29.519269Z DEBUG rustls::client::hs: Not resuming any session
2026-04-06T05:53:29.568464Z DEBUG rustls::client::hs: Using ciphersuite TLS13_AES_256_GCM_SHA384
2026-04-06T05:53:29.568496Z DEBUG rustls::client::tls13: Not resuming
2026-04-06T05:53:29.568567Z DEBUG rustls::client::tls13: TLS1.3 encrypted extensions: ServerExtensions { server_name_ack: (), selected_protocol: SingleProtocolName(ProtocolName(687474702f312e31)), unknown_extensions: {}, .. }
2026-04-06T05:53:29.568929Z DEBUG rustls::client::hs: ALPN protocol is Some(b"http/1.1")
2026-04-06T05:53:29.569069Z DEBUG tunnel{id="019d615a-6d9d-7690-968c-3d4d50e16b86" remote="localhost:444"}: wstunnel::tunnel::transport::websocket: with HTTP upgrade request Request { method: GET, uri: /demo/events, version: HTTP/1.1, headers: {"host": "49.13.58.9", "upgrade": "websocket", "connection": "upgrade", "sec-websocket-key": "X4JYFF7OCP0S6CmEHHcBUw==", "sec-websocket-version": "13", "sec-websocket-protocol": "v1, authorization.bearer.eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IjAxOWQ2MTVhLTZkOWQtNzY5MC05NjhjLTNkNGQ1MGUxNmI4NiIsInAiOnsiVGNwIjp7InByb3h5X3Byb3RvY29sIjp0cnVlfX0sInIiOiJsb2NhbGhvc3QiLCJycCI6NDQ0fQ._FFnYaDPyaUteGT4Mdez2G6F30LqSLoJM1kiY1L1ElM"}, body: Empty }
2026-04-06T05:53:29.875247Z ERROR tunnel{id="019d615a-6d9d-7690-968c-3d4d50e16b86" remote="localhost:444"}: wstunnel::tunnel::client::client: failed to do websocket handshake with the server wss://49.13.58.9:443
Caused by:
Invalid status code: 400
2026-04-06T05:53:29.875431Z DEBUG rustls::common_state: Sending warning alert CloseNotify
Desktop (please complete the following information):
- OS: [e.g. iOS] macos
- Version [e.g. 22] 26.3.1
Additional context
Add any other context about the problem here.
Describe the bug
I tried the demo server exactly how it was stated in the readme.md but am getting 400 http response
To Reproduce
Steps to reproduce the behavior:
you put this in a terminal
wstunnel client -L 'tcp://4443:localhost:444?proxy_protocol' -P demo --tls-sni-override=google.fr wss://49.13.58.9then you put this on another terminal
curl -k https://localhost:4443Expected behavior
expected behavior is to get
> Memento mori !Your wstunnel setup
Paste your logs of wstunnel, started with
--log-lvl=DEBUG, and with thecommand line usedn/a
Desktop (please complete the following information):
Additional context
Add any other context about the problem here.