aboutsummaryrefslogtreecommitdiff
path: root/internal/net/server.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-09-18 20:03:13 -0400
committerhistoria <[not public]>2026-09-18 20:03:13 -0400
commit79764732406d6484f67d3dec045483dcb5d08c28 (patch)
tree7a64e8581a540b97ed554f5723e2d587424ab1c6 /internal/net/server.go
parentf1e461ab6aec6b9bf056bbe2daa88a251e0f21da (diff)
downloadthehouseoficarus-79764732406d6484f67d3dec045483dcb5d08c28.tar.gz
feat: better card ascii art
Diffstat (limited to 'internal/net/server.go')
-rw-r--r--internal/net/server.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/internal/net/server.go b/internal/net/server.go
index c818eef..daf3e47 100644
--- a/internal/net/server.go
+++ b/internal/net/server.go
@@ -151,6 +151,14 @@ func (sess *Session) RemoteAddr() string {
return ""
}
+// RemoteHost returns the client's IP/host without the ephemeral source port.
+// Rate-limit keys must use this: RemoteAddr includes a fresh port on every
+// reconnect, so keying on it lets a reconnecting attacker reset the limiter.
+// Synthetic/test connections without a transport address return "".
+func (sess *Session) RemoteHost() string {
+ return remoteHost(sess.RemoteAddr())
+}
+
// sessionSeq is the source of Session.seq values. It is incremented under the
// adding Hub's mutex, so no extra atomicity is needed for correctness; atomic
// access keeps the package-level default counter safe if Hub.Add is ever