[tor-commits] [goptlib/master] Add IsClient and IsServer.

yawning at torproject.org yawning at torproject.org
Wed May 21 08:10:23 UTC 2014


commit c1482145a738b9378ee6a5f7067544bea7414f34
Author: Yawning Angel <yawning at schwanenlied.me>
Date:   Wed May 21 08:06:36 2014 +0000

    Add IsClient and IsServer.
    
    Both methods only examine TOR_PT_[CLIENT,SERVER]_TRANSPORTS, so they
    are not substitues for ClientSetup/ServerSetup.  However that check is
    sufficient for determining which Setup routine to run in the first
    place.
---
 pt.go      |   12 ++++++++++++
 pt_test.go |   24 ++++++++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/pt.go b/pt.go
index 92bb0f5..3bd50a8 100644
--- a/pt.go
+++ b/pt.go
@@ -816,3 +816,15 @@ func DialOr(info *ServerInfo, addr, methodName string) (*net.TCPConn, error) {
 
 	return s, nil
 }
+
+// IsClient returns true if the enviornment reflects a managed client.
+func IsClient() bool {
+	env := getenv("TOR_PT_CLIENT_TRANSPORTS")
+	return env != ""
+}
+
+// IsServer returns true if the enviornment reflects a managed server.
+func IsServer() bool {
+	env := getenv("TOR_PT_SERVER_TRANSPORTS")
+	return env != ""
+}
diff --git a/pt_test.go b/pt_test.go
index aa3ad04..5689405 100644
--- a/pt_test.go
+++ b/pt_test.go
@@ -737,3 +737,27 @@ func TestExtOrPortSetup(t *testing.T) {
 	testExtOrPortSetupIndividual(t, "", methodName)
 	testExtOrPortSetupIndividual(t, addr, methodName)
 }
+
+func TestIsClient(t *testing.T) {
+	os.Clearenv()
+	if IsClient() {
+		t.Errorf("empty enviornment unexpectedly appears as a client")
+	}
+
+	os.Setenv("TOR_PT_CLIENT_TRANSPORTS", "dummy")
+	if !IsClient() {
+		t.Errorf("IsClient returned false with TOR_PT_CLIENT_TRANSPORTS set")
+	}
+}
+
+func TestIsServer(t *testing.T) {
+	os.Clearenv()
+	if IsServer() {
+		t.Errorf("empty enviornment unexpectedly appears as a server")
+	}
+
+	os.Setenv("TOR_PT_SERVER_TRANSPORTS", "dummy")
+	if !IsServer() {
+		t.Errorf("IsServer returned false with TOR_PT_SERVER_TRANSPORTS set")
+	}
+}



More information about the tor-commits mailing list