From 15dc0a885b72c75c3cbecdf7856f8085c2a9a3ba Mon Sep 17 00:00:00 2001
From: Garet Halliday <me@garet.holiday>
Date: Tue, 19 Sep 2023 15:24:08 -0500
Subject: [PATCH] fix

---
 lib/gat/acceptor.go | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/lib/gat/acceptor.go b/lib/gat/acceptor.go
index 6a14f796..d58aaa96 100644
--- a/lib/gat/acceptor.go
+++ b/lib/gat/acceptor.go
@@ -92,18 +92,35 @@ func serve(client fed.Conn, acceptParams frontends.AcceptParams, pools Pools) er
 
 func Serve(acceptor Acceptor, pools Pools) error {
 	for {
-		conn, acceptParams, err := acceptor.Accept()
+		netConn, err := acceptor.Listener.Accept()
 		if err != nil {
 			if errors.Is(err, net.ErrClosed) {
 				return nil
 			}
-			log.Print("error accepting client: ", err)
+			log.Print("error accepting connection: ", err)
 			continue
 		}
+		conn := fed.WrapNetConn(netConn)
+
 		go func() {
-			err := serve(conn, acceptParams, pools)
+			defer func() {
+				_ = conn.Close()
+			}()
+
+			ctx := frontends.AcceptContext{
+				Conn:    conn,
+				Options: acceptor.Options,
+			}
+			acceptParams, acceptErr := frontends.Accept(&ctx)
+			if acceptErr != nil {
+				log.Print("error accepting client: ", acceptErr)
+				return
+			}
+
+			err = serve(conn, acceptParams, pools)
 			if err != nil && !errors.Is(err, io.EOF) {
 				log.Print("error serving client: ", err)
+				return
 			}
 		}()
 	}
-- 
GitLab