summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--client/src/com/vaadin/client/ApplicationConnection.java16
1 files changed, 14 insertions, 2 deletions
diff --git a/client/src/com/vaadin/client/ApplicationConnection.java b/client/src/com/vaadin/client/ApplicationConnection.java
index 93a2e90c07..375beb9dda 100644
--- a/client/src/com/vaadin/client/ApplicationConnection.java
+++ b/client/src/com/vaadin/client/ApplicationConnection.java
@@ -3287,6 +3287,14 @@ public class ApplicationConnection {
Timer forceHandleMessage = new Timer() {
@Override
public void run() {
+ if (responseHandlingLocks.isEmpty()) {
+ /*
+ * Timer fired but there's nothing to clear. This can happen
+ * with IE8 as Timer.cancel is not always effective (see GWT
+ * issue 8101).
+ */
+ return;
+ }
VConsole.log("WARNING: reponse handling was never resumed, forcibly removing locks...");
responseHandlingLocks.clear();
handlePendingMessages();
@@ -3311,9 +3319,13 @@ public class ApplicationConnection {
public void resumeResponseHandling(Object lock) {
responseHandlingLocks.remove(lock);
if (responseHandlingLocks.isEmpty()) {
- VConsole.log("No more response handling locks, handling pending requests.");
+ // Cancel timer that breaks the lock
forceHandleMessage.cancel();
- handlePendingMessages();
+
+ if (!pendingUIDLMessages.isEmpty()) {
+ VConsole.log("No more response handling locks, handling pending requests.");
+ handlePendingMessages();
+ }
}
}