Skip to content

Commit acf7dd0

Browse files
author
Harry Eakins
committed
Synchronize access to the completionBlock dict
1 parent 7cc6d3c commit acf7dd0

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

ios/RCTHttpServer.m

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ - (void)initResponseReceivedFor:(WGCDWebServer *)server forType:(NSString*)type
3333
int r = arc4random_uniform(1000000);
3434
NSString *requestId = [NSString stringWithFormat:@"%lld:%d", milliseconds, r];
3535

36-
[_completionBlocks setObject:completionBlock forKey:requestId];
36+
@synchronized (self) {
37+
[_completionBlocks setObject:completionBlock forKey:requestId];
38+
}
3739

3840
@try {
3941
if ([WGCDWebServerTruncateHeaderValue(request.contentType) isEqualToString:@"application/json"]) {
@@ -96,11 +98,13 @@ - (void)initResponseReceivedFor:(WGCDWebServer *)server forType:(NSString*)type
9698
WGCDWebServerDataResponse* requestResponse = [[WGCDWebServerDataResponse alloc] initWithData:data contentType:type];
9799
requestResponse.statusCode = code;
98100

99-
WGCDWebServerCompletionBlock completionBlock = [_completionBlocks objectForKey:requestId];
100-
101-
completionBlock(requestResponse);
101+
WGCDWebServerCompletionBlock completionBlock = nil;
102+
@synchronized (self) {
103+
completionBlock = [_completionBlocks objectForKey:requestId];
104+
[_completionBlocks removeObjectForKey:requestId];
105+
}
102106

103-
[_completionBlocks removeObjectForKey:requestId];
107+
completionBlock(requestResponse);
104108
}
105109

106110
@end

0 commit comments

Comments
 (0)