diff options
| author | Bug Magnet <marco.nikic@mullvad.net> | 2025-05-14 10:35:58 +0200 |
|---|---|---|
| committer | Bug Magnet <marco.nikic@mullvad.net> | 2025-05-14 12:45:54 +0200 |
| commit | be7802a6aed590c0f23e5dfe7be003aaa868a42b (patch) | |
| tree | d1348cff07fcf6e7a6728f8442422935ea770c5b /ios/MullvadRustRuntime | |
| parent | 98c30cb6a37e8f92a5353e3554116bbff7054f73 (diff) | |
| download | mullvadvpn-be7802a6aed590c0f23e5dfe7be003aaa868a42b.tar.xz mullvadvpn-be7802a6aed590c0f23e5dfe7be003aaa868a42b.zip | |
Make the API cancellation handle safe, and properly clear out pointers
Diffstat (limited to 'ios/MullvadRustRuntime')
| -rw-r--r-- | ios/MullvadRustRuntime/MullvadApiCancellable.swift | 6 | ||||
| -rw-r--r-- | ios/MullvadRustRuntime/include/mullvad_rust_runtime.h | 10 |
2 files changed, 7 insertions, 9 deletions
diff --git a/ios/MullvadRustRuntime/MullvadApiCancellable.swift b/ios/MullvadRustRuntime/MullvadApiCancellable.swift index 6c76bc3c14..932720c533 100644 --- a/ios/MullvadRustRuntime/MullvadApiCancellable.swift +++ b/ios/MullvadRustRuntime/MullvadApiCancellable.swift @@ -9,17 +9,17 @@ import MullvadTypes public class MullvadApiCancellable: Cancellable { - private let handle: SwiftCancelHandle + private var handle: SwiftCancelHandle public init(handle: consuming SwiftCancelHandle) { self.handle = handle } deinit { - mullvad_api_cancel_task_drop(handle) + mullvad_api_cancel_task_drop(&handle) } public func cancel() { - mullvad_api_cancel_task(handle) + mullvad_api_cancel_task(&handle) } } diff --git a/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h b/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h index 36790ce05c..ab0de2e1f3 100644 --- a/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h +++ b/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h @@ -345,10 +345,9 @@ struct SwiftCancelHandle mullvad_ios_get_relays(struct SwiftApiContext api_conte * * # Safety * - * `handle_ptr` must be pointing to a valid instance of `SwiftCancelHandle`. This function - * is not safe to call multiple times with the same `SwiftCancelHandle`. + * `handle_ptr` must be pointing to a valid instance of `SwiftCancelHandle`. */ -void mullvad_api_cancel_task(struct SwiftCancelHandle handle_ptr); +void mullvad_api_cancel_task(struct SwiftCancelHandle *handle_ptr); /** * Called by the Swift side to signal that the Rust `SwiftCancelHandle` can be safely @@ -356,10 +355,9 @@ void mullvad_api_cancel_task(struct SwiftCancelHandle handle_ptr); * * # Safety * - * `handle_ptr` must be pointing to a valid instance of `SwiftCancelHandle`. This function - * is not safe to call multiple times with the same `SwiftCancelHandle`. + * `handle_ptr` must be pointing to a valid instance of `SwiftCancelHandle`. */ -void mullvad_api_cancel_task_drop(struct SwiftCancelHandle handle_ptr); +void mullvad_api_cancel_task_drop(struct SwiftCancelHandle *handle_ptr); /** * Maps to `mullvadApiCompletionFinish` on Swift side to facilitate callback based completion flow when doing |
