Skip to content

Commit 4d38f74

Browse files
committed
Check if handler is running to avoid crashes for timed out requests
1 parent 1733694 commit 4d38f74

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

src/ios/IONAssetHandler.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
@property (nonatomic, strong) NSString * basePath;
77
@property (nonatomic, strong) NSString * scheme;
8+
@property (nonatomic) Boolean isRunning;
89

910
-(void)setAssetPath:(NSString *)assetPath;
1011
- (instancetype)initWithBasePath:(NSString *)basePath andScheme:(NSString *)scheme;

src/ios/IONAssetHandler.m

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ - (instancetype)initWithBasePath:(NSString *)basePath andScheme:(NSString *)sche
1919

2020
- (void)webView:(WKWebView *)webView startURLSchemeTask:(id <WKURLSchemeTask>)urlSchemeTask
2121
{
22+
self.isRunning = true;
2223
Boolean loadFile = true;
2324
NSString * startPath = @"";
2425
NSURL * url = urlSchemeTask.request.URL;
@@ -77,9 +78,12 @@ - (void)webView:(WKWebView *)webView startURLSchemeTask:(id <WKURLSchemeTask>)ur
7778
};
7879
}
7980

80-
[urlSchemeTask didReceiveResponse:response];
81-
[urlSchemeTask didReceiveData:data];
82-
[urlSchemeTask didFinish];
81+
// Do not use urlSchemeTask if it has been closed in stopURLSchemeTask
82+
if(self.isRunning) {
83+
[urlSchemeTask didReceiveResponse:response];
84+
[urlSchemeTask didReceiveData:data];
85+
[urlSchemeTask didFinish];
86+
}
8387
}] resume];
8488
} else {
8589
startPath = self.basePath;
@@ -115,6 +119,7 @@ - (void)webView:(WKWebView *)webView startURLSchemeTask:(id <WKURLSchemeTask>)ur
115119

116120
- (void)webView:(nonnull WKWebView *)webView stopURLSchemeTask:(nonnull id<WKURLSchemeTask>)urlSchemeTask
117121
{
122+
self.isRunning = false;
118123
NSLog(@"stop");
119124
}
120125

0 commit comments

Comments
 (0)