Reject clients who match an existing st_client
row
#2748
+25
−5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of Changes
At various places in our codebase, we assume that client connections are unique by
(identity, connection_id)
pair,but we never actually enforced this prior to now.
It was difficult, but not impossible, to accidentally connect with an already-present
(identity, connection_id)
pair. The easiest way was to open twoDbConnection
s in parallel from within a single Rust client SDK process,due to a misbehavior in that SDK which I intend to fix in a separate PR.
This commit modifies
MutTxId::insert_st_client
to return an error if the row to be inserted is already resident in the database. It's still possible for a database owner to delete fromst_client
manually via a SQLdelete
statement, which will cause strange misbehaviors, but it should no longer be possible for an unprivileged client to accidentally put the database into a state that's intended to be impossible.API and ABI breaking changes
N/a
Expected complexity level and risk
1
Testing
quickstart-chat
client.