mirror of
https://github.com/deneraraujo/OpenVPNAdapter.git
synced 2026-04-06 00:00:03 +08:00
Reset tunnel on disconnect
This commit is contained in:
@@ -34,11 +34,11 @@ typedef NS_ENUM(NSInteger, OpenVPNAdapterEvent);
|
|||||||
the TUN interface, or nil if an error occurred.
|
the TUN interface, or nil if an error occurred.
|
||||||
|
|
||||||
@param openVPNAdapter The OpenVPNAdapter instance requesting this information.
|
@param openVPNAdapter The OpenVPNAdapter instance requesting this information.
|
||||||
@param networkSettings The NEPacketTunnelNetworkSettings to be used for the tunnel.
|
@param networkSettings The NEPacketTunnelNetworkSettings to be used for the tunnel. Provides nil to clear out the network settings.
|
||||||
@param completionHandler The completion handler to be called with a NEPacketTunnelFlow object, or nil if an error occurred.
|
@param completionHandler The completion handler to be called with a NEPacketTunnelFlow object, or nil if an error occurred or the network settings were cleared out.
|
||||||
*/
|
*/
|
||||||
- (void)openVPNAdapter:(OpenVPNAdapter *)openVPNAdapter
|
- (void)openVPNAdapter:(OpenVPNAdapter *)openVPNAdapter
|
||||||
configureTunnelWithNetworkSettings:(NEPacketTunnelNetworkSettings *)networkSettings
|
configureTunnelWithNetworkSettings:(nullable NEPacketTunnelNetworkSettings *)networkSettings
|
||||||
completionHandler:(void (^)(id<OpenVPNAdapterPacketFlow> _Nullable packetFlow))completionHandler
|
completionHandler:(void (^)(id<OpenVPNAdapterPacketFlow> _Nullable packetFlow))completionHandler
|
||||||
NS_SWIFT_NAME(openVPNAdapter(_:configureTunnelWithNetworkSettings:completionHandler:));
|
NS_SWIFT_NAME(openVPNAdapter(_:configureTunnelWithNetworkSettings:completionHandler:));
|
||||||
|
|
||||||
|
|||||||
@@ -398,6 +398,16 @@
|
|||||||
_sessionName = nil;
|
_sessionName = nil;
|
||||||
_packetFlowBridge = nil;
|
_packetFlowBridge = nil;
|
||||||
_networkSettingsBuilder = nil;
|
_networkSettingsBuilder = nil;
|
||||||
|
|
||||||
|
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
|
||||||
|
|
||||||
|
void (^completionHandler)(id<OpenVPNAdapterPacketFlow> _Nullable) = ^(id<OpenVPNAdapterPacketFlow> flow) {
|
||||||
|
dispatch_semaphore_signal(semaphore);
|
||||||
|
};
|
||||||
|
|
||||||
|
[self.delegate openVPNAdapter:self configureTunnelWithNetworkSettings:nil completionHandler:completionHandler];
|
||||||
|
|
||||||
|
dispatch_semaphore_wait(semaphore, dispatch_time(DISPATCH_TIME_NOW, 30 * NSEC_PER_SEC));
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ class OpenVPNAdapterTests: XCTestCase {
|
|||||||
|
|
||||||
extension OpenVPNAdapterTests: OpenVPNAdapterDelegate {
|
extension OpenVPNAdapterTests: OpenVPNAdapterDelegate {
|
||||||
|
|
||||||
func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, configureTunnelWithNetworkSettings networkSettings: NEPacketTunnelNetworkSettings, completionHandler: @escaping (OpenVPNAdapterPacketFlow?) -> Void) {
|
func openVPNAdapter(_ openVPNAdapter: OpenVPNAdapter, configureTunnelWithNetworkSettings networkSettings: NEPacketTunnelNetworkSettings?, completionHandler: @escaping (OpenVPNAdapterPacketFlow?) -> Void) {
|
||||||
completionHandler(customFlow)
|
completionHandler(customFlow)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user