In the startLoading
method of my URLProtocol
subclass, I create a URLSession
and URLSessionStreamTask
. I resume
the task and add a BlockOperation
to call my first transaction method. That method uses URLSessionStreamTask.write
. If I don't get an error, another BlockOperation
is placed with my second transaction method. That method uses URLSessionStreamTask.read
and it always times out.
The error looked like:
Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSUnderlyingError=0x10945dff0 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, NSErrorFailingURLStringKey=gopher://www.floodgap.com:80/GET%20/, NSErrorFailingURLKey=gopher://www.floodgap.com:80/GET%20/, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=The request timed out.}
Can a stream-task only be used for one I/O call? Or only just writing or just reading? Or is there some mode-switch function I forgot to call between the write and read? Could there be another problem?