- Apr 26, 2021
-
-
Cecylia Bocovich authored
The default prometheus registry exports data that may be useful for side-channel attacks. This removes all of the default metrics and makes sure we are only reporting snowflake metrics from the broker.
-
Cecylia Bocovich authored
-
Cecylia Bocovich authored
-
- Apr 22, 2021
-
-
Cecylia Bocovich authored
This change adds a prometheus exporter for our existing snowflake broker metrics. Current values for the metrics can be fetched by sending a GET request to /prometheus.
-
- Apr 01, 2021
-
-
Cecylia Bocovich authored
-
- Mar 25, 2021
-
-
Cecylia Bocovich authored
-
- Mar 19, 2021
-
-
Cecylia Bocovich authored
This fixes a vulnerability in the library: CVE-2021-28681
-
Cecylia Bocovich authored
Snowflake copies data between the OR connection and the KCP stream, meaning that in most cases the copy loops will only terminate once the OR connection times out. In this case the OR connection is already closed and so calls to CloseRead and CloseWrite will generate errors.
-
Cecylia Bocovich authored
These errors are triggered in three places when the OR connection times out. They don't tell us anything useful and are filling up our logs.
-
- Mar 06, 2021
-
-
David Fifield authored
-
- 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 #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.
-