Skip to content
This repository was archived by the owner on Dec 21, 2023. It is now read-only.
This repository was archived by the owner on Dec 21, 2023. It is now read-only.

Concurrency issues when using websockets + proxies #4

@sleeyax

Description

@sleeyax

For some reason connections start to fail when using a (rotating) proxy over websockets. Mostly weird EOF errors.

There's some progress being made on this issue in this branch, including a mechanism to reconnect on failure, though it's far from perfect:

2022/05/15 17:44:37 main 1: server is starting
2022/05/15 17:44:39 main 0: server is starting
2022/05/15 17:44:41 main 2: server is starting
2022/05/15 17:44:42 reader: server closed the connection unexpectedly [websocket: close 1006 (abnormal closure): unexpected EOF], reconnecting...
2022/05/15 17:44:44 reader: server closed the connection unexpectedly [websocket: close 1006 (abnormal closure): unexpected EOF], reconnecting...
2022/05/15 17:44:46 reader: server closed the connection unexpectedly [websocket: close 1006 (abnormal closure): unexpected EOF], reconnecting...
2022/05/15 17:44:49 reader: server closed the connection unexpectedly [websocket: close 1006 (abnormal closure): unexpected EOF], reconnecting...
2022/05/15 17:44:51 reader: server closed the connection unexpectedly [websocket: close 1006 (abnormal closure): unexpected EOF], reconnecting...
2022/05/15 17:44:53 reader: server closed the connection unexpectedly [websocket: close 1006 (abnormal closure): unexpected EOF], reconnecting...

The issue is likely any of the following:

  • deadlock in a goroutine somewhere (although go's race detector can't find anything in particular)
  • the underlying connection getting abruptly closed due to some bug/issue in gorilla websockets, gotcha, fhttp, utls or even the Go language itself (yes, there's lots of possible points of failure!).
  • the remote server actually refusing the connection due to some detection mechanism

I've already wasted a ton of time working on this issue and unfortunately it's not worth my time anymore at this point. Up for grabs if anyone wants to work on this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions