NSURLSessionTask никогда не перезванивает, информация об ошибке отключена от Peer во время рукопожатия.Отправка сообщения об ошибке errSSLClosedNoNotify (-9816) - PullRequest
0 голосов
/ 03 марта 2019

Код:

#pragma mark - Post data
-(void)postData:(NSData *)data withUrl:(NSString*)urlStr completion:(void (^)(NSError *error, NSData *data))callback
    {
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlStr] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:OC_SEND_TIMEOUT_INTERVAL];
        request.HTTPMethod = @"POST";
        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [request setValue:[@([data length]) stringValue] forHTTPHeaderField:@"Content-Length"];
        [request setValue:self.userAgent forHTTPHeaderField: @"User-Agent"];
        request.HTTPBody = data;

        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
        NSDictionary *proxyDict = @{
                                    @"HTTPEnable"  : [NSNumber numberWithInt:1],
                                    (NSString *)kCFStreamPropertyProxyLocalBypass  : @"*.*.*.*",
                                    @"HTTPSEnable" : [NSNumber numberWithInt:1],
                                    (NSString *)kCFStreamPropertyProxyLocalBypass  : @"*.*.*.*"
                                    };
        configuration.connectionProxyDictionary = proxyDict;

        NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];

        NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *rdata, NSURLResponse *response, NSError *error){
            callback(error, rdata);
            [session finishTasksAndInvalidate];
        }];
        [task resume];
}

-(void) URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler{
    NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling;
    __block NSURLCredential *credential = nil;

    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
        BOOL ret = [self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host];

        if (ret) {
            credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
            if (credential) {
                disposition = NSURLSessionAuthChallengeUseCredential;
            } else {
                disposition = NSURLSessionAuthChallengePerformDefaultHandling;
            }
        } else {
            LOG_ERROR(USTAG, @"evaluate server trust failed!");
            disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge;
        }
    } else {
        disposition = NSURLSessionAuthChallengePerformDefaultHandling;
    }

    if (completionHandler) {
        completionHandler(disposition, credential);
    }
}
<!-- end snippet -->

Сообщение об ошибке:

nw_socket_handle_socket_event [C193.1.1:3] Socket received READ_CLOSE event
nw_protocol_boringssl_input_finished(1543) <private>[0x7f89a7752f80] Peer disconnected during the middle of a handshake. Sending errSSLClosedNoNotify(-9816) alert
nw_endpoint_flow_protocol_disconnected [C193.1.1 IPv4#abcfcea2:443 in_progress socket-flow (satisfied)] Output protocol disconnected
nw_connection_report_state_with_handler_locked [C193] reporting state failed error server closed session with no notification
TIC TCP Conn Event [193:0x600003cdf600]: 3
TIC TCP Conn Failed [193:0x600003cdf600]: 3:-9816 Err(-9816)
TIC TCP Conn Cancel [193:0x600003cdf600]
[C193 Hostname#d46b037c:443 tcp, url hash: 846aa964, tls] cancel
[C193 Hostname#d46b037c:443 tcp, url hash: 846aa964, tls] cancelled
0.000s [C193 <private> Hostname#d46b037c:443 proxy] path:start
0.000s [C193 <private> Hostname#d46b037c:443 proxy] path:satisfied
0.000s [C193 <private> Hostname#d46b037c:443 proxy] proxy:start_process
0.000s [C193 <private> Hostname#d46b037c:443 proxy] proxy:finish_process
0.000s [C193 <private> Hostname#d46b037c:443 proxy] proxy:start_resolve
0.000s [C193 <private> Hostname#d46b037c:443 proxy] proxy:finish_resolve
0.000s [C193.1 <private> Hostname#d46b037c:443 resolver] path:start
0.000s [C193.1 <private> Hostname#d46b037c:443 resolver] path:satisfied
0.000s [C193.1 <private> Hostname#d46b037c:443 resolver] resolver:start_dns
0.003s [C193.1 <private> Hostname#d46b037c:443 resolver] resolver:receive_dns
0.003s [C193.1.1 <private> 172.16.1.165:49583<->IPv4#abcfcea2:443 socket-flow] path:start
0.003s [C193.1.1 <private> 172.16.1.165:49583<->IPv4#abcfcea2:443 socket-flow] path:satisfied
0.004s [C193.1.1 <private> 172.16.1.165:49583<->IPv4#abcfcea2:443 socket-flow] 
0.005s [C193.1.1 <private> 172.16.1.165:49583<->IPv4#abcfcea2:443 socket-flow] flow:finish_transport
0.005s [C193.1 <private> Hostname#d46b037c:443 resolver] flow:finish_transport
0.005s [C193 <private> Hostname#d46b037c:443 proxy] flow:finish_transport
60.007s [C193.1.1 <private> 172.16.1.165:49583<->IPv4#abcfcea2:443 socket-flow] flow:failed_connect server closed session with no notification
60.007s [C193.1 <private> Hostname#d46b037c:443 resolver] flow:failed_connect
60.007s [C193 <private> Hostname#d46b037c:443 proxy] flow:failed_connect
60.008s [C193] path:cancel
nw_connection_report_state_with_handler_locked [C193] reporting state cancelled error server closed session with no notification
TIC TCP Conn Destroyed [193:0x600003cdf600]
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9816)
Task <20D1A31A-D9A1-46C6-A2DB-905114871629>.<1> HTTP load failed (error code: -1200 [3:-9816])
Task <20D1A31A-D9A1-46C6-A2DB-905114871629>.<1> finished with error - code: -1200

info.plist:

    <key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>domain-1</key>
        <dict>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.0</string>
        </dict>
        <key>domain-2</key>
        <dict>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.0</string>
        </dict>
        <key>domain-3</key>
        <dict>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.0</string>
        </dict>
    </dict>
</dict>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...