Updated Branches: refs/heads/master 451688a12 -> 0baf104a7
Fix a deadlock in CallbackServer.java. -Manifested when running mobile spec. Was caused by CallbackServer obtaining lock #1 then #2, while other thread obtained #2 then #1. Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/commit/0baf104a Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/tree/0baf104a Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/diff/0baf104a Branch: refs/heads/master Commit: 0baf104a751240ac085c6e2a6eb46a1355256fea Parents: 302d51c Author: Andrew Grieve <agri...@chromium.org> Authored: Tue Sep 18 13:51:31 2012 -0400 Committer: Andrew Grieve <agri...@chromium.org> Committed: Tue Sep 18 13:51:31 2012 -0400 ---------------------------------------------------------------------- .../src/org/apache/cordova/CallbackServer.java | 16 +++++++------- 1 files changed, 8 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cordova-android/blob/0baf104a/framework/src/org/apache/cordova/CallbackServer.java ---------------------------------------------------------------------- diff --git a/framework/src/org/apache/cordova/CallbackServer.java b/framework/src/org/apache/cordova/CallbackServer.java index 0b8383c..dcf3b6e 100755 --- a/framework/src/org/apache/cordova/CallbackServer.java +++ b/framework/src/org/apache/cordova/CallbackServer.java @@ -211,14 +211,14 @@ public class CallbackServer implements Runnable { // Wait until there is some data to send, or send empty data every 10 sec // to prevent XHR timeout on the client - synchronized (this) { - while (this.active) { - if (jsMessageQueue != null) { - payload = jsMessageQueue.popAndEncode(); - if (payload != null) { - break; - } - } + while (this.active) { + if (jsMessageQueue != null) { + payload = jsMessageQueue.popAndEncode(); + if (payload != null) { + break; + } + } + synchronized (this) { try { this.wait(10000); // prevent timeout from happening //Log.d(LOG_TAG, "CallbackServer>>> break <<<");