summaryrefslogtreecommitdiff
path: root/pkg/server/socket/dial.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/server/socket/dial.go')
-rw-r--r--pkg/server/socket/dial.go28
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() {