commit c2a6339b8c560cb49df1d9d703ac042293937034
Author: David Fifield <da...@bamsoftware.com>
Date:   Sun Dec 8 02:39:30 2013 -0800

    Parse TOR_PT_SERVER_TRANSPORT_OPTIONS and include in Bindaddr.
---
 pt.go      |   14 +++++++++++++-
 pt_test.go |   12 ++++++------
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/pt.go b/pt.go
index 4f7f167..f389794 100644
--- a/pt.go
+++ b/pt.go
@@ -341,6 +341,9 @@ func ClientSetup(methodNames []string) (ClientInfo, error) {
 type Bindaddr struct {
        MethodName string
        Addr       *net.TCPAddr
+       // Options from TOR_PT_SERVER_TRANSPORT_OPTIONS that pertain to this
+       // transport.
+       Options Args
 }
 
 // Resolve an address string into a net.TCPAddr. We are a bit more strict than
@@ -398,10 +401,18 @@ func filterBindaddrs(addrs []Bindaddr, methodNames 
[]string) []Bindaddr {
 
 // Return an array of Bindaddrs, those being the contents of
 // TOR_PT_SERVER_BINDADDR, with keys filtered by TOR_PT_SERVER_TRANSPORTS, and
-// further filtered by the methods in methodNames.
+// further filtered by the methods in methodNames. Transport-specific options
+// from TOR_PT_SERVER_TRANSPORT_OPTIONS are assigned to the Options member.
 func getServerBindaddrs(methodNames []string) ([]Bindaddr, error) {
        var result []Bindaddr
 
+       // Parse the list of server transport options.
+       serverTransportOptions := getenv("TOR_PT_SERVER_TRANSPORT_OPTIONS")
+       optionsMap, err := parseServerTransportOptions(serverTransportOptions)
+       if err != nil {
+               return nil, 
envError(fmt.Sprintf("TOR_PT_SERVER_TRANSPORT_OPTIONS: %q: %s", 
serverTransportOptions, err.Error()))
+       }
+
        // Get the list of all requested bindaddrs.
        serverBindaddr, err := getenvRequired("TOR_PT_SERVER_BINDADDR")
        if err != nil {
@@ -420,6 +431,7 @@ func getServerBindaddrs(methodNames []string) ([]Bindaddr, 
error) {
                        return nil, 
envError(fmt.Sprintf("TOR_PT_SERVER_BINDADDR: %q: %s", spec, err.Error()))
                }
                bindaddr.Addr = addr
+               bindaddr.Options = optionsMap[bindaddr.MethodName]
                result = append(result, bindaddr)
        }
 
diff --git a/pt_test.go b/pt_test.go
index 1d30ff2..1602fa8 100644
--- a/pt_test.go
+++ b/pt_test.go
@@ -280,8 +280,8 @@ func TestGetServerBindaddrs(t *testing.T) {
                        "alpha,beta,gamma",
                        []string{"alpha", "beta"},
                        []Bindaddr{
-                               {"alpha", &net.TCPAddr{IP: 
net.ParseIP("1.2.3.4"), Port: 1111}},
-                               {"beta", &net.TCPAddr{IP: 
net.ParseIP("1:2::3:4"), Port: 2222}},
+                               {MethodName: "alpha", Addr: &net.TCPAddr{IP: 
net.ParseIP("1.2.3.4"), Port: 1111}},
+                               {MethodName: "beta", Addr: &net.TCPAddr{IP: 
net.ParseIP("1:2::3:4"), Port: 2222}},
                        },
                },
                {
@@ -301,8 +301,8 @@ func TestGetServerBindaddrs(t *testing.T) {
                        "*",
                        []string{"alpha", "beta"},
                        []Bindaddr{
-                               {"alpha", &net.TCPAddr{IP: 
net.ParseIP("1.2.3.4"), Port: 1111}},
-                               {"beta", &net.TCPAddr{IP: 
net.ParseIP("1:2::3:4"), Port: 2222}},
+                               {MethodName: "alpha", Addr: &net.TCPAddr{IP: 
net.ParseIP("1.2.3.4"), Port: 1111}},
+                               {MethodName: "beta", Addr: &net.TCPAddr{IP: 
net.ParseIP("1:2::3:4"), Port: 2222}},
                        },
                },
                {
@@ -310,8 +310,8 @@ func TestGetServerBindaddrs(t *testing.T) {
                        "trebuchet,ballista",
                        []string{"trebuchet", "ballista"},
                        []Bindaddr{
-                               {"trebuchet", &net.TCPAddr{IP: 
net.ParseIP("127.0.0.1"), Port: 1984}},
-                               {"ballista", &net.TCPAddr{IP: 
net.ParseIP("127.0.0.1"), Port: 4891}},
+                               {MethodName: "trebuchet", Addr: 
&net.TCPAddr{IP: net.ParseIP("127.0.0.1"), Port: 1984}},
+                               {MethodName: "ballista", Addr: &net.TCPAddr{IP: 
net.ParseIP("127.0.0.1"), Port: 4891}},
                        },
                },
        }



_______________________________________________
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to