The callbackid is passed to every native call. If you have multiple overlapping native calls you must manage this yourself. In this case you should always use : DispatchCommandResult(plugRes, callbackId);
@purplecabbage risingj.com On Mon, Oct 14, 2013 at 12:04 AM, Ivan Baktsheev <[email protected]> wrote: > Hi everyone! > > I've just found a bug in processing wp callbackId. When I'm trying to > "cordova.exec" my own http client plugin several times, all requests after > the first one fail with a message: "Failed to locate callback for id : > XXXXX" > > After some investigation I've came to conclusion that CommandFactory > returns the same instance for those requests. And this instance of > BaseCommmand stores callbackId into this.CurrentCommandCallbackId. So, if > we have 5 simultaneous requests, only the last callbackId is used. > > For now, I'm using DispatchCommandResult (result, unmodifiedCallbackId) > and everything is working fine. DispatchCommandResult (result) is broken > for simultaneous async plugin calls for the same plugin/method. > > I cannot share code this time, but you can see the log below. > > [107648>599025] HTTPClient.run (1) started > cordova.js exec >>> callbackId is: HTTPClient217411808 > CordovaCommandCall >>> CommandString : > HTTPClient/request/HTTPClient217411808/[" > http://192.168.0.1/api/monitoring/status"] > NativeExecution >>> HTTPClient217411808 > [107648>816581] HTTPClient.run (1) started > cordova.js exec >>> callbackId is: HTTPClient217411809 > CordovaCommandCall >>> CommandString : > HTTPClient/request/HTTPClient217411809/[" > http://192.168.0.1/api/monitoring/traffic-statistics"] > NativeExecution >>> HTTPClient217411809 > [107648>519782] HTTPClient.run (1) started > cordova.js exec >>> callbackId is: HTTPClient217411810 > CordovaCommandCall >>> CommandString : > HTTPClient/request/HTTPClient217411810/[" > http://192.168.0.1/api/device/information"] > NativeExecution >>> HTTPClient217411810 > [107648>994073] HTTPClient.run (1) started > cordova.js exec >>> callbackId is: HTTPClient217411811 > CordovaCommandCall >>> CommandString : > HTTPClient/request/HTTPClient217411811/[" > http://192.168.0.1/api/sms/sms-count"] > NativeExecution >>> HTTPClient217411811 > [107648>516070] HTTPClient.run (1) started > cordova.js exec >>> callbackId is: HTTPClient217411812 > CordovaCommandCall >>> CommandString : > HTTPClient/request/HTTPClient217411812/[" > http://192.168.0.1/api/net/current-plmn"] > NativeExecution >>> HTTPClient217411812 > [019830] workflow complete in 930ms > The thread 0xc94 has exited with code 259 (0x103). > The thread 0xbc8 has exited with code 259 (0x103). > The thread 0xd6c has exited with code 259 (0x103). > The thread 0xa84 has exited with code 259 (0x103). > The thread 0xbb4 has exited with code 259 (0x103). > HTTPClientPlugin >>> stored callbackId: HTTPClient217411808 > HTTPClientPlugin >>> stored callbackId: HTTPClient217411809 > BaseCommand >>> Failed to locate callback for id : HTTPClient217411812 > [107648>516070] HTTPClient.run (4) task completed > [107648>516070] parsePage (1) started > [107648>516070] parsePage (4) task completed > have completed tasks > [107648>516070] workflow complete in 501ms > HTTPClientPlugin >>> stored callbackId: HTTPClient217411811 > BaseCommand >>> Failed to locate callback for id : HTTPClient217411812 > HTTPClientPlugin >>> stored callbackId: HTTPClient217411810 > BaseCommand >>> Failed to locate callback for id : HTTPClient217411812 > HTTPClientPlugin >>> stored callbackId: HTTPClient217411812 > BaseCommand >>> Failed to locate callback for id : HTTPClient217411812
