react-native-ping
react-native-ping copied to clipboard
Fatal issue when handler
On the following piece of code
[ping startPingingWithBlock:^(GBPingSummary *summary) { if (!ping) { return; } resolve(@(@(summary.rtt * 1000).intValue)); [ping stop]; ping = nil; } fail:^(NSError *_Nonnull error) { if (!ping) { return; } reject(@(error.code).stringValue,error.domain,error); [ping stop]; ping = nil; }];
there is a flaw: there is no guarantee the resolve (or reject) call will be finished before the second ping arrive, which would result on a fatal issue as those handlers can only be called once
those handlers should either :
- be call asynchronously,
- be called after [ping stop]
for those encountering the issue before it is corrected, you can handle the ping answer in js using a setTimeout(() => { // do your stuff} , 0)
I think im stuck on this. Trying to ping multiple in a promise all array cause memory leak, but Im not sure where to put the setTimeout your refer to?
This is really a fatal problem, I want to fix this in the next release
Hi @jeromediaz @RoJoHub , I'm getting same fatal error.App is crashing after some time in production due to GBPing.listonce. Is is fixed or still pending ?