So I'm still working on my HTTP/2 implementation. I know, I'm crazy. I'm opening an InputStream and OutputStream to the apns site but I'm getting a CFNetwork SSLHandshake failure. I'm not sure where to even start looking for how to handle this. I've opened my connection like so:
Stream.getStreamsToHost(withName: host, port: port, inputStream: &inputStream, outputStream: &outputStream)
super.init()
inputStream!.delegate = self
inputStream!.setProperty(StreamSocketSecurityLevel.tlSv1.rawValue, forKey: .socketSecurityLevelKey)
inputStream!.schedule(in: .main, forMode: .defaultRunLoopMode)
inputStream!.open()
outputStream!.delegate = self
outputStream!.setProperty(StreamSocketSecurityLevel.tlSv1.rawValue, forKey: .socketSecurityLevelKey)
outputStream!.schedule(in: .main, forMode: .defaultRunLoopMode)
outputStream!.open()And then I write the "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" message to the outputStream. I'm using api.development.push.apple.com as the host and 443 as the port.
After a few seconds I get back this:
MessageTracer: load_domain_whitelist_search_tree:73: Search tree file's format version number (0) is not supported
MessageTracer: Falling back to default whitelist
CFNetwork SSLHandshake failed (-9806)
TCP Conn 0x60c000160a80 SSLHandshake failed (-9806)
SocketStream write error [0x60c000160a80]: 3 -9806