diff --git a/GCDWebServer/Core/GCDWebServerConnection.m b/GCDWebServer/Core/GCDWebServerConnection.m index 9ec7df2..d6c369e 100644 --- a/GCDWebServer/Core/GCDWebServerConnection.m +++ b/GCDWebServer/Core/GCDWebServerConnection.m @@ -759,7 +759,7 @@ static inline NSUInteger _ScanHexNumber(const void* bytes, NSUInteger size) { - (void)processRequest:(GCDWebServerRequest*)request completion:(GCDWebServerCompletionBlock)completion { GWS_LOG_DEBUG(@"Connection on socket %i processing request \"%@ %@\" with %lu bytes body", _socket, _virtualHEAD ? @"HEAD" : _request.method, _request.path, (unsigned long)_bytesRead); @try { - _handler.asyncProcessBlock(request, completion); + _handler.asyncProcessBlock(request, [completion copy]); } @catch (NSException* exception) { GWS_LOG_EXCEPTION(exception); diff --git a/GCDWebServer/Core/GCDWebServerResponse.m b/GCDWebServer/Core/GCDWebServerResponse.m index 740e933..8357ab7 100644 --- a/GCDWebServer/Core/GCDWebServerResponse.m +++ b/GCDWebServer/Core/GCDWebServerResponse.m @@ -242,7 +242,7 @@ - (void)performReadDataWithCompletion:(GCDWebServerBodyReaderCompletionBlock)block { if ([_reader respondsToSelector:@selector(asyncReadDataWithCompletion:)]) { - [_reader asyncReadDataWithCompletion:block]; + [_reader asyncReadDataWithCompletion:[block copy]]; } else { NSError* error = nil; NSData* data = [_reader readData:&error];