From 316de2df0f4b1feb0297a4b494d5bdf6374f5722 Mon Sep 17 00:00:00 2001 From: idk Date: Wed, 26 Dec 2018 01:24:05 -0500 Subject: [PATCH] move SAM back --- conn/conn.go | 7 ++----- socks/manager.go | 8 +++++++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/conn/conn.go b/conn/conn.go index 9eed341..8bb3526 100644 --- a/conn/conn.go +++ b/conn/conn.go @@ -87,13 +87,10 @@ func (m Conn) Cleanup() error { return nil } -func NewConn(samhost, samport, addr, path string, opts []string) (*Conn, error) { +func NewConn(sam sam3.SAM, addr, path string, opts []string) (*Conn, error) { var c Conn var err error - c.SAM, err = sam3.NewSAM(samhost + ":" + samport) - if err != nil { - return nil, err - } + c.SAM = &sam c.path = path t32, err := sam3.NewI2PAddrFromString(addr) c.name = t32.Base32() + ".i2pkeys" diff --git a/socks/manager.go b/socks/manager.go index 9c609b0..fd2890e 100644 --- a/socks/manager.go +++ b/socks/manager.go @@ -18,6 +18,7 @@ import ( type Manager struct { resolver.Resolver socks5.Config + *sam3.SAM conns []*conn.Conn datadir string host string @@ -50,7 +51,7 @@ func (m Manager) DialI2P(ctx context.Context, addr string) (*sam3.SAMConn, error } } log.Println("Creating a new connection in connection tree.", m.datadir) - newconn, err := conn.NewConn(m.samhost, m.samport, addr, m.datadir, m.samopts) + newconn, err := conn.NewConn(*m.SAM, addr, m.datadir, m.samopts) if err != nil { return nil, err } @@ -97,6 +98,11 @@ func NewManagerFromOptions(opts ...func(*Manager) error) (*Manager, error) { } } log.Println("preparing SAM-multiplexing SOCKS proxy on", m.host, m.port, "->", m.samhost, m.samport) + var err error + m.SAM, err = sam3.NewSAM(m.samhost + ":" + m.samport) + if err != nil { + return nil, err + } if r, err := resolver.NewResolver(m.samhost, m.samport); err == nil { m.Config = socks5.Config{ Resolver: r,