Shelikhoo
f715c397c2
Update README to reflect project usecase
2025-03-12 13:58:30 +00:00
WofWca
46fdcce5c6
fix: data race warnings of tokens_t
...
This migrates from using `atomic.LoadInt64` on `int64`
to making the `clients` field itself `atomic.Int64`.
Also `count` now takes `*tokens_t` by reference,
which fixes a linter warning.
It's not clear to me why it warned about this,
but I simplified it anyway.
2025-03-12 09:53:40 -04:00
WofWca
730e400123
fix: periodicProxyStats.connectionCount
race
...
And `failedConnectionCount`.
Convert the `int` / `uint` to `atomic.Int32` / `atomic.Uint32`.
The race was discovered by running a proxy with the `-race` flag.
2025-03-12 00:47:22 +04:00
WofWca
4205121689
fix: make NATPolicy thread-safe
...
Although it does not look like that there are situations
where it is critical to use a mutex, because it's only used
when performing rendezvous with a proxy, which doesn't happen
too frequently,
let's still do it just to be sure.
2025-03-12 00:47:22 +04:00
WofWca
1923803124
fix: potential race conditions with non-local err
...
Some of the changes do not appear to have a potential race condition,
so there it is purely a refactor,
while in others (e.g. in broker.go and in proxy/lib/snowflake.go)
we do use the same variable from multiple threads / functions.
2025-03-12 00:47:07 +04:00
WofWca
01819eee32
fix(proxy): race condition warning for isClosing
...
It appears that there is no need for the `isClosing` var at all:
we can just `close(c.sendMoreCh)` to ensure that it doesn't block
any more `Write()`s.
This is a follow-up to
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/144 .
Related:
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/524 .
2025-03-11 15:50:53 -04:00
Renovate Bot
1aa5a61fe8
chore(deps): update module github.com/pion/sdp/v3 to v3.0.11
2025-03-11 13:39:48 -04:00
Cecylia Bocovich
b8410bd748
Merge branch 'renovate/github.com-pion-ice-v4-4.x'
2025-03-11 12:46:12 -04:00
Renovate Bot
3fb30dbb86
chore(deps): update module github.com/pion/webrtc/v4 to v4.0.13
2025-03-11 12:45:32 -04:00
Renovate Bot
da4164473c
chore(deps): update module github.com/pion/webrtc/v4 to v4.0.13
2025-03-11 12:42:28 -04:00
Cecylia Bocovich
57dc276e48
Update broker metrics to count matches, denials, and timeouts
...
Our metrics were undercounting client polls by missing the case where
clients are matched with a snowflake but receive a timeout before the
snowflake responds with its answer. This change adds a new metric,
called client-snowflake-timeout-count, to the 24 hour broker stats and a
new "timeout" status label for prometheus metrics.
2025-03-11 12:36:27 -04:00
WofWca
583178f4f2
feat(proxy): add failed connection count stats
...
For the summary log and for Prometheus metrics.
Log output example:
> In the last 1h0m0s, there were 7 completed successful connections. 2 connections failed. Traffic Relayed ↓ 321 KB (0.10 KB/s), ↑ 123 KB (0.05 KB/s).
2025-03-11 13:12:44 +00:00
Renovate Bot
5ef4761968
chore(deps): update module github.com/xtaci/smux to v1.5.34
2025-03-10 15:13:46 +00:00
Cecylia Bocovich
cfde2b79fc
Create CI artifact regardless of when shadow fails
...
Closes https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40377
2025-03-05 16:14:30 -05:00
Cecylia Bocovich
9e619a3654
Remove metrics race condition in sqs test
...
To test that the broker responds with a proxy answer if available, have
only one valid client offer to ensure metrics will always be in the
first multiple of 8.
2025-03-04 10:37:37 -05:00
Cecylia Bocovich
80374c6d93
Move nonblocking AddSnowflake out of goroutine in sqs test
...
This fixes a race condition in tests where sometimes snowflake matching
happens before enough snowflakes get added to the heap.
2025-03-04 10:37:37 -05:00
WofWca
50bed1e67a
refactor: docstring for checkIsRelayURLAcceptable
...
Related: https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40378 .
2025-03-03 12:14:15 +00:00
Cecylia Bocovich
eb13b2ff4b
Copy base client config for each SOCKS connection
...
Fixes a bug where socksAcceptLoop was reusing the same client config
when processing arguments from multiple SOCKS connections, causing
different bridge lines to clobber each other.
2025-02-25 10:40:51 -05:00
meskio
5f7e23813d
Merge remote-tracking branch 'gitlab/mr/512'
2025-02-24 12:30:30 +01:00
Renovate Bot
0a436a2bc2
chore(deps): update module github.com/prometheus/client_golang to v1.21.0
2025-02-20 14:48:59 +00:00
Cecylia Bocovich
63613cc50a
Fix minor data race in Snowflake broker metrics
2025-02-20 09:39:11 -05:00
Cecylia Bocovich
1180d11a66
Remove data races from sqs tests
...
Our SQS tests were not concurrency safe and we hadn't noticed until now
because we were processing incoming SQS queue messages sequentially
rather than in parallel.
This fix removes the log output checks, which were prone to error
anyway, and relies instead on gomock's expected function calls and
strategic use of the context cancel function for each test.
2025-02-20 09:39:11 -05:00
Cecylia Bocovich
2250bc86f6
Process and read broker SQS messages more quickly
...
We're losing a lot of messages from the broker SQS queue because they
are exceeding their maximum lifetime before being read and processed by
the broker. This change speeds up that process by increasing the size of
messagesChn and processing the messages within a go routine.
2025-02-20 09:37:18 -05:00
WofWca
6384643109
fix(proxy): improve NAT test reliability
...
This is a hack, and I'm not entirely sure how it works,
but it appears to work, at least somewhat.
See https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40419#note_3141855 .
2025-02-17 11:47:11 +00:00
meskio
e345c3bac9
proxy: add country to prometheus metrics
2025-02-13 12:44:23 +01:00
meskio
b3c734ed63
proxy: webRTCconn gives the remote IP instead of the Address
...
We only use the IP part of the address.
2025-02-13 12:44:17 +01:00
WofWca
57eefd4b37
Temove outdated comment
...
As per https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/502#note_3159902 .
The comment was added in c28c8ca489
,
and got outdated apparently after
83c01565ef
.
Signed-off-by: Cecylia Bocovich <cohosh@torproject.org>
2025-02-12 11:50:29 -05:00
WofWca
cb0fb02cd5
fix(proxy): not answering before client timeout
...
This is related to
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40230 .
The initial MR that closed that issue,
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/391 ,
was not semantically correct, because `DataChannelTimeout`
starts after the client has already received the answer.
After
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/498#note_3156256
the code became not only semantically incorrect,
but also functionally incorrect because now if this timeout is hit
by the proxy, the client is guaranteed to be gone already.
This commit fixes it, by lowering the timeout.
This addresses a suggestion in
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40447 .
This also closes
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40381
and supersedes
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/merge_requests/415 .
2025-02-12 10:17:08 -05:00
Renovate Bot
cb30331aa2
chore(deps): update gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/ptutil digest to efaf4e0
...
Signed-off-by: Cecylia Bocovich <cohosh@torproject.org>
2025-02-12 10:07:00 -05:00
Renovate Bot
5d97990096
chore(deps): update module github.com/aws/aws-sdk-go-v2/config to v1.29.6
...
Signed-off-by: Cecylia Bocovich <cohosh@torproject.org>
2025-02-12 10:06:02 -05:00
Renovate Bot
d8838d1727
chore(deps): update module github.com/pion/ice/v4 to v4.0.6
...
Signed-off-by: Cecylia Bocovich <cohosh@torproject.org>
2025-02-12 10:03:22 -05:00
Renovate Bot
971d88ca9d
chore(deps): update module golang.org/x/net to v0.35.0
2025-02-11 11:22:39 +00:00
Shelikhoo
33d00aea24
update golang testing setting in CI
2025-02-10 12:54:43 +00:00
Renovate Bot
2c2839fc7a
chore(deps): update module github.com/aws/aws-sdk-go-v2/credentials to v1.17.59
2025-02-06 13:51:27 +00:00
Renovate Bot
905002d146
chore(deps): update module github.com/aws/aws-sdk-go-v2/service/sqs to v1.37.14
2025-02-06 12:42:01 +00:00
Cecylia Bocovich
4a1e075ee0
Lower broker ClientTimeout to 5 seconds
...
Matches the observed timeout for CDN77, based on user reports.
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40446
2025-02-04 15:41:35 -05:00
meskio
35bc8ec7c3
Merge remote-tracking branches 'gitlab/mr/486' and 'gitlab/mr/487'
2025-02-04 18:56:11 +01:00
Renovate Bot
a390085d2a
chore(deps): update module github.com/aws/aws-sdk-go-v2/config to v1.29.4
2025-01-31 20:12:47 +00:00
Renovate Bot
276bce42b5
chore(deps): update module github.com/miekg/dns to v1.1.63
2025-01-30 15:46:29 +00:00
onyinyang
26f7ee4b06
Remove utls library from snowflake and Use ptuil/utls
2025-01-29 13:01:33 -05:00
Renovate Bot
0dee9d68bd
chore(deps): update module github.com/aws/aws-sdk-go-v2/service/sqs to v1.37.9
...
Signed-off-by: Cecylia Bocovich <cohosh@torproject.org>
2025-01-22 14:37:19 -05:00
Renovate Bot
d710216fb7
chore(deps): update module github.com/aws/aws-sdk-go-v2/config to v1.29.1
...
Signed-off-by: Cecylia Bocovich <cohosh@torproject.org>
2025-01-22 14:33:45 -05:00
meskio
313e54befe
CI: use /etc/localtime instead of /etc/timezone
...
/etc/timezone is a legacy debian specific file. Let's use localtime.
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1038849
* Related: #40414
2025-01-22 17:38:49 +01:00
Renovate Bot
fa122efb61
chore(deps): update module github.com/xtaci/smux to v1.5.33
2025-01-21 15:41:23 +00:00
Renovate Bot
883e8238d1
chore(deps): update module github.com/pion/webrtc/v4 to v4.0.8
2025-01-21 14:08:17 +00:00
meskio
7938509b6f
Merge remote-tracking branches 'gitlab/mr/480' and 'gitlab/mr/485'
2025-01-20 17:42:38 +01:00
Renovate Bot
590735c838
chore(deps): update module github.com/aws/aws-sdk-go-v2 to v1.33.0
2025-01-16 21:16:35 +00:00
Renovate Bot
9ede2ca3da
chore(deps): update module github.com/pion/sdp/v3 to v3.0.10
2025-01-16 21:16:21 +00:00
Cecylia Bocovich
eedac71a3a
Add self-signed ISRG Root X1 to cert pool
...
Replace the expired DST Root CA X3 signed ISRG Root X1 cert with the
self-signed cert.
Closes https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40440
2025-01-15 10:56:17 -05:00
meskio
fad8ddb840
Merge remote-tracking branches 'gitlab/mr/473' and 'gitlab/mr/474'
2025-01-14 10:29:10 +01:00