diff --git a/src/ghtml-webkit.c b/src/ghtml-webkit.c
index 2518595..317554a 100644
--- a/src/ghtml-webkit.c
+++ b/src/ghtml-webkit.c
@@ -356,16 +356,19 @@ static gboolean _on_load_error(WebKitWebView * view, WebKitWebFrame * frame,
Surfer * surfer;
surfer = g_object_get_data(G_OBJECT(data), "surfer");
- if(error != NULL && error->message != NULL)
+ if(error == NULL)
+ return surfer_error(surfer, "Unknown error", TRUE);
+ if(error->domain == WEBKIT_NETWORK_ERROR
+ && error->code == WEBKIT_NETWORK_ERROR_CANCELLED)
+ return TRUE; /* ignored if the user cancelled it */
+ if(error->domain == WEBKIT_POLICY_ERROR
+ && error->code == WEBKIT_POLICY_ERROR_FRAME_LOAD_INTERRUPTED_BY_POLICY_CHANGE)
{
- /* ignore if the user cancelled it */
- if(error->domain == WEBKIT_NETWORK_ERROR
- && error->code
- == WEBKIT_NETWORK_ERROR_CANCELLED)
- return TRUE;
- surfer_error(surfer, error->message, 0);
+ /* FIXME propose to download or cancel instead */
+ surfer_download(surfer, uri, NULL);
+ return TRUE;
}
- return TRUE;
+ return surfer_error(surfer, error->message, TRUE);
}
diff --git a/src/surfer.c b/src/surfer.c
index 8b782a5..64c7a2b 100644
--- a/src/surfer.c
+++ b/src/surfer.c
@@ -489,7 +489,7 @@ int surfer_error(Surfer * surfer, char const * message, int ret)
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", "Error");
gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog),
- "%s", message);
+ "%s", (message != NULL) ? message : "Unknown error");
gtk_window_set_title(GTK_WINDOW(dialog), "Error");
g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(
gtk_widget_destroy), NULL);