Skip to content

chore(rate-limit): use req.socket instead of deprecated req.connection#287

Merged
CryptoJones merged 1 commit into
masterfrom
chore/rate-limit-key-replace-deprecated-connection
May 19, 2026
Merged

chore(rate-limit): use req.socket instead of deprecated req.connection#287
CryptoJones merged 1 commit into
masterfrom
chore/rate-limit-key-replace-deprecated-connection

Conversation

@CryptoJones
Copy link
Copy Markdown
Owner

Summary

The fallback IP lookup in keyByAuthKeyOrIp reached for req.connection.remoteAddress when req.ip was unset. Node has marked request.connection deprecated since 13.x as a legacy alias for request.socket — same value, different name. Switch to req.socket.remoteAddress so the keygen doesn't carry a warning-class accessor.

Impact

  • Behavior identical (request.connection is literally request.socket per the Node deprecation note).
  • The existing unit tests inject { ip } directly and don't traverse the fallback branch, so they pass unmodified.

Test plan

  • npm run lint && npm test — 760 passing.

Proudly Made in Nebraska. Go Big Red! 🌽 https://xkcd.com/2347/

The fallback IP lookup in \`keyByAuthKeyOrIp\` reached for
\`req.connection.remoteAddress\` when \`req.ip\` was unset. Node has
marked \`request.connection\` deprecated since 13.x as a legacy alias
for \`request.socket\` — same value, different name. Switch to
\`req.socket.remoteAddress\` so the keygen doesn't carry a warning-
class accessor.

Behavior is identical; the existing unit tests (which inject a
plain \`{ ip }\` object) still pass without modification because
they never reach the fallback branch.

760 tests still pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@CryptoJones CryptoJones merged commit 2b794d4 into master May 19, 2026
3 checks passed
@CryptoJones CryptoJones deleted the chore/rate-limit-key-replace-deprecated-connection branch May 19, 2026 15:51
CryptoJones added a commit that referenced this pull request May 19, 2026
…291)

#287 swapped the deprecated \`req.connection\` for \`req.socket\` in
the rate-limit key generator's fallback path. The existing unit tests
inject a plain { ip } object and never traverse the fallback, so the
new accessor was technically untested. Add an explicit case that
forces the fallback by passing { socket: { remoteAddress: ... } }
without req.ip — the keygen should pick the socket address up and
route it through the IPv6-aware helper.

Test count: 760 → 761.

Co-authored-by: Aaron K. Clark <akclark@thenetwerk.net>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant