[tor-commits] [snowflake/master] Classify proxies with unknown NATs as restricted

cohosh at torproject.org cohosh at torproject.org
Mon Jan 25 19:05:47 UTC 2021


commit bae0bacbfdcd7d195e5ecff985bbff2361937170
Author: Cecylia Bocovich <cohosh at torproject.org>
Date:   Fri Jan 15 11:50:56 2021 -0500

    Classify proxies with unknown NATs as restricted
---
 broker/broker.go                | 12 ++++++------
 broker/snowflake-broker_test.go | 17 +++++++++--------
 2 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/broker/broker.go b/broker/broker.go
index 983f95d..b8c7b6c 100644
--- a/broker/broker.go
+++ b/broker/broker.go
@@ -144,10 +144,10 @@ func (ctx *BrokerContext) Broker() {
 				ctx.snowflakeLock.Lock()
 				defer ctx.snowflakeLock.Unlock()
 				if snowflake.index != -1 {
-					if request.natType == NATRestricted {
-						heap.Remove(ctx.restrictedSnowflakes, snowflake.index)
-					} else {
+					if request.natType == NATUnrestricted {
 						heap.Remove(ctx.snowflakes, snowflake.index)
+					} else {
+						heap.Remove(ctx.restrictedSnowflakes, snowflake.index)
 					}
 					delete(ctx.idToSnowflake, snowflake.id)
 					close(request.offerChannel)
@@ -169,10 +169,10 @@ func (ctx *BrokerContext) AddSnowflake(id string, proxyType string, natType stri
 	snowflake.offerChannel = make(chan *ClientOffer)
 	snowflake.answerChannel = make(chan []byte)
 	ctx.snowflakeLock.Lock()
-	if natType == NATRestricted {
-		heap.Push(ctx.restrictedSnowflakes, snowflake)
-	} else {
+	if natType == NATUnrestricted {
 		heap.Push(ctx.snowflakes, snowflake)
+	} else {
+		heap.Push(ctx.restrictedSnowflakes, snowflake)
 	}
 	ctx.snowflakeLock.Unlock()
 	ctx.idToSnowflake[id] = snowflake
diff --git a/broker/snowflake-broker_test.go b/broker/snowflake-broker_test.go
index 7b87313..3b59a0f 100644
--- a/broker/snowflake-broker_test.go
+++ b/broker/snowflake-broker_test.go
@@ -29,7 +29,7 @@ func TestBroker(t *testing.T) {
 		Convey("Adds Snowflake", func() {
 			So(ctx.snowflakes.Len(), ShouldEqual, 0)
 			So(len(ctx.idToSnowflake), ShouldEqual, 0)
-			ctx.AddSnowflake("foo", "", NATUnknown)
+			ctx.AddSnowflake("foo", "", NATUnrestricted)
 			So(ctx.snowflakes.Len(), ShouldEqual, 1)
 			So(len(ctx.idToSnowflake), ShouldEqual, 1)
 		})
@@ -37,6 +37,7 @@ func TestBroker(t *testing.T) {
 		Convey("Broker goroutine matches clients with proxies", func() {
 			p := new(ProxyPoll)
 			p.id = "test"
+			p.natType = "unrestricted"
 			p.offerChannel = make(chan *ClientOffer)
 			go func(ctx *BrokerContext) {
 				ctx.proxyPolls <- p
@@ -55,7 +56,7 @@ func TestBroker(t *testing.T) {
 		Convey("Request an offer from the Snowflake Heap", func() {
 			done := make(chan *ClientOffer)
 			go func() {
-				offer := ctx.RequestOffer("test", "", NATUnknown)
+				offer := ctx.RequestOffer("test", "", NATUnrestricted)
 				done <- offer
 			}()
 			request := <-ctx.proxyPolls
@@ -79,7 +80,7 @@ func TestBroker(t *testing.T) {
 			Convey("with a proxy answer if available.", func() {
 				done := make(chan bool)
 				// Prepare a fake proxy to respond with.
-				snowflake := ctx.AddSnowflake("fake", "", NATUnknown)
+				snowflake := ctx.AddSnowflake("fake", "", NATUnrestricted)
 				go func() {
 					clientOffers(ctx, w, r)
 					done <- true
@@ -97,7 +98,7 @@ func TestBroker(t *testing.T) {
 					return
 				}
 				done := make(chan bool)
-				snowflake := ctx.AddSnowflake("fake", "", NATUnknown)
+				snowflake := ctx.AddSnowflake("fake", "", NATUnrestricted)
 				go func() {
 					clientOffers(ctx, w, r)
 					// Takes a few seconds here...
@@ -147,7 +148,7 @@ func TestBroker(t *testing.T) {
 		})
 
 		Convey("Responds to proxy answers...", func() {
-			s := ctx.AddSnowflake("test", "", NATUnknown)
+			s := ctx.AddSnowflake("test", "", NATUnrestricted)
 			w := httptest.NewRecorder()
 			data := bytes.NewReader([]byte(`{"Version":"1.0","Sid":"test","Answer":"test"}`))
 
@@ -260,7 +261,7 @@ func TestBroker(t *testing.T) {
 			// Manually do the Broker goroutine action here for full control.
 			p := <-ctx.proxyPolls
 			So(p.id, ShouldEqual, "ymbcCMto7KHNGYlp")
-			s := ctx.AddSnowflake(p.id, "", NATUnknown)
+			s := ctx.AddSnowflake(p.id, "", NATUnrestricted)
 			go func() {
 				offer := <-s.offerChannel
 				p.offerChannel <- offer
@@ -437,7 +438,7 @@ func TestGeoip(t *testing.T) {
 		if err := ctx.metrics.LoadGeoipDatabases("invalid_filename", "invalid_filename6"); err != nil {
 			log.Printf("loading geo ip databases returned error: %v", err)
 		}
-		ctx.metrics.UpdateCountryStats("127.0.0.1", "", NATUnknown)
+		ctx.metrics.UpdateCountryStats("127.0.0.1", "", NATUnrestricted)
 		So(ctx.metrics.tablev4, ShouldEqual, nil)
 
 	})
@@ -537,7 +538,7 @@ func TestMetrics(t *testing.T) {
 			So(err, ShouldBeNil)
 
 			// Prepare a fake proxy to respond with.
-			snowflake := ctx.AddSnowflake("fake", "", NATUnknown)
+			snowflake := ctx.AddSnowflake("fake", "", NATUnrestricted)
 			go func() {
 				clientOffers(ctx, w, r)
 				done <- true



More information about the tor-commits mailing list