标签: cfnetwork

CFNetwork SSLHandshake失败(-9806)

当我尝试在Apple Mail中配置我的企业邮件帐户(Exchange)时,我可以在控制台中看到以下错误日志.但是,在Outlook 2011 Mail客户端中配置相同的帐户时,我看不到此错误.当我通过WebMail(OWA)访问我的Exchange帐户时,甚至可以看到相同的错误日志.

它是CFNetwork API特有的吗?我可以看到使用CFNetwork API进行通信的所有邮件客户端的失败错误.

com.apple.WebKit.Networking [1145] CFNetwork SSLHandshake失败(-9806)com.apple.WebKit.Networking [1145] CFNetwork SSLHandshake失败(-9806)com.apple.WebKit.Networking [1145] CFNetwork SSLHandshake失败(-9806) com.apple.WebKit.Networking [1145] CFNetwork SSLHandshake失败(-9806)邮件[1658] CFNetwork SSLHandshake失败(-9806)邮件[1658] CFNetwork SSLHandshake失败(-9806)邮件[1658] CFNetwork SSLHandshake失败(-9806) )邮件[1658] NSURLConnection/CFURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9806)邮件[1658] CFNetwork SSLHandshake失败(-9806)

email macos exchange-server webkit cfnetwork

11
推荐指数
1
解决办法
4416
查看次数

如何监控应用程序内的网络活动?

我正在尝试从我正在开发的应用程序中监控iPhone上的网络活动.iOS是否支持类似netstat的命令或类似的东西,可以告诉我入站和出站连接是什么活动的?

iphone netstat objective-c cfnetwork ios

10
推荐指数
2
解决办法
1万
查看次数

CFReadStreamRead在iOS 7下永久阻止

我发现一个问题,其中CFReadStreamRead,作为流式文件上传的一部分,从来没有返回.

似乎只发生在iOS7上 - 而且在对物理设备进行调试时比在模拟器中更常见 - 或者至少在那里更明显.

我们POST通过直线阻塞(非事件驱动)CFNetwork调用来获取文件的HTTP(或HTTPS,问题以本地托管或远程服务器的方式发生).调用此处理程序的C代码是必需的; 没有回拨的规定.

这很好,网络调用发生在后台线程和/或异步调度.

有问题的网络代码归结为(为简洁起见,删除错误处理):

CFReadStreamRef upload = CFReadStreamCreateWithFile(
  kCFAllocatorDefault, upload_file_url);
CFRelease(upload_file_url);
CFReadStreamOpen(upload);

CFReadStreamRef myReadStream = CFReadStreamCreateForStreamedHTTPRequest(
  kCFAllocatorDefault, myRequest, upload);

CFReadStreamOpen(myReadStream);

CFIndex numBytesRead = CFReadStreamRead(myReadStream, buf, sizeof(buf));

// etc.
Run Code Online (Sandbox Code Playgroud)

就其本身而言,此代码希望立即在iOS7下挂起.如果我usleep在它之前添加一个带有一些调用的循环(CFReadStreamHasBytesAvailable沿途检查),它几乎总是会成功.每隔几百次尝试,它仍将失败,永不返回.同样,主线程不受影响.

我希望通用汽车能够清除这种行为,但它仍然存在.

添加runloop/callback方法以监视字节可用事件无效 - 当调用挂起时,也不会看到任何事件.

有关为什么会发生这种情况或如何防止这种情况的任何建议?其他人CFReadStream在iOS 7下看到不同的行为?

cfnetwork cfreadstream ios ios7

9
推荐指数
1
解决办法
1125
查看次数

mmapFileDeallocate崩溃

我正在处理的应用程序遇到了一个我无法重现的非常奇怪的崩溃,我所知道的唯一信息是来自Crashlytics.它只发生在ios7和谷歌搜索mmapFileDeallocate返回一个网站,其他人遇到相同的崩溃,但他们的问题消失了os更新.

这是堆栈:

Thread : Crashed: tcpConnWorkQueue
0  libobjc.A.dylib                0x3aa00b36 objc_msgSend + 21
1  CFNetwork                      0x2fece4c3 __CFURLCache::removeMMappedDataFromSet(void*) + 34
2  CFNetwork                      0x2fecfa45 mmapFileDeallocate(void*, void*) + 24
3  CoreFoundation                 0x3024ef5f __CFDataDeallocate + 30
4  CoreFoundation                 0x301c75f7 CFRelease + 462
5  CoreFoundation                 0x3023fed5 __CFArrayReleaseValues + 292
6  CoreFoundation                 0x301c75f7 CFRelease + 462
7  CFNetwork                      0x2fe5f1d5 __CFCachedURLResponse::~__CFCachedURLResponse() + 40
8  CFNetwork                      0x2fe5f19f __CFCachedURLResponse::~__CFCachedURLResponse() + 10
9  CoreFoundation                 0x301c75f7 CFRelease + 462
10 CFNetwork                      0x2feaeda1 HTTPProtocol::~HTTPProtocol() + 732
11 CoreFoundation                 0x301c75f7 CFRelease + 462
12 …
Run Code Online (Sandbox Code Playgroud)

objective-c cfnetwork ios ios7

9
推荐指数
1
解决办法
783
查看次数

使用带有AFNetworking的SSLSetEnabledCiphers来禁用弱密码

我试图禁用一些密码(弱),如单DES,单DES 40位等.

我尝试使用这段代码如何在Cocoa中使用CFSocket/CFStream时设置SSL密码?从邮件列表消息CFNetwork SSL和长阻塞延迟但我需要访问套接字数据来获取CFDataRef.

这是我试图在AFURLConnectionOperation类中的握手方法中插入的代码:

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge (NSURLAuthenticationChallenge *)challenge{
    CFReadStreamRef stream = [sock getCFReadStream];
    CFDataRef data = CFReadStreamCopyProperty(stream, kCFStreamPropertySocketSSLContext);

    // Extract the SSLContextRef from the CFData
    SSLContextRef sslContext;
    CFDataGetBytes(data, CFRangeMake(0, sizeof(SSLContextRef)), &sslContext);

    // Get all enabled ciphers
    size_t numCiphers;
    SSLGetNumberEnabledCiphers(sslContext,&numCiphers);
    SSLCipherSuite ciphers[numCiphers];
    SSLGetEnabledCiphers(sslContext,ciphers,&numCiphers);

    // Create a new cipher array with only non-DH ciphers, and set it
    SSLCipherSuite finalCiphers[numCiphers];
    int numFinalCiphers = 0;
    for(int i=0; i<numCiphers; i++) {
        SSLCipherSuite suite = …
Run Code Online (Sandbox Code Playgroud)

iphone ssl cfnetwork ios afnetworking

8
推荐指数
1
解决办法
1406
查看次数

CFHTTPMessageAddAuthentication无法向请求添加身份验证数据

我正在尝试扩展SocketRocket库的功能.我想添加身份验证功能.

由于此库使用CFNetwork CFHTTPMessage*API进行HTTP功能(需要启动Web套接字连接),我正在尝试使用此API来提供身份验证.
有完美匹配的功能:CFHTTPMessageAddAuthentication,但它不能像我期望的那样工作(据我理解的文档).

以下是显示问题的代码示例:

- (CFHTTPMessageRef)createAuthenticationHandShakeRequest: (CFHTTPMessageRef)chalengeMessage {
    CFHTTPMessageRef request = [self createHandshakeRequest];
    BOOL result = CFHTTPMessageAddAuthentication(request,
                                                 chalengeMessage,
                                                 (__bridge CFStringRef)self.credentials.user,
                                                 (__bridge CFStringRef)self.credentials.password,
                                                 kCFHTTPAuthenticationSchemeDigest, /* I've also tried NULL for use strongest supplied authentication */
                                                 NO);
    if (!result) {
        NSString *chalengeDescription = [[NSString alloc] initWithData: CFBridgingRelease(CFHTTPMessageCopySerializedMessage(chalengeMessage))
                                                              encoding: NSUTF8StringEncoding];
        NSString  *requestDescription = [[NSString alloc] initWithData: CFBridgingRelease(CFHTTPMessageCopySerializedMessage(request))
                                                              encoding: NSUTF8StringEncoding];
        SRFastLog(@"Failed to add authentication data `%@` to a request:\n%@After a chalenge:\n%@",
                  self.credentials, requestDescription, chalengeDescription); …
Run Code Online (Sandbox Code Playgroud)

macos objective-c cfnetwork digest-authentication ios

8
推荐指数
1
解决办法
917
查看次数

在CFNetwork中使用SIGABRT进行iOS崩溃

我通过扩展NSURLProtocol在我的应用程序中使用自定义URL协议.它大部分时间都可以正常工作但我看到通过crashlytics报告了以下崩溃.我自己无法重现这一点.最让我担心的是,我没有在崩溃的线程的堆栈跟踪中看到我的应用程序,所以我对从哪里开始调试毫无头绪.以下是崩溃报告

Thread : Crashed: com.apple.NSURLConnectionLoader
0  libsystem_kernel.dylib         0x3562cc84 __pthread_kill + 8
1  libsystem_pthread.dylib        0x356d0733 pthread_kill + 62
2  libsystem_c.dylib              0x355c4f21 abort + 108
3  libsystem_c.dylib              0x355a47eb __assert_rtn + 302
4  CFNetwork                      0x22b82e45 CFURLProtocol_NS::_protocolInterface_cancelLoad() + 322
5  CFNetwork                      0x22c3740f ___ZN19URLConnectionLoader27_private_ScheduleOriginLoadEPK12NSURLRequestPK20_CFCachedURLResponse_block_invoke_2 + 38
6  CFNetwork                      0x22b66ccd ___ZNK19URLConnectionLoader25withExistingProtocolAsyncEU13block_pointerFvP11URLProtocolE_block_invoke + 16
7  libdispatch.dylib              0x35513bd7 _dispatch_client_callout + 22
8  libdispatch.dylib              0x3551d187 _dispatch_block_invoke$VARIANT$mp + 446
9  CFNetwork                      0x22b66caf RunloopBlockContext::_invoke_block(void const*, void*) + 18
10 CoreFoundation                 0x2326ab51 CFArrayApplyFunction + 36
11 CFNetwork                      0x22b66b97 RunloopBlockContext::perform() + 182
12 …
Run Code Online (Sandbox Code Playgroud)

cfnetwork sigabrt nsurlprotocol ios ios9

8
推荐指数
1
解决办法
1992
查看次数

iPhone上的SSDP

我需要能够发送一个UDP消息,还收到一个以发现从iPhone网络上的SSDP设备.

我知道我需要将数据包发送到多播地址,我的HTTP请求需要看起来像这样:

M-SEARCH * HTTP/1.1
Host: 239.255.255.250:1900
Man: ssdp:discover
Mx: 3
ST: "urn:schemas-upnp-org:device:InternetGatewayDevice:1"
Run Code Online (Sandbox Code Playgroud)

从阅读的文档,似乎我能做到这一切与CFNetwork的,尽管阅读(并重新读取文档)我奋力上手.任何人都可以推荐和教程或代码片段让我超过最初的学习驼峰吗?

我有CFNetwork编程指南:

http://developer.apple.com/mac/library/documentation/Networking/Conceptual/CFNetwork/CFNetwork.pdf

和Beej的网络编程指南使用互联网套接字:

http://beej.us/guide/bgnet/

谢谢

戴夫

PS

在这种情况下,我无法使用任何第三方库和框架.

iphone udp upnp cfnetwork ssdp

7
推荐指数
1
解决办法
9686
查看次数

CFNetwork内部错误:URLConnectionLoader.cpp:289

当我在一段时间后打开我的应用程序时,我收到了日志:

440:CFNetwork内部错误(0xc01a:/BuildRoot/Library/Caches/com.apple.xbs/Sources/CFNetwork/CFNetwork-758.4.3/Loading/URLConnectionLoader.cpp:289)

它从未出现在过去.我的项目使用网络库AFNetworking和CocoaAsyncSocket.

为什么会发生以及如何解决?

xcode cfnetwork ios

7
推荐指数
1
解决办法
3730
查看次数

什么可以使用CFReadStreamCreateForHTTPRequest?

对于IOS 9及更低版本,此方法CFReadStreamCreateForHTTPRequest(...)已弃用.

Apple的文档建议使用NSURLSession而不是这个.但是我不明白我如何重新整合与NSURLSession的Live(我使用流)一起工作的功能.

我没有看到任何由NSURLSession加载"live"的可能性.

您通过服务器的特殊URL来加载实时数据的用途是什么?

cfnetwork ios cfnetworking

7
推荐指数
0
解决办法
276
查看次数