Мой сервер предоставляет несколько методов проверки подлинности: NTLM и дайджест. 
Мой клиент iOS не будет обрабатывать аутентификацию NTLM, поэтому я реализую делегат connection:willSendRequestForAuthenticationChallenge:, чтобы отклонить NTLM, а затем использовать правильные учетные данные только для проверки подлинности дайджеста. 
Пока все работает отлично на iOS 7.
Но на iOS 8 я обнаружил странное поведение: 
делегат connection:willSendRequestForAuthenticationChallenge: не будет вызываться в большинстве случаев (95%)!!
Я получил эту ошибку:
Error: Error Domain=NSPOSIXErrorDomain Code=54 "The operation couldn’t be completed. Connection reset by peer" 
UserInfo=0x16520fb0 {_kCFStreamErrorCodeKey=54, 
NSErrorPeerAddressKey=<CFData 0x16682e40 [0x2f752440]>{length = 16, capacity = 16, bytes = 0x10020d7eac12780b0000000000000000}, 
NSErrorFailingURLKey=http://SERVER_IP:SERVER_PORT/Tunnel/Message.aspx, 
NSErrorFailingURLStringKey=http://SERVER_IP:SERVER_PORT/Tunnel/Message.aspx, 
_kCFStreamErrorDomainKey=1}
Только 5% времени, когда делегат правильно вызывается и работает как обычно.
Ниже показано, как я отправляю свой запрос на сервер и обрабатываю вызов аутентификации:
- (void)postRequest
{
    NSString *IP = SERVER_IP;
    int port = SERVER_PORT;
    NSString *url = [NSString stringWithFormat:@"http://%@:%d/Tunnel/Message.aspx", IP, port];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];
    [request setHTTPMethod:@"POST"];
    [request setValue:@"application/xml" forHTTPHeaderField:@"Content-Type"];
    NSString *xml = [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"UTF-8\"?><GetServerInfo></GetServerInfo>"];
    [request setHTTPBody: [xml dataUsingEncoding:NSUTF8StringEncoding]];
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
    NSLog(@"%@", challenge.protectionSpace);
    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodHTTPDigest])
    {
        if ([challenge previousFailureCount] == 0)
        {
            [[challenge sender] useCredential:[NSURLCredential credentialWithUser:USERNAME
                                                                         password:PASSWORD
                                                                      persistence:NSURLCredentialPersistenceNone]
                   forAuthenticationChallenge:challenge];
        }
        else
        {
            [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge];
        }
    }
    else
    {
        [[challenge sender] rejectProtectionSpaceAndContinueWithChallenge:challenge];
    }
}
Этот код работает на iOS 7, willSendRequestForAuthenticationChallenge вызывается несколько раз во время проверки подлинности, но даже не вызывается ни разу на iOS 8!
Может ли это быть ошибкой iOS 8 или что-то изменилось с iOS 8?
