From 97194063036ff05b8a3d049dfcba5778aafd3760 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Latour Date: Mon, 23 Feb 2015 16:02:14 -0800 Subject: [PATCH] Made _CompareResources() easier to read --- GCDWebServer/Core/GCDWebServerConnection.m | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/GCDWebServer/Core/GCDWebServerConnection.m b/GCDWebServer/Core/GCDWebServerConnection.m index d4e3f39..5f6c023 100644 --- a/GCDWebServer/Core/GCDWebServerConnection.m +++ b/GCDWebServer/Core/GCDWebServerConnection.m @@ -764,15 +764,19 @@ static inline NSUInteger _ScanHexNumber(const void* bytes, NSUInteger size) { } } +// http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.25 // http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26 static inline BOOL _CompareResources(NSString* responseETag, NSString* requestETag, NSDate* responseLastModified, NSDate* requestLastModified) { - if ([requestETag isEqualToString:@"*"] && (!responseLastModified || !requestLastModified || ([responseLastModified compare:requestLastModified] != NSOrderedDescending))) { - return YES; - } else { - if ([responseETag isEqualToString:requestETag]) { + if (requestLastModified && responseLastModified) { + if ([responseLastModified compare:requestLastModified] != NSOrderedDescending) { return YES; } - if (responseLastModified && requestLastModified && ([responseLastModified compare:requestLastModified] != NSOrderedDescending)) { + } + if (requestETag && responseETag) { // Per the specs "If-None-Match" must be checked after "If-Modified-Since" + if ([requestETag isEqualToString:@"*"]) { + return YES; + } + if ([responseETag isEqualToString:requestETag]) { return YES; } }