summaryrefslogtreecommitdiff
path: root/internal/server/server.go
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2024-11-22 16:46:19 +0200
committerKyren223 <Kyren223@proton.me>2024-11-22 16:46:19 +0200
commit00dd876f252fb9bcdbfd0c7ffc0eaebcdde661dd (patch)
tree803f21759beba283a78e6bedde0e4775cbf7d897 /internal/server/server.go
parentac1123f5e04e7ef7a695f02bb66eb7fe1134899c (diff)
Implemented proper connection and retry mechanisms
Diffstat (limited to 'internal/server/server.go')
-rw-r--r--internal/server/server.go12
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)