fix(client,nip44): subscription routing and provider-independent NIP-44 (2.0.8) - #538
Merged
tcheeric merged 26 commits intoAug 22, 2026
Merged
Annotations
1 error
|
Check Commit Messages
You have commit messages with errors
⧗ input: fix(ws): explicitly close session on SessionLimitExceededException to restore isOpen()==false reconnect contract
Spring's ConcurrentWebSocketSessionDecorator under OverflowStrategy.TERMINATE
only sets a private limitExceeded flag and throws SessionLimitExceededException
from limitExceeded() — it does NOT close the delegate session. As a result,
2.0.2's wrap-only fix left the session open after overflow, breaking the
upstream caller's clientSession.isOpen()==false → reconnect contract that the
spec's §6.7d ii originally required.
NostrRelayClient.subscribe() and NostrRelayClient.send() now detect a
SessionLimitExceededException cause in their respective catch blocks and call
clientSession.close(CloseStatus.SESSION_NOT_RELIABLE) explicitly before
rewrapping the exception. Non-overflow RuntimeExceptions continue to flow
through the existing wrap-as-IOException path unchanged — only overflow
terminates the session, matching Spring's OverflowStrategy.TERMINATE
semantics that the framework only half-implements.
The §6.7d concurrency test now strictly asserts clientSession.isOpen()==false
after overflow, restoring the spec's original contract.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
✖ header must not be longer than 100 characters, current length is 112 [header-max-length]
✖ found 1 problems, 0 warnings
ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint
|
background
wait
wait-all
cancel
parallel
Loading