diff --git a/GCDWebServer/Core/GCDWebServer.m b/GCDWebServer/Core/GCDWebServer.m index e52ccd4..20e0e28 100644 --- a/GCDWebServer/Core/GCDWebServer.m +++ b/GCDWebServer/Core/GCDWebServer.m @@ -206,10 +206,8 @@ static void _ExecuteMainThreadRunLoopSources() { if (_backgroundTask == UIBackgroundTaskInvalid) { GWS_LOG_DEBUG(@"Did start background task"); _backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ - GWS_LOG_WARNING(@"Application is being suspended while %@ is still connected", [self class]); [self _endBackgroundTask]; - }]; } else { GWS_DNOT_REACHED(); @@ -238,7 +236,6 @@ static void _ExecuteMainThreadRunLoopSources() { - (void)willStartConnection:(GCDWebServerConnection*)connection { dispatch_sync(_syncQueue, ^{ - GWS_DCHECK(_activeConnections >= 0); if (_activeConnections == 0) { dispatch_async(dispatch_get_main_queue(), ^{ @@ -253,7 +250,6 @@ static void _ExecuteMainThreadRunLoopSources() { }); } _activeConnections += 1; - }); } @@ -469,7 +465,6 @@ static inline NSString* _EncodeBase64(NSString* string) { dispatch_group_enter(_sourceGroup); dispatch_source_t source = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, listeningSocket, 0, dispatch_get_global_queue(_dispatchQueuePriority, 0)); dispatch_source_set_cancel_handler(source, ^{ - @autoreleasepool { int result = close(listeningSocket); if (result != 0) { @@ -479,10 +474,8 @@ static inline NSString* _EncodeBase64(NSString* string) { } } dispatch_group_leave(_sourceGroup); - }); dispatch_source_set_event_handler(source, ^{ - @autoreleasepool { struct sockaddr_storage remoteSockAddr; socklen_t remoteAddrLen = sizeof(remoteSockAddr); @@ -509,7 +502,6 @@ static inline NSString* _EncodeBase64(NSString* string) { GWS_LOG_ERROR(@"Failed accepting %s socket: %s (%i)", isIPv6 ? "IPv6" : "IPv4", strerror(errno), errno); } } - }); return source; } @@ -877,12 +869,10 @@ static inline NSString* _EncodeBase64(NSString* string) { - (void)addDefaultHandlerForMethod:(NSString*)method requestClass:(Class)aClass asyncProcessBlock:(GCDWebServerAsyncProcessBlock)block { [self addHandlerWithMatchBlock:^GCDWebServerRequest*(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery) { - if (![requestMethod isEqualToString:method]) { return nil; } return [[aClass alloc] initWithMethod:requestMethod url:requestURL headers:requestHeaders path:urlPath query:urlQuery]; - } asyncProcessBlock:block]; } @@ -899,7 +889,6 @@ static inline NSString* _EncodeBase64(NSString* string) { - (void)addHandlerForMethod:(NSString*)method path:(NSString*)path requestClass:(Class)aClass asyncProcessBlock:(GCDWebServerAsyncProcessBlock)block { if ([path hasPrefix:@"/"] && [aClass isSubclassOfClass:[GCDWebServerRequest class]]) { [self addHandlerWithMatchBlock:^GCDWebServerRequest*(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery) { - if (![requestMethod isEqualToString:method]) { return nil; } @@ -907,7 +896,6 @@ static inline NSString* _EncodeBase64(NSString* string) { return nil; } return [[aClass alloc] initWithMethod:requestMethod url:requestURL headers:requestHeaders path:urlPath query:urlQuery]; - } asyncProcessBlock:block]; } else { @@ -928,7 +916,6 @@ static inline NSString* _EncodeBase64(NSString* string) { NSRegularExpression* expression = [NSRegularExpression regularExpressionWithPattern:regex options:NSRegularExpressionCaseInsensitive error:NULL]; if (expression && [aClass isSubclassOfClass:[GCDWebServerRequest class]]) { [self addHandlerWithMatchBlock:^GCDWebServerRequest*(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery) { - if (![requestMethod isEqualToString:method]) { return nil; } @@ -954,7 +941,6 @@ static inline NSString* _EncodeBase64(NSString* string) { GCDWebServerRequest* request = [[aClass alloc] initWithMethod:requestMethod url:requestURL headers:requestHeaders path:urlPath query:urlQuery]; [request setAttribute:captures forKey:GCDWebServerRequestAttribute_RegexCaptures]; return request; - } asyncProcessBlock:block]; } else { @@ -971,11 +957,9 @@ static inline NSString* _EncodeBase64(NSString* string) { path:path requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse*(GCDWebServerRequest* request) { - GCDWebServerResponse* response = [GCDWebServerDataResponse responseWithData:staticData contentType:contentType]; response.cacheControlMaxAge = cacheAge; return response; - }]; } @@ -984,7 +968,6 @@ static inline NSString* _EncodeBase64(NSString* string) { path:path requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse*(GCDWebServerRequest* request) { - GCDWebServerResponse* response = nil; if (allowRangeRequests) { response = [GCDWebServerFileResponse responseWithFile:filePath byteRange:request.byteRange isAttachment:isAttachment]; @@ -994,7 +977,6 @@ static inline NSString* _EncodeBase64(NSString* string) { } response.cacheControlMaxAge = cacheAge; return response; - }]; } @@ -1032,7 +1014,6 @@ static inline NSString* _EncodeBase64(NSString* string) { if ([basePath hasPrefix:@"/"] && [basePath hasSuffix:@"/"]) { GCDWebServer* __unsafe_unretained server = self; [self addHandlerWithMatchBlock:^GCDWebServerRequest*(NSString* requestMethod, NSURL* requestURL, NSDictionary* requestHeaders, NSString* urlPath, NSDictionary* urlQuery) { - if (![requestMethod isEqualToString:@"GET"]) { return nil; } @@ -1040,10 +1021,8 @@ static inline NSString* _EncodeBase64(NSString* string) { return nil; } return [[GCDWebServerRequest alloc] initWithMethod:requestMethod url:requestURL headers:requestHeaders path:urlPath query:urlQuery]; - } processBlock:^GCDWebServerResponse*(GCDWebServerRequest* request) { - GCDWebServerResponse* response = nil; NSString* filePath = [directoryPath stringByAppendingPathComponent:[request.path substringFromIndex:basePath.length]]; NSString* fileType = [[[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:NULL] fileType]; @@ -1072,7 +1051,6 @@ static inline NSString* _EncodeBase64(NSString* string) { response = [GCDWebServerResponse responseWithStatusCode:kGCDWebServerHTTPStatusCode_NotFound]; } return response; - }]; } else { GWS_DNOT_REACHED(); diff --git a/GCDWebServer/Core/GCDWebServerConnection.m b/GCDWebServer/Core/GCDWebServerConnection.m index 1fd56c3..d491fdb 100644 --- a/GCDWebServer/Core/GCDWebServerConnection.m +++ b/GCDWebServer/Core/GCDWebServerConnection.m @@ -196,19 +196,15 @@ NS_ASSUME_NONNULL_END CFHTTPMessageSetHeaderFieldValue(_responseMessage, (__bridge CFStringRef)key, (__bridge CFStringRef)obj); }]; [self writeHeadersWithCompletionBlock:^(BOOL success) { - if (success) { if (hasBody) { [self writeBodyWithCompletionBlock:^(BOOL successInner) { - [_response performClose]; // TODO: There's nothing we can do on failure as headers have already been sent - }]; } } else if (hasBody) { [_response performClose]; } - }]; } else { [self abortRequest:_request withStatusCode:kGCDWebServerHTTPStatusCode_InternalServerError]; @@ -238,7 +234,6 @@ NS_ASSUME_NONNULL_END if (length) { [self readBodyWithRemainingLength:length completionBlock:^(BOOL success) { - NSError* localError = nil; if ([_request performClose:&localError]) { [self _startProcessingRequest]; @@ -246,7 +241,6 @@ NS_ASSUME_NONNULL_END GWS_LOG_ERROR(@"Failed closing request body for socket %i: %@", _socket, error); [self abortRequest:_request withStatusCode:kGCDWebServerHTTPStatusCode_InternalServerError]; } - }]; } else { if ([_request performClose:&error]) { @@ -269,7 +263,6 @@ NS_ASSUME_NONNULL_END NSMutableData* chunkData = [[NSMutableData alloc] initWithData:initialData]; [self readNextBodyChunk:chunkData completionBlock:^(BOOL success) { - NSError* localError = nil; if ([_request performClose:&localError]) { [self _startProcessingRequest]; @@ -277,7 +270,6 @@ NS_ASSUME_NONNULL_END GWS_LOG_ERROR(@"Failed closing request body for socket %i: %@", _socket, error); [self abortRequest:_request withStatusCode:kGCDWebServerHTTPStatusCode_InternalServerError]; } - }]; } @@ -286,7 +278,6 @@ NS_ASSUME_NONNULL_END NSMutableData* headersData = [[NSMutableData alloc] initWithCapacity:kHeadersReadCapacity]; [self readHeaders:headersData withCompletionBlock:^(NSData* extraData) { - if (extraData) { NSString* requestMethod = CFBridgingRelease(CFHTTPMessageCopyRequestMethod(_requestMessage)); // Method verbs are case-sensitive and uppercase if (_server.shouldAutomaticallyMapHEADToGET && [requestMethod isEqualToString:@"HEAD"]) { @@ -324,7 +315,6 @@ NS_ASSUME_NONNULL_END if ([expectHeader caseInsensitiveCompare:@"100-continue"] == NSOrderedSame) { // TODO: Actually validate request before continuing [self writeData:_continueData withCompletionBlock:^(BOOL success) { - if (success) { if (_request.usesChunkedTransferEncoding) { [self _readChunkedBodyWithInitialData:extraData]; @@ -332,7 +322,6 @@ NS_ASSUME_NONNULL_END [self _readBodyWithLength:_request.contentLength initialData:extraData]; } } - }]; } else { GWS_LOG_ERROR(@"Unsupported 'Expect' / 'Content-Length' header combination on socket %i", _socket); @@ -364,7 +353,6 @@ NS_ASSUME_NONNULL_END } else { [self abortRequest:nil withStatusCode:kGCDWebServerHTTPStatusCode_InternalServerError]; } - }]; } @@ -426,7 +414,6 @@ NS_ASSUME_NONNULL_END - (void)readData:(NSMutableData*)data withLength:(NSUInteger)length completionBlock:(ReadDataCompletionBlock)block { dispatch_read(_socket, length, dispatch_get_global_queue(_server.dispatchQueuePriority, 0), ^(dispatch_data_t buffer, int error) { - @autoreleasepool { if (error == 0) { size_t size = dispatch_data_get_size(buffer); @@ -451,7 +438,6 @@ NS_ASSUME_NONNULL_END block(NO); } } - }); } @@ -460,7 +446,6 @@ NS_ASSUME_NONNULL_END [self readData:headersData withLength:NSUIntegerMax completionBlock:^(BOOL success) { - if (success) { NSRange range = [headersData rangeOfData:_CRLFCRLFData options:0 range:NSMakeRange(0, headersData.length)]; if (range.location == NSNotFound) { @@ -482,7 +467,6 @@ NS_ASSUME_NONNULL_END } else { block(nil); } - }]; } @@ -492,7 +476,6 @@ NS_ASSUME_NONNULL_END [self readData:bodyData withLength:length completionBlock:^(BOOL success) { - if (success) { if (bodyData.length <= length) { NSError* error = nil; @@ -515,7 +498,6 @@ NS_ASSUME_NONNULL_END } else { block(NO); } - }]; } @@ -575,13 +557,11 @@ static inline NSUInteger _ScanHexNumber(const void* bytes, NSUInteger size) { [self readData:chunkData withLength:NSUIntegerMax completionBlock:^(BOOL success) { - if (success) { [self readNextBodyChunk:chunkData completionBlock:block]; } else { block(NO); } - }]; } @@ -594,7 +574,6 @@ static inline NSUInteger _ScanHexNumber(const void* bytes, NSUInteger size) { [data self]; // Keeps ARC from releasing data too early }); dispatch_write(_socket, buffer, dispatch_get_global_queue(_server.dispatchQueuePriority, 0), ^(dispatch_data_t remainingData, int error) { - @autoreleasepool { if (error == 0) { GWS_DCHECK(remainingData == NULL); @@ -605,7 +584,6 @@ static inline NSUInteger _ScanHexNumber(const void* bytes, NSUInteger size) { block(NO); } } - }); #if !OS_OBJECT_USE_OBJC_RETAIN_RELEASE dispatch_release(buffer); @@ -622,7 +600,6 @@ static inline NSUInteger _ScanHexNumber(const void* bytes, NSUInteger size) { - (void)writeBodyWithCompletionBlock:(WriteBodyCompletionBlock)block { GWS_DCHECK([_response hasBody]); [_response performReadDataWithCompletion:^(NSData* data, NSError* error) { - if (data) { if (data.length) { if (_response.usesChunkedTransferEncoding) { @@ -647,21 +624,17 @@ static inline NSUInteger _ScanHexNumber(const void* bytes, NSUInteger size) { } [self writeData:data withCompletionBlock:^(BOOL success) { - if (success) { [self writeBodyWithCompletionBlock:block]; } else { block(NO); } - }]; } else { if (_response.usesChunkedTransferEncoding) { [self writeData:_lastChunkData withCompletionBlock:^(BOOL success) { - block(success); - }]; } else { block(YES); @@ -671,7 +644,6 @@ static inline NSUInteger _ScanHexNumber(const void* bytes, NSUInteger size) { GWS_LOG_ERROR(@"Failed reading response body for socket %i: %@", _socket, error); block(NO); } - }]; } diff --git a/GCDWebServer/Core/GCDWebServerFunctions.m b/GCDWebServer/Core/GCDWebServerFunctions.m index 2a1edfc..05db683 100644 --- a/GCDWebServer/Core/GCDWebServerFunctions.m +++ b/GCDWebServer/Core/GCDWebServerFunctions.m @@ -167,7 +167,7 @@ NSString* GCDWebServerDescribeData(NSData* data, NSString* type) { } NSString* GCDWebServerGetMimeTypeForExtension(NSString* extension, NSDictionary* overrides) { - NSDictionary* builtInOverrides = @{ @"css" : @"text/css" }; + NSDictionary* builtInOverrides = @{@"css" : @"text/css"}; NSString* mimeType = nil; extension = [extension lowercaseString]; if (extension.length) { diff --git a/GCDWebServer/Requests/GCDWebServerDataRequest.m b/GCDWebServer/Requests/GCDWebServerDataRequest.m index 3ea9bba..19e7030 100644 --- a/GCDWebServer/Requests/GCDWebServerDataRequest.m +++ b/GCDWebServer/Requests/GCDWebServerDataRequest.m @@ -48,7 +48,7 @@ } if (_data == nil) { if (error) { - *error = [NSError errorWithDomain:kGCDWebServerErrorDomain code:-1 userInfo:@{ NSLocalizedDescriptionKey : @"Failed allocating memory" }]; + *error = [NSError errorWithDomain:kGCDWebServerErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey : @"Failed allocating memory"}]; } return NO; } diff --git a/GCDWebServer/Requests/GCDWebServerMultiPartFormRequest.m b/GCDWebServer/Requests/GCDWebServerMultiPartFormRequest.m index 4e6bf09..1013262 100644 --- a/GCDWebServer/Requests/GCDWebServerMultiPartFormRequest.m +++ b/GCDWebServer/Requests/GCDWebServerMultiPartFormRequest.m @@ -337,7 +337,7 @@ static NSData* _dashNewlineData = nil; _parser = [[GCDWebServerMIMEStreamParser alloc] initWithBoundary:boundary defaultControlName:nil arguments:_arguments files:_files]; if (_parser == nil) { if (error) { - *error = [NSError errorWithDomain:kGCDWebServerErrorDomain code:-1 userInfo:@{ NSLocalizedDescriptionKey : @"Failed starting to parse multipart form data" }]; + *error = [NSError errorWithDomain:kGCDWebServerErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey : @"Failed starting to parse multipart form data"}]; } return NO; } @@ -347,7 +347,7 @@ static NSData* _dashNewlineData = nil; - (BOOL)writeData:(NSData*)data error:(NSError**)error { if (![_parser appendBytes:data.bytes length:data.length]) { if (error) { - *error = [NSError errorWithDomain:kGCDWebServerErrorDomain code:-1 userInfo:@{ NSLocalizedDescriptionKey : @"Failed continuing to parse multipart form data" }]; + *error = [NSError errorWithDomain:kGCDWebServerErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey : @"Failed continuing to parse multipart form data"}]; } return NO; } @@ -359,7 +359,7 @@ static NSData* _dashNewlineData = nil; _parser = nil; if (!atEnd) { if (error) { - *error = [NSError errorWithDomain:kGCDWebServerErrorDomain code:-1 userInfo:@{ NSLocalizedDescriptionKey : @"Failed finishing to parse multipart form data" }]; + *error = [NSError errorWithDomain:kGCDWebServerErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey : @"Failed finishing to parse multipart form data"}]; } return NO; } diff --git a/GCDWebServer/Responses/GCDWebServerStreamedResponse.m b/GCDWebServer/Responses/GCDWebServerStreamedResponse.m index 9387263..7889b92 100644 --- a/GCDWebServer/Responses/GCDWebServerStreamedResponse.m +++ b/GCDWebServer/Responses/GCDWebServerStreamedResponse.m @@ -48,11 +48,9 @@ - (instancetype)initWithContentType:(NSString*)type streamBlock:(GCDWebServerStreamBlock)block { return [self initWithContentType:type asyncStreamBlock:^(GCDWebServerBodyReaderCompletionBlock completionBlock) { - NSError* error = nil; NSData* data = block(&error); completionBlock(data, error); - }]; } diff --git a/GCDWebUploader/GCDWebUploader.m b/GCDWebUploader/GCDWebUploader.m index cd27cd6..6e9ed98 100644 --- a/GCDWebUploader/GCDWebUploader.m +++ b/GCDWebUploader/GCDWebUploader.m @@ -135,7 +135,6 @@ NS_ASSUME_NONNULL_END @"epilogue" : epilogue, @"footer" : footer }]; - }]; // File listing diff --git a/Mac/main.m b/Mac/main.m index 780f5da..4eb0cad 100644 --- a/Mac/main.m +++ b/Mac/main.m @@ -219,9 +219,7 @@ int main(int argc, const char* argv[]) { [webServer addDefaultHandlerForMethod:@"GET" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse*(GCDWebServerRequest* request) { - return [GCDWebServerDataResponse responseWithHTML:@"
Hello World
"]; - }]; break; } @@ -234,7 +232,6 @@ int main(int argc, const char* argv[]) { path:@"/" requestClass:[GCDWebServerRequest class] processBlock:^GCDWebServerResponse*(GCDWebServerRequest* request) { - NSString* html = @" \ \