Thanks for the replies everyone,

to answer some of the questions:

> On Oct 18, 2017, at 3:53 AM, Quinn The Eskimo! <eski...@apple.com> wrote:
> 
> Some questions / suggestions for moving this forward:
> 
> * Do you have any NSURLProtocol subclasses in play here?

No other custom URL protocols involved

> 
> * Are you sure that the crash is because you got an NSURLResponse?  If you 
> have some other problem you could get a similar looking crash.  In 
> Objective-C I typically write this:
> 
>    NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse *) response;
>    assert([httpResponse isKindOfClass:[NSHTTPURLResponse class]);
> 
> so I’d trap this error immediately.
> 
> * You could add a trap like this:
> 
>    assert([response.URL.scheme isEqual:@"http"]);

I put both asserts in, with the 'https' check first, and it always caught on 
the class check.

> 
> * You might want to enable a CFNetwork diagnostic log, per QA1887.  If you 
> can reproduce the crash with that logging enabled, it might reveal something 
> interesting.
> 
> <https://developer.apple.com/library/content/qa/qa1887/_index.html>
> 

This was helpful.

The diagnostic showed that it was returning a cached response, so I looked 
further into my code that adds to the cache.

In order to avoid hitting our server for future GETs, I use a custom 
NSURLCache, that is also set to be used on the URL session's configuration; 
when I push new data up to our server, I pre-cache the data to that URL cache 
by creating a NSCachedURLResponse along with some additional metadata for 
housekeeping purposes.

I think the problem was in the order I was adding the cached response relative 
to the session request - the cached response would get added soon after the 
session task was initiated, but before its completion block was called, which 
seemed to make the session pick up that cached response at some point. Moving 
the caching step to within the completion block solved the issue in my case.
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Macnetworkprog mailing list      (Macnetworkprog@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/macnetworkprog/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to