commit ff3defd597a05fa1cf123ed518a224bc049d84be
Author: David Fifield <[email protected]>
Date:   Tue Mar 5 14:14:19 2019 -0700

    Refactor extOrPortSetup in DialOr.
---
 pt.go      | 40 +++++++++++++++++++++++-----------------
 pt_test.go | 24 ++++++++++++------------
 2 files changed, 35 insertions(+), 29 deletions(-)

diff --git a/pt.go b/pt.go
index c2895b8..95695ac 100644
--- a/pt.go
+++ b/pt.go
@@ -883,7 +883,7 @@ func extOrPortRecvCommand(s io.Reader) (cmd uint16, body 
[]byte, err error) {
 // OKAY or DENY response command from the server. If addr or methodName is "",
 // the corresponding command is not sent. Returns nil if and only if OKAY is
 // received.
-func extOrPortSetup(s io.ReadWriter, addr, methodName string) error {
+func extOrPortSetMetadata(s io.ReadWriter, addr, methodName string) error {
        var err error
 
        if addr != "" {
@@ -915,6 +915,27 @@ func extOrPortSetup(s io.ReadWriter, addr, methodName 
string) error {
        return nil
 }
 
+func extOrPortSetup(s net.Conn, timeout time.Duration,
+       info *ServerInfo, addr, methodName string) error {
+       err := s.SetDeadline(time.Now().Add(5 * time.Second))
+       if err != nil {
+               return err
+       }
+       err = extOrPortAuthenticate(s, info)
+       if err != nil {
+               return err
+       }
+       err = extOrPortSetMetadata(s, addr, methodName)
+       if err != nil {
+               return err
+       }
+       err = s.SetDeadline(time.Time{})
+       if err != nil {
+               return err
+       }
+       return nil
+}
+
 // Dial info.ExtendedOrAddr if defined, or else info.OrAddr, and return an open
 // *net.TCPConn. If connecting to the extended OR port, extended OR port
 // authentication à la 217-ext-orport-auth.txt is done before returning; an
@@ -932,22 +953,7 @@ func DialOr(info *ServerInfo, addr, methodName string) 
(*net.TCPConn, error) {
        if err != nil {
                return nil, err
        }
-       err = s.SetDeadline(time.Now().Add(5 * time.Second))
-       if err != nil {
-               s.Close()
-               return nil, err
-       }
-       err = extOrPortAuthenticate(s, info)
-       if err != nil {
-               s.Close()
-               return nil, err
-       }
-       err = extOrPortSetup(s, addr, methodName)
-       if err != nil {
-               s.Close()
-               return nil, err
-       }
-       err = s.SetDeadline(time.Time{})
+       err = extOrPortSetup(s, 5*time.Second, info, addr, methodName)
        if err != nil {
                s.Close()
                return nil, err
diff --git a/pt_test.go b/pt_test.go
index f9f4790..ce26b16 100644
--- a/pt_test.go
+++ b/pt_test.go
@@ -704,28 +704,28 @@ func TestExtOrPortRecvCommand(t *testing.T) {
        }
 }
 
-// set up so that extOrPortSetup can write to one buffer and read from another.
-type mockSetupBuf struct {
+// set up so that extOrPortSetMetadata can write to one buffer and read from 
another.
+type mockSetMetadataBuf struct {
        bytes.Buffer
        ReadBuf bytes.Buffer
 }
 
-func (buf *mockSetupBuf) Read(p []byte) (int, error) {
+func (buf *mockSetMetadataBuf) Read(p []byte) (int, error) {
        n, err := buf.ReadBuf.Read(p)
        return n, err
 }
 
-func testExtOrPortSetupIndividual(t *testing.T, addr, methodName string) {
+func testExtOrPortSetMetadataIndividual(t *testing.T, addr, methodName string) 
{
        var err error
-       var buf mockSetupBuf
+       var buf mockSetMetadataBuf
        // fake an OKAY response.
        err = extOrPortSendCommand(&buf.ReadBuf, extOrCmdOkay, []byte{})
        if err != nil {
                t.Fatal(err)
        }
-       err = extOrPortSetup(&buf, addr, methodName)
+       err = extOrPortSetMetadata(&buf, addr, methodName)
        if err != nil {
-               t.Fatalf("error in extOrPortSetup: %s", err)
+               t.Fatalf("error in extOrPortSetMetadata: %s", err)
        }
        for {
                cmd, body, err := extOrPortRecvCommand(&buf.Buffer)
@@ -751,13 +751,13 @@ func testExtOrPortSetupIndividual(t *testing.T, addr, 
methodName string) {
        }
 }
 
-func TestExtOrPortSetup(t *testing.T) {
+func TestExtOrPortSetMetadata(t *testing.T) {
        const addr = "127.0.0.1:40000"
        const methodName = "alpha"
-       testExtOrPortSetupIndividual(t, "", "")
-       testExtOrPortSetupIndividual(t, addr, "")
-       testExtOrPortSetupIndividual(t, "", methodName)
-       testExtOrPortSetupIndividual(t, addr, methodName)
+       testExtOrPortSetMetadataIndividual(t, "", "")
+       testExtOrPortSetMetadataIndividual(t, addr, "")
+       testExtOrPortSetMetadataIndividual(t, "", methodName)
+       testExtOrPortSetMetadataIndividual(t, addr, methodName)
 }
 
 func TestMakeStateDir(t *testing.T) {



_______________________________________________
tor-commits mailing list
[email protected]
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to