diff options
Diffstat (limited to 'pkg/server/socket/dial.go')
| -rw-r--r-- | pkg/server/socket/dial.go | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/pkg/server/socket/dial.go b/pkg/server/socket/dial.go index d7b232c..728269e 100644 --- a/pkg/server/socket/dial.go +++ b/pkg/server/socket/dial.go @@ -2,6 +2,7 @@ package socket import ( "fmt" + "log" "net" "strings" "tunnel/pkg/server/env" @@ -12,13 +13,6 @@ type dialSocket struct { } func newDialSocket(proto, addr string) (S, error) { - switch proto { - case "tcp", "udp": - if !strings.Contains(addr, ":") { - addr = "localhost:" + addr - } - } - return &dialSocket{proto: proto, addr: addr}, nil } @@ -27,15 +21,27 @@ func (s *dialSocket) String() string { } func (s *dialSocket) Open(e env.Env) (Conn, error) { - conn, err := net.Dial(s.proto, e.Eval(s.addr)) + addr := e.Eval(s.addr) + + switch s.proto { + case "tcp", "udp": + if !strings.Contains(addr, ":") { + addr = "localhost:" + addr + } + } + + conn, err := net.Dial(s.proto, addr) if err != nil { return nil, err } - addr := conn.RemoteAddr() - info := fmt.Sprintf(">%s/%s", addr.Network(), addr) + la, ra := conn.LocalAddr(), conn.RemoteAddr() + desc := fmt.Sprintf("%s/%s->%s", la.Network(), la, ra) + info := fmt.Sprintf(">%s/%s", ra.Network(), ra) + + log.Println("dial", desc) - return exported{info, newConn(conn)}, nil + return newConn(conn, desc, info), nil } func (s *dialSocket) Close() { |
