From 3c7fc231c89c3641df718e885a7760fc53cc2d52 Mon Sep 17 00:00:00 2001 From: idk Date: Wed, 26 Dec 2018 01:17:49 -0500 Subject: [PATCH] move SAM into conn --- conn/conn.go | 11 +++++++---- socks/manager.go | 8 +------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/conn/conn.go b/conn/conn.go index 0cd936b..9eed341 100644 --- a/conn/conn.go +++ b/conn/conn.go @@ -87,10 +87,13 @@ func (m Conn) Cleanup() error { return nil } -func NewConn(sam sam3.SAM, addr, path string, opts []string) (*Conn, error) { +func NewConn(samhost, samport, addr, path string, opts []string) (*Conn, error) { var c Conn var err error - c.SAM = &sam + c.SAM, err = sam3.NewSAM(samhost + ":" + samport) + if err != nil { + return nil, err + } c.path = path t32, err := sam3.NewI2PAddrFromString(addr) c.name = t32.Base32() + ".i2pkeys" @@ -98,11 +101,11 @@ func NewConn(sam sam3.SAM, addr, path string, opts []string) (*Conn, error) { if err != nil { return nil, err } - c.StreamSession, err = sam.NewStreamSession(c.I2PKeys.Addr().Base32()[0:10]+RandTunName(), c.I2PKeys, opts) + c.StreamSession, err = c.SAM.NewStreamSession(c.I2PKeys.Addr().Base32()[0:10]+RandTunName(), c.I2PKeys, opts) if err != nil { return nil, err } - i2paddr, err := sam.Lookup(addr) + i2paddr, err := c.SAM.Lookup(addr) if err != nil { return nil, err } diff --git a/socks/manager.go b/socks/manager.go index fd2890e..9c609b0 100644 --- a/socks/manager.go +++ b/socks/manager.go @@ -18,7 +18,6 @@ import ( type Manager struct { resolver.Resolver socks5.Config - *sam3.SAM conns []*conn.Conn datadir string host string @@ -51,7 +50,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.SAM, addr, m.datadir, m.samopts) + newconn, err := conn.NewConn(m.samhost, m.samport, addr, m.datadir, m.samopts) if err != nil { return nil, err } @@ -98,11 +97,6 @@ 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,