[tor-commits] [snowflake/master] In server, treat a client IP address of 0.0.0.0 as missing.
dcf at torproject.org
dcf at torproject.org
Sat Feb 22 23:13:59 UTC 2020
commit c124e8c643f2de5730af9079d326b9cabc3b264a
Author: David Fifield <david at bamsoftware.com>
Date: Wed Feb 19 10:44:35 2020 -0700
In server, treat a client IP address of 0.0.0.0 as missing.
Some proxies currently send ?client_ip=0.0.0.0 because of an error in
how they attempt to grep the address from the client's SDP. That's
inflating our "%d/%d connections had client_ip" logs. Instead, treat
these cases as if the IP address were absent.
https://bugs.torproject.org/33157
https://bugs.torproject.org/33385
---
server/server.go | 5 +++++
server/server_test.go | 2 ++
2 files changed, 7 insertions(+)
diff --git a/server/server.go b/server/server.go
index c484a19..6e9fb19 100644
--- a/server/server.go
+++ b/server/server.go
@@ -88,6 +88,11 @@ func clientAddr(clientIPParam string) string {
if clientIP == nil {
return ""
}
+ // Check if client addr is 0.0.0.0 or [::]. Some proxies erroneously
+ // report an address of 0.0.0.0: https://bugs.torproject.org/33157.
+ if clientIP.IsUnspecified() {
+ return ""
+ }
// Add a dummy port number. USERADDR requires a port number.
return (&net.TCPAddr{IP: clientIP, Port: 1, Zone: ""}).String()
}
diff --git a/server/server_test.go b/server/server_test.go
index d4ada6e..ba00d16 100644
--- a/server/server_test.go
+++ b/server/server_test.go
@@ -46,6 +46,8 @@ func TestClientAddr(t *testing.T) {
"abc",
"1.2.3.4.5",
"[12::34]",
+ "0.0.0.0",
+ "[::]",
} {
useraddr := clientAddr(input)
if useraddr != "" {
More information about the tor-commits
mailing list