diff options
| author | Kyren223 <Kyren223@proton.me> | 2024-11-22 16:46:19 +0200 |
|---|---|---|
| committer | Kyren223 <Kyren223@proton.me> | 2024-11-22 16:46:19 +0200 |
| commit | 00dd876f252fb9bcdbfd0c7ffc0eaebcdde661dd (patch) | |
| tree | 803f21759beba283a78e6bedde0e4775cbf7d897 /internal/server | |
| parent | ac1123f5e04e7ef7a695f02bb66eb7fe1134899c (diff) | |
Implemented proper connection and retry mechanisms
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) |
