summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadRustRuntime/include
diff options
context:
space:
mode:
authorBug Magnet <marco.nikic@mullvad.net>2025-05-16 13:35:30 +0200
committerBug Magnet <marco.nikic@mullvad.net>2025-05-23 09:23:28 +0200
commit8e997549c3af645992e80f6356d71425b4a784d6 (patch)
tree854bc8db0b04d649922cfb3c559b362acb57d6d5 /ios/MullvadRustRuntime/include
parenta9d8ce8abf4073f72fb94fb6a05fb6c1b43069c3 (diff)
downloadmullvadvpn-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.h36
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