diff options
Diffstat (limited to 'internal/server')
| -rw-r--r-- | internal/server/server.go | 12 |
1 files changed, 12 insertions, 0 deletions
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) |
