- Feb 02, 2021
-
-
Cecylia Bocovich authored
This will increase transparency for people running standalone proxies and help us debug any potential issues with proxies behaving unreliably.
-
- Jan 25, 2021
-
-
Cecylia Bocovich authored
-
Cecylia Bocovich authored
Update our dependency on pion/sdp from v2 to v3, to match pion/webrtc v3. This requires some changes in how we parse out addresses from ice candidates. This will ease tor browser builds of snowflake since we are now only relying on one version of pion/sdp instead of two different ones.
-
- Jan 12, 2021
-
-
Cecylia Bocovich authored
This update required two main changes to how we use the library. First, we had to make sure we created the datachannel on the offering peer side before creating the offer. Second, we had to make sure we wait for the gathering of all candidates to complete since trickle-ice is enabled by default. See the release notes for more details: https://github.com/pion/webrtc/wiki/Release-WebRTC@v3.0.0.
-
- Dec 17, 2020
-
-
Cecylia Bocovich authored
-
- Dec 16, 2020
-
-
Cecylia Bocovich authored
This fixes a bug where we were passing the lock by value to socksAcceptLoop.
-
- Dec 05, 2020
-
-
Cecylia Bocovich authored
Run the snowflake collection ReconnectTimeout timer in parallel to the negotiation with the broker. This way, if the broker takes a long time to respond the client doesn't have to wait the full timeout to respond.
-
Cecylia Bocovich authored
-
Cecylia Bocovich authored
Normally all dangling goroutines are terminated when the main function exits. However, for projects that use a patched version of snowflake as a library, these goroutines continued running as long as the main function had not yet terminated. This commit has all open SOCKS connections close after receiving a shutdown signal.
-
- Dec 04, 2020
-
-
Cecylia Bocovich authored
Each SOCKS connection has its own set of snowflakes and broker poll loop. Since the session manager was tied to a single set of snowflakes, this resulted in a bug where RedialPacketConn would sometimes try to pull snowflakes from a previously melted pool. The fix is to maintain separate smux sessions for each SOCKS connection, tied to its own snowflake pool.
-
- Nov 27, 2020
-
-
Philipp Winter authored
We currently don't sort the snowflake-ips metrics: snowflake-ips CA=1,DE=1,AR=1,NL=1,FR=1,GB=2,US=4,CH=1 To facilitate eyeballing our metrics, this patch sorts snowflake-ips by value. If the value is identical, we sort by string, i.e.: snowflake-ips US=4,GB=2,AR=1,CA=1,CH=1,DE=1,FR=1,NL=1 This patch fixes tpo/anti-censorship/pluggable-transports/snowflake#40011
-
- Nov 23, 2020
-
-
Cecylia Bocovich authored
Instead of continuously polling the broker until the client receives a snowflake, fail back to the Connect() loop and try again to collect more peers after ReconnectTimeout.
-
- Nov 20, 2020
-
-
Cecylia Bocovich authored
-
Cecylia Bocovich authored
Rather than having standalone proxies determine their NAT type by conducting the NAT behaviour checks in RFC 5780, use the remote probe service instead.
-
- Nov 18, 2020
-
-
Cecylia Bocovich authored
This will prevent calls to DecodeAnswerRequest from returning an error even though the sid is not needed for the probetest.
-
Cecylia Bocovich authored
-
- Nov 06, 2020
-
-
Cecylia Bocovich authored
Some temporary testing code for the proxy got accidentally merged into the latest changes. This commit undoes that mistake.
-
- Nov 05, 2020
-
-
Cecylia Bocovich authored
-
Cecylia Bocovich authored
The probetest answer response was not being sent until the select call received a datachannel timeout causing all attempted connections to fail.
-
- Oct 29, 2020
-
-
Cecylia Bocovich authored
The easiest way to set up the probe server behind a symmetric NAT is to deploy it as a Docker container and alter the iptables rules for the Docker network subnet that the container runs in.
-
Cecylia Bocovich authored
Add a remote probetest service that will allow proxies to test their compatability with symmetric NATs.
-
Cecylia Bocovich authored
Simplify proxy interactions with the broker signaling server and prepare for the introduction of an additional signaling server.
-
- Oct 23, 2020
-
-
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.
-
- Oct 15, 2020
-
-
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.
-
- Oct 05, 2020
-
-
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.
-
- Sep 21, 2020
-
-
Peter Gerber authored
-
- Aug 27, 2020
-
-
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.
-
- Aug 24, 2020
-
-
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.
-
- Jul 30, 2020
-
-
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.
-
- Jul 24, 2020
-
-
Cecylia Bocovich authored
This moves the subsetting of ice servers out of the parseIceServers function and into main.
-
- Jul 23, 2020
-
-
Cecylia Bocovich authored
Only chooses a subset as long as we have over 2 STUN servers to choose from.
-
- Jul 14, 2020
-
-
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
-
-
- Jul 09, 2020
-
-
Cecylia Bocovich authored
-
- Jul 06, 2020
-
-
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.
-