ios - 哪里有对 iOS 和 Mac OS X 网络错误(如 kCFStreamErrorDomainSSL)的清晰、完整的引用?

标签 ios macos ssl network-programming runtime-error

在 Xcode 中调试网络代码时,我经常遇到如下错误序列:

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

我研究这些错误的努力都没有找到对它们的引用,因此我可以按顺序调试它们,而无需对每个单独的错误进行研究。

最佳答案

经过大量搜索,我发现 Apple 自己的引用页面没有链接到相应的错误编号。然后我能够在源代码中找到适当的错误列表和枚举:

https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFStreamConstants/#//apple_ref/doc/constant_group/CFStream_Error_Domain_Constants_CFHost_

https://developer.apple.com/library/mac/documentation/Security/Reference/secureTransportRef/

http://www.opensource.apple.com/source/libsecurity_ssl/libsecurity_ssl-36800/lib/SecureTransport.h

enum {
errSSLProtocol              = -9800,    /* SSL protocol error */
errSSLNegotiation           = -9801,    /* Cipher Suite negotiation failure */
errSSLFatalAlert            = -9802,    /* Fatal alert */
errSSLWouldBlock            = -9803,    /* I/O would block (not fatal) */
errSSLSessionNotFound       = -9804,    /* attempt to restore an unknown session */
errSSLClosedGraceful        = -9805,    /* connection closed gracefully */
errSSLClosedAbort           = -9806,    /* connection closed via error */
errSSLXCertChainInvalid     = -9807,    /* invalid certificate chain */
errSSLBadCert               = -9808,    /* bad certificate format */
errSSLCrypto                = -9809,    /* underlying cryptographic error */
errSSLInternal              = -9810,    /* Internal error */
errSSLModuleAttach          = -9811,    /* module attach failure */
errSSLUnknownRootCert       = -9812,    /* valid cert chain, untrusted root */
errSSLNoRootCert            = -9813,    /* cert chain not verified by root */
errSSLCertExpired           = -9814,    /* chain had an expired cert */
errSSLCertNotYetValid       = -9815,    /* chain had a cert not yet valid */
errSSLClosedNoNotify        = -9816,    /* server closed session with no notification */
errSSLBufferOverflow        = -9817,    /* insufficient buffer provided */
errSSLBadCipherSuite        = -9818,    /* bad SSLCipherSuite */

/* fatal errors detected by peer */
errSSLPeerUnexpectedMsg     = -9819,    /* unexpected message received */
errSSLPeerBadRecordMac      = -9820,    /* bad MAC */
errSSLPeerDecryptionFail    = -9821,    /* decryption failed */
errSSLPeerRecordOverflow    = -9822,    /* record overflow */
errSSLPeerDecompressFail    = -9823,    /* decompression failure */
errSSLPeerHandshakeFail     = -9824,    /* handshake failure */
errSSLPeerBadCert           = -9825,    /* misc. bad certificate */
errSSLPeerUnsupportedCert   = -9826,    /* bad unsupported cert format */
errSSLPeerCertRevoked       = -9827,    /* certificate revoked */
errSSLPeerCertExpired       = -9828,    /* certificate expired */
errSSLPeerCertUnknown       = -9829,    /* unknown certificate */
errSSLIllegalParam          = -9830,    /* illegal parameter */
errSSLPeerUnknownCA         = -9831,    /* unknown Cert Authority */
errSSLPeerAccessDenied      = -9832,    /* access denied */
errSSLPeerDecodeError       = -9833,    /* decoding error */
errSSLPeerDecryptError      = -9834,    /* decryption error */
errSSLPeerExportRestriction = -9835,    /* export restriction */
errSSLPeerProtocolVersion   = -9836,    /* bad protocol version */
errSSLPeerInsufficientSecurity = -9837, /* insufficient security */
errSSLPeerInternalError     = -9838,    /* internal error */
errSSLPeerUserCancelled     = -9839,    /* user canceled */
errSSLPeerNoRenegotiation   = -9840,    /* no renegotiation allowed */

/* non-fatal result codes */
errSSLServerAuthCompleted   = -9841,    /* server cert is valid, or was ignored if verification disabled */
errSSLClientCertRequested   = -9842,    /* server has requested a client cert */

/* more errors detected by us */
errSSLHostNameMismatch      = -9843,    /* peer host name mismatch */
errSSLConnectionRefused     = -9844,    /* peer dropped connection before responding */
errSSLDecryptionFail        = -9845,    /* decryption failure */
errSSLBadRecordMac          = -9846,    /* bad MAC */
errSSLRecordOverflow        = -9847,    /* record overflow */
errSSLBadConfiguration      = -9848,    /* configuration error */
errSSLLast                  = -9849     /* end of range, to be deleted */
};

TL;DR 没有网页(现在除了这个)有单词 kCFStreamErrorDomainSSL 和错误编号,甚至没有 Apple 引用页面。

关于ios - 哪里有对 iOS 和 Mac OS X 网络错误(如 kCFStreamErrorDomainSSL)的清晰、完整的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32877755/

相关文章:

ios - 按下 View Controller 时,UINavigationItem 的标题消失

ios - 使用 CGContextAddArcToPoint() 绘制圆弧时,(x1,y1) 和 (x2,y2) 是什么意思?

macos - 如何从聚合 CoreAudio 设备中排除输入或输出 channel ?

ssl - WebSphereMQ 与 HermesJMS

php - 如何允许使用过期证书通过 https 发出 PHP REST 请求

ios - 如何在 swift 2 中获取 Alamofire.request().responseJSON 的结果值?

ios - 在 Swift 中将字符串拆分为数组?

linux - 对 linux/mac 的文件更改运行操作?

macos - 如果我将 Haskell Platform (2013.2.0.0) 与 GHC (7.6.3) 一起使用,是否可以安装 Xcode 5?

javascript - LDAP over TLS 在 Node 中使用 ldap-client