diff options
| author | Bug Magnet <marco.nikic@mullvad.net> | 2025-05-16 13:35:30 +0200 |
|---|---|---|
| committer | Bug Magnet <marco.nikic@mullvad.net> | 2025-05-23 09:23:28 +0200 |
| commit | 8e997549c3af645992e80f6356d71425b4a784d6 (patch) | |
| tree | 854bc8db0b04d649922cfb3c559b362acb57d6d5 /ios/MullvadRustRuntime/include | |
| parent | a9d8ce8abf4073f72fb94fb6a05fb6c1b43069c3 (diff) | |
| download | mullvadvpn-8e997549c3af645992e80f6356d71425b4a784d6.tar.xz mullvadvpn-8e997549c3af645992e80f6356d71425b4a784d6.zip | |
Fix API breaking down when used without connectivity
Diffstat (limited to 'ios/MullvadRustRuntime/include')
| -rw-r--r-- | ios/MullvadRustRuntime/include/mullvad_rust_runtime.h | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h b/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h index accd302d53..70c1428098 100644 --- a/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h +++ b/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h @@ -61,6 +61,14 @@ typedef struct SwiftShadowsocksLoaderWrapper { struct SwiftShadowsocksLoaderWrapperContext _0; } SwiftShadowsocksLoaderWrapper; +typedef struct SwiftAddressCacheProviderContext { + const void *address_cache; +} SwiftAddressCacheProviderContext; + +typedef struct SwiftAddressCacheWrapper { + struct SwiftAddressCacheProviderContext _0; +} SwiftAddressCacheWrapper; + typedef struct SwiftCancelHandle { struct RequestCancelHandle *ptr; } SwiftCancelHandle; @@ -161,7 +169,8 @@ struct SwiftApiContext mullvad_api_init_new_tls_disabled(const char *host, const char *address, const char *domain, struct SwiftShadowsocksLoaderWrapper bridge_provider, - struct SwiftAccessMethodSettingsWrapper settings_provider); + struct SwiftAccessMethodSettingsWrapper settings_provider, + struct SwiftAddressCacheWrapper address_cache); /** * # Safety @@ -181,7 +190,8 @@ struct SwiftApiContext mullvad_api_init_new(const char *host, const char *address, const char *domain, struct SwiftShadowsocksLoaderWrapper bridge_provider, - struct SwiftAccessMethodSettingsWrapper settings_provider); + struct SwiftAccessMethodSettingsWrapper settings_provider, + struct SwiftAddressCacheWrapper address_cache); /** * # Safety @@ -202,7 +212,8 @@ struct SwiftApiContext mullvad_api_init_inner(const char *host, const char *domain, bool disable_tls, struct SwiftShadowsocksLoaderWrapper bridge_provider, - struct SwiftAccessMethodSettingsWrapper settings_provider); + struct SwiftAccessMethodSettingsWrapper settings_provider, + struct SwiftAddressCacheWrapper address_cache); /** * Converts parameters into a `Box<AccessMethodSetting>` raw representation that @@ -299,6 +310,25 @@ struct SwiftCancelHandle mullvad_ios_delete_account(struct SwiftApiContext api_c const char *account_number); /** + * Return the latest available endpoint, or a default one if none are cached + * + * # SAFETY + * `rawAddressCacheProvider` **must** be provided by a call to `init_swift_address_cache_wrapper` + * It is okay to persist it, and use it accross multiple threads. + */ +extern const char *swift_get_cached_endpoint(const void *rawAddressCacheProvider); + +/** + * Called by the Swift side in order to provide an object to rust that provides API addresses in a UTF-8 string form + * + * # SAFETY + * `address_cache` **must be** pointing to a valid instance of a `DefaultAddressCacheProvider` + * That instance's lifetime has to be equivalent to a `'static` lifetime in Rust + * This function does not take ownership of `address_cache` + */ +struct SwiftAddressCacheWrapper init_swift_address_cache_wrapper(const void *address_cache); + +/** * # Safety * * `api_context` must be pointing to a valid instance of `SwiftApiContext`. A `SwiftApiContext` is created |
