rust: Add Send bound to SecureSessionTransport trait #898
+30
−11
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.
New Clippy 1.58 has found an unsoundness in RustThemis:
unsafe impl
forSecureSession
make itSend
– safe to pass over to a different thread – but in fact it's not safe to do that unlessSecureSessionTransport
implementation used bySecureSession
is alsoSend
, which was expected but never required. Well, now it is required.This would break application code that uses
SecureSessionTransport
implementations that are!Send
(e.g., usingRc
inside, or raw pointers). This is not safe ifSecureSession
is moved to another thread, but it should be okay if it stays on the same thread as its transport.I believe that most applications will not be affected by this change. If someone is really out there using
!Send
transports, they'd come complaining, then I'd decide what to do: either tell them “you're doing it wrong”, or make a patch release that make it possible toSecureSession
to be!Send
as well.For now, my goal is to fix a warning from Clippy on CI.
Checklist