Merge "Set a flag that indicates a response is pending."
diff --git a/core/java/android/webkit/SslErrorHandler.java b/core/java/android/webkit/SslErrorHandler.java
index 90ed65d..d99c2c0 100644
--- a/core/java/android/webkit/SslErrorHandler.java
+++ b/core/java/android/webkit/SslErrorHandler.java
@@ -51,6 +51,11 @@
      */
     private Bundle mSslPrefTable;
 
+    /**
+     * Flag indicating that a client reponse is pending.
+     */
+    private boolean mResponsePending;
+
     // Message id for handling the response
     private static final int HANDLE_RESPONSE = 100;
 
@@ -191,6 +196,7 @@
             // if we do not have information on record, ask
             // the user (display a dialog)
             CallbackProxy proxy = loader.getFrame().getCallbackProxy();
+            mResponsePending = true;
             proxy.onReceivedSslError(this, error);
         }
 
@@ -202,7 +208,11 @@
      * Proceed with the SSL certificate.
      */
     public void proceed() {
-        sendMessage(obtainMessage(HANDLE_RESPONSE, 1, 0, mLoaderQueue.poll()));
+        if (mResponsePending) {
+            mResponsePending = false;
+            sendMessage(obtainMessage(HANDLE_RESPONSE, 1, 0,
+                        mLoaderQueue.poll()));
+        }
     }
 
     /**
@@ -210,7 +220,11 @@
      * the error.
      */
     public void cancel() {
-        sendMessage(obtainMessage(HANDLE_RESPONSE, 0, 0, mLoaderQueue.poll()));
+        if (mResponsePending) {
+            mResponsePending = false;
+            sendMessage(obtainMessage(HANDLE_RESPONSE, 0, 0,
+                        mLoaderQueue.poll()));
+        }
     }
 
     /**