I am looking for a way to add a timeout to a CFHTTP request. It seems like there should be a feature of the CFHTTPMessage
or the CFReadStream
object, but I can't find it. Do I have to roll my own timer on the run loop or something? (if so, any code for this?)
Thanks!
My answer is outdated but I can't delete the accepted answer.
Try this, readStream is your CFReadStreamRef:
#define _kCFStreamPropertyReadTimeout CFSTR("_kCFStreamPropertyReadTimeout")
double to = 15; // 15s timeout
CFNumberRef num = CFNumberCreate(kCFAllocatorDefault, kCFNumberDoubleType, &to);
CFReadStreamSetProperty(readStream, _kCFStreamPropertyReadTimeout, num);
CFRelease(num);
Constant for write timeout is _kCFStreamPropertyWriteTimeout