diff --git a/TCPMode/demoWeb.go b/TCPMode/demoWeb.go index 132fb20..3e99213 100644 --- a/TCPMode/demoWeb.go +++ b/TCPMode/demoWeb.go @@ -16,8 +16,7 @@ type demoWeb struct { closingChan chan struct{} closedChan chan struct{} - listener Interface - server net.Listener + listener Listener } func (s *demoWeb) server_handle(conn net.Conn) { @@ -49,7 +48,7 @@ func (s *demoWeb) server_main() { defer s.worker.Done() for { - conn, err := s.server.Accept() + conn, err := s.listener.Accept() if err != nil { select { case <-s.closingChan: @@ -64,7 +63,7 @@ func (s *demoWeb) server_main() { } func NewDemoWeb(rpfc routerPortForward.Config, port int) (Interface, error) { - listener, server, err := NewListener(rpfc, port) + listener, err := NewListener(rpfc, port) if err != nil { return nil, err } @@ -77,7 +76,6 @@ func NewDemoWeb(rpfc routerPortForward.Config, port int) (Interface, error) { make(chan struct{}), listener, - server, } go s.server_main() diff --git a/TCPMode/mode.go b/TCPMode/interface.go similarity index 100% rename from TCPMode/mode.go rename to TCPMode/interface.go diff --git a/TCPMode/listener.go b/TCPMode/listener.go index 6f6bd67..9448910 100644 --- a/TCPMode/listener.go +++ b/TCPMode/listener.go @@ -9,34 +9,39 @@ import ( "github.com/hzyitc/mnh/routerPortForward" ) +type Listener interface { + Interface + net.Listener +} + type listener struct { port int closingChan chan struct{} closedChan chan struct{} - server net.Listener - reuse Interface + net.Listener + reuse Interface } -func NewListener(rpfc routerPortForward.Config, port int) (Interface, net.Listener, error) { +func NewListener(rpfc routerPortForward.Config, port int) (Listener, error) { local := "0.0.0.0:" + strconv.Itoa(port) server, err := reuseport.Listen("tcp", local) if err != nil { - return nil, nil, err + return nil, err } addr, err := net.ResolveTCPAddr("tcp", server.Addr().String()) if err != nil { server.Close() - return nil, nil, err + return nil, err } port = addr.Port reuse, err := NewReuse(rpfc, port) if err != nil { server.Close() - return nil, nil, err + return nil, err } s := &listener{ @@ -49,7 +54,7 @@ func NewListener(rpfc routerPortForward.Config, port int) (Interface, net.Listen reuse, } - return s, server, nil + return s, nil } func (s *listener) Dial(addr string) (net.Conn, error) { @@ -70,7 +75,7 @@ func (s *listener) Close() error { close(s.closingChan) err := s.reuse.Close() - err2 := s.server.Close() + err2 := s.Listener.Close() close(s.closedChan) if err != nil { diff --git a/TCPMode/proxy.go b/TCPMode/proxy.go index 92438c4..d9419d4 100644 --- a/TCPMode/proxy.go +++ b/TCPMode/proxy.go @@ -17,8 +17,7 @@ type proxy struct { closingChan chan struct{} closedChan chan struct{} - listener Interface - server net.Listener + listener Listener } func (s *proxy) server_handle(conn net.Conn) { @@ -68,7 +67,7 @@ func (s *proxy) server_main() { defer s.worker.Done() for { - conn, err := s.server.Accept() + conn, err := s.listener.Accept() if err != nil { select { case <-s.closingChan: @@ -88,7 +87,7 @@ func NewProxy(rpfc routerPortForward.Config, port int, service string) (Interfac return nil, err } - listener, server, err := NewListener(rpfc, port) + listener, err := NewListener(rpfc, port) if err != nil { return nil, err } @@ -102,7 +101,6 @@ func NewProxy(rpfc routerPortForward.Config, port int, service string) (Interfac make(chan struct{}), listener, - server, } go s.server_main() diff --git a/TCPProtocol/protocol.go b/TCPProtocol/interface.go similarity index 100% rename from TCPProtocol/protocol.go rename to TCPProtocol/interface.go