|
|
@@ -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(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|