From 3c4432e0f2fb8ddf54a2e441063d584b99572a4e Mon Sep 17 00:00:00 2001 From: Mikhail Osipov Date: Thu, 26 Mar 2020 00:29:12 +0300 Subject: add tun socket --- pkg/server/server.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'pkg/server/server.go') diff --git a/pkg/server/server.go b/pkg/server/server.go index 6f3c312..e794b56 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -10,7 +10,6 @@ import ( "strings" "sync" "time" - "tunnel/pkg/config" "tunnel/pkg/netstring" "tunnel/pkg/server/env" ) @@ -37,6 +36,8 @@ type client struct { s *Server conn net.Conn + r *netstring.Decoder + w *netstring.Encoder nextRid int } @@ -133,7 +134,7 @@ func (s *Server) isDone() bool { } func New(path string) (*Server, error) { - listen, err := net.Listen("unixpacket", path) + listen, err := net.Listen("unix", path) if err != nil { return nil, err } @@ -194,6 +195,8 @@ func (s *Server) newClient(conn net.Conn) *client { c := &client{ s: s, conn: conn, + r: netstring.NewDecoder(conn), + w: netstring.NewEncoder(conn), id: s.nextCid, } @@ -234,18 +237,16 @@ func (c *client) newRequest() *request { func (c *client) handle() { defer c.close() - buf := make([]byte, config.BufSize) - for { - nr, er := c.conn.Read(buf) + req, er := c.r.Decode() if er != nil { - if er != io.EOF { + if !errors.Is(er, io.EOF) { log.Println(c, "handle:", er) } break } - args, err := c.decode(buf[:nr]) + args, err := c.decode([]byte(req)) if err != nil { log.Println(c, "decode:", err) break @@ -259,7 +260,7 @@ func (c *client) handle() { r.out.Write([]byte("\n")) } - _, ew := c.conn.Write(r.out.Bytes()) + ew := c.w.Encode(r.out.String()) if ew != nil { log.Println(c, "handle:", ew) break -- cgit v1.2.3-70-g09d2