From 00dd876f252fb9bcdbfd0c7ffc0eaebcdde661dd Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Fri, 22 Nov 2024 16:46:19 +0200 Subject: Implemented proper connection and retry mechanisms --- internal/server/server.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'internal/server/server.go') diff --git a/internal/server/server.go b/internal/server/server.go index 07cd537..dce8938 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -6,6 +6,7 @@ import ( "crypto/rand" "crypto/tls" _ "embed" + "encoding/binary" "errors" "fmt" "io" @@ -159,6 +160,17 @@ func handleConnection(ctx context.Context, conn net.Conn, server *server) { ctx = session.NewContext(ctx, sess) framer := packet.NewFramer() + // Write ID back, it's useful for the client to know, and signals successful authentication + var id [8]byte + binary.BigEndian.PutUint64(id[:], uint64(user.ID)) + _, err = conn.Write(id[:]) + if err != nil { + log.Println(addr, "failed to write user id") + conn.Close() + log.Println(addr, "disconnected") + return + } + defer func() { conn.Close() close(framer.Out) -- cgit v1.3.1