From 0d455e75fd5f513acee956e9c04bac51d55422d2 Mon Sep 17 00:00:00 2001 From: Urban Wallasch Date: Mon, 8 Apr 2019 22:09:02 +0200 Subject: [PATCH] * Use the non-generic TCP versions of listen and accept. --- gogopherd.go | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/gogopherd.go b/gogopherd.go index ee37184..e400a97 100644 --- a/gogopherd.go +++ b/gogopherd.go @@ -175,7 +175,7 @@ func handleRequest(conn net.Conn) { } req = strings.TrimSpace(req) tracer.Print("request: '", req, "'") - // canonicalize, and validate referenced path + // canonicalize and validate referenced path rpath, err := validatePath(cfg.docroot, filepath.Join(cfg.docroot, filepath.FromSlash(req))) if check(err, "validatePath "+rpath) != nil { sendError(conn, "404") @@ -247,26 +247,29 @@ func handleRequest(conn net.Conn) { return } -func serveTCP(sock net.Listener) { +func serveTCP(listener *net.TCPListener) { for { - conn, err := sock.Accept() + conn, err := listener.AcceptTCP() if shutting_down { return } checkFatal(err, "Accept") - logger.Print("TCP connect from ", conn.RemoteAddr()) + logger.Print("connect from ", conn.RemoteAddr()) go handleRequest(conn) } } func main() { initialize() - bindaddr := cfg.iface + ":" + cfg.port - tsock, err := net.Listen("tcp", bindaddr) - checkFatal(err, "net.Listen tcp "+bindaddr) - defer tsock.Close() - logger.Print("listening on TCP ", bindaddr) - go serveTCP(tsock) + + // listen on interface:port + service := cfg.iface + ":" + cfg.port + address, err := net.ResolveTCPAddr("tcp", service) + checkFatal(err, "ResolveTCPAddr") + listener, err := net.ListenTCP("tcp", address) + checkFatal(err, "ListenTCP") + logger.Print("listening on TCP ", address) + go serveTCP(listener) // wait for signal sigchan := make(chan os.Signal) -- 2.30.2