- 23 Oct, 2020 1 commit
-
-
David Fifield authored
We expect one of these at the end of just about every proxy session, as the Conns in both directions are closed as soon as the copy loop finishes in one direction. Closes #40016.
-
- 15 Oct, 2020 1 commit
-
-
Cecylia Bocovich authored
This fixes a race condition in which snowflakes.End() is called while snowflakes.Collect() is in progress resulting in a write to a closed channel. We now wait for all in-progress collections to finish and add an extra check before proceeding with a collection.
-
- 05 Oct, 2020 1 commit
-
-
Cecylia Bocovich authored
Parse the received ICE candidates as well as the Connection Data field for a non-local IP address to pass to the bridge. This fixes bug #33157.
-
- 21 Sep, 2020 1 commit
-
-
Peter Gerber authored
-
- 27 Aug, 2020 3 commits
-
-
Cecylia Bocovich authored
-
Cecylia Bocovich authored
-
Cecylia Bocovich authored
Bug #21314: maintains a separate snowflake connect loop per SOCKS connection. This way, if Tor decides to stop using Snowflake, Snowflake will stop using the client's network.
-
- 24 Aug, 2020 1 commit
-
-
Cecylia Bocovich authored
As we now partition proxies by NAT type, our stats are more useful if they capture how many proxies of each type we have, and information on whether we have enough proxies of the right NAT type for our clients. This change adds proxy counts by NAT type and binned counts of denied clients by NAT type.
-
- 30 Jul, 2020 1 commit
-
-
Cecylia Bocovich authored
The client and proxy use the net/http default transport to make round trip connecitons to the broker. These by default don't time out and can wait indefinitely for the broker to respond if the broker hangs and doesn't terminate the connection.
-
- 24 Jul, 2020 1 commit
-
-
Cecylia Bocovich authored
This moves the subsetting of ice servers out of the parseIceServers function and into main.
-
- 23 Jul, 2020 1 commit
-
-
Cecylia Bocovich authored
Only chooses a subset as long as we have over 2 STUN servers to choose from.
-
- 14 Jul, 2020 3 commits
-
-
Cecylia Bocovich authored
This commit removes the symlinks and turns go modules back on to run gomobile bind locally on the project.
-
Cecylia Bocovich authored
-
eighthave authored
-
- 09 Jul, 2020 1 commit
-
-
Cecylia Bocovich authored
-
- 06 Jul, 2020 5 commits
-
-
Cecylia Bocovich authored
-
Cecylia Bocovich authored
This will allow browser-based proxies that are unable to determine their NAT type to conservatively label themselves as restricted NATs if they fail to work with clients that have restricted NATs.
-
Cecylia Bocovich authored
Now when proxies poll, they provide their NAT type to the broker. This introduces a new snowflake heap of just restricted snowflakes that the broker can pull from if the client has a known, unrestricted NAT. All other clients will pull from a heap of snowflakes with unrestricted or unknown NAT topologies.
-
Cecylia Bocovich authored
-
Cecylia Bocovich authored
Snowflake clients will now attempt NAT discovery using the provided STUN servers and report their NAT type to the Snowflake broker for matching. The three possibilities for NAT types are: - unknown (the client was unable to determine their NAT type), - restricted (the client has a restrictive NAT and can only be paired with unrestricted NATs) - unrestricted (the client can be paired with any other NAT).
-
- 19 Jun, 2020 1 commit
-
-
Cecylia Bocovich authored
Add broker messaging specification with endpoints for clients and proxies.
-
- 07 May, 2020 1 commit
-
-
Cecylia Bocovich authored
The underlying smux layer sends a keep-alive ping every 10 seconds. This modification will allow for one dropped/delayed ping before discarding the snowflake
-
- 05 May, 2020 1 commit
-
-
- 01 May, 2020 1 commit
-
-
David Fifield authored
It was sticking out in the context of other log messages. 2020/04/30 22:39:10 WebRTC: DataChannel created. 2020/04/30 22:39:20 establishDataChannel: timeout waiting for DataChannel.OnOpen 2020/04/30 22:39:20 WebRTC: closing PeerConnection 2020/04/30 22:39:20 WebRTC: Closing 2020/04/30 22:39:20 WebRTC: WebRTC: Could not establish DataChannel Retrying in 10s...
-
- 28 Apr, 2020 12 commits
-
-
David Fifield authored
I removed this check in 047d3214 because NewWebRTCPeer always initializes writePipe, and it is never reset to nil. However tests used &WebRTCPeer{} which bypasses NewWebRTCPeer and leaves writePipe set to nil. https://bugs.torproject.org/34049#comment:3 https://bugs.torproject.org/34050
-
Cecylia Bocovich authored
-
Cecylia Bocovich authored
-
David Fifield authored
Now callers cannot call Write without there being a DataChannel to write to. This lets us remove the internal buffer and checks for transport == nil. Don't set internal fields like writePipe, transport, and pc to nil when closing; just close them and let them return errors if further calls are made on them. There's now a constant DataChannelTimeout that's separate from SnowflakeTimeout (the latter is what checkForStaleness uses). Now we can set DataChannel timeout to a lower value, to quickly dispose of unconnectable proxies, while still keeping the threshold for detecting the failure of a once-working proxy at 30 seconds. https://bugs.torproject.org/33897
-
David Fifield authored
-
David Fifield authored
-
David Fifield authored
-
David Fifield authored
Formerly, preparePeerConnection set up a callback that sent into a channel, and exchangeSDP waited until it could receive from the channel. We can move the channel entirely into preparePeerConnection (having it not return until the callback has been called) and that way remove some shared state.
-
David Fifield authored
No need to run sendOfferToBroker in a goroutine.
-
David Fifield authored
Use *webrtc.DataChannel directly.
-
David Fifield authored
Do it as a side effect of NewWebRTCPeer. Remove WebRTCPeer tests as they currently require invasively modifying internal fields at different stages of construction.
-
-
- 27 Apr, 2020 3 commits
-
-
David Fifield authored
The other interfaces in client/lib/interfaces.go exist for the purpose of running tests, but not Snowflake. Existing code would not have worked with other types anyway, because it does unchecked .(*WebRTCPeer) conversions.
-
David Fifield authored
A short write will result in a non-nil error. It's an io.PipeWriter anyway, which blocks until all the data has been read or the read end is closed, in which case it returns io.ErrClosedPipe if not some other error.
-
David Fifield authored
This allows us to remove the internal errorChannel.
-
- 24 Apr, 2020 1 commit
-
-
David Fifield authored
-