startVPNTunnelWithOptions не возвращает с ошибкой - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь настроить настроенный туннель vpn

- (void) openTunnel{

[vpnManager loadFromPreferencesWithCompletionHandler:^(NSError *error){

    if(error != nil){
        NSLog(@"%@", error);
    }else{

        NSError *startError = nil;

        [self->vpnManager.connection startVPNTunnelWithOptions:nil andReturnError:&startError];

        if(startError != nil){

            NSLog(@"viewcontroller: startError: %@", startError);
        }else{
            NSLog(@"Complete");
            [[NSNotificationCenter defaultCenter] addObserver:self
                        selector:@selector(receiveNotification:)
                    name:NEVPNStatusDidChangeNotification
                        object:nil];
        }
    }
}];}

startVPNTunnelWithOptions запускает настроенный туннель следующим образом

    - (void)startTunnelWithOptions:(NSDictionary *)options completionHandler:(void (^)(NSError *error))completion{
    NSLog(@"===>  ");
     NSError *error = nil;
    vpnAdapter = [[OpenAdapter alloc] init];
    vpnAdapter.delegate = self;
    // get config
    config = [[NSDictionary alloc] init];
    NETunnelProviderProtocol *protocol = (NETunnelProviderProtocol *)self.protocolConfiguration;
    config = protocol.providerConfiguration;

    host = config[@"server"];

    // Load config data
    username = config[@"username"];
    password = config[@"password"];

    option = config[@"option"]; 
    NSError *newError = [NSError errorWithDomain:VPNTunnelProviderErrorDomain
                                            code:TunnelProviderErrorCodeInvalidConfiguration
                                        userInfo:@{NSLocalizedDescriptionKey: @"Settings validation failed!"}];
    if(option != nil){
        [vpnAdapter connect:host user:username pass:password add:YES completionHandler:^(int success) {
            if(success == 0)
            {NSLog(@"packettunnel: newerror: %d", 0);
                completion(error);}
            else {
                NSLog(@"packettunnel: newerror: %@", newError);
                completion(newError);
            }
        }];
    }else{
        [vpnAdapter connect:host user:username pass:password add:NO completionHandler:^(int success) {
            if(success == 0){
{NSLog(@"packettunnel: newerror: %d", 0);
                 completion(error);}
            else
            {
                NSLog(@"packettunnel: newerror: %@", newError);
                completion(newError);
            }
        }];
    }

}

при тестировании с поддельными учетными данными (работает нормально с правильными), он должен печатать startError, но это не так. Я могу подтвердить, что startTunnelWithOptions фактически возвращает newError из NSLog, но каким-то образом startVPNTunnelWithOptions не возвращает никаких ошибок.

Кто-нибудь может помочь?

спасибо

...