summaryrefslogtreecommitdiff
path: root/desktop/browser_window.c
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/browser_window.c')
-rw-r--r--desktop/browser_window.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/desktop/browser_window.c b/desktop/browser_window.c
index 59ab73db8..bdf48b30e 100644
--- a/desktop/browser_window.c
+++ b/desktop/browser_window.c
@@ -3590,17 +3590,28 @@ navigate_internal_query_ssl(struct browser_window *bw,
struct browser_fetch_parameters *params)
{
bool is_proceed = false, is_back = false;
+ const char *siteurl = NULL;
+ nsurl *siteurl_ns;
assert(params->post_multipart != NULL);
is_proceed = fetch_multipart_data_find(params->post_multipart, "proceed") != NULL;
is_back = fetch_multipart_data_find(params->post_multipart, "back") != NULL;
+ siteurl = fetch_multipart_data_find(params->post_multipart, "siteurl");
- if (!(is_proceed || is_back)) {
+ if (!(is_proceed || is_back) || siteurl == NULL) {
/* This is a request, so pass it on */
return navigate_internal_real(bw, params);
}
+ if (nsurl_create(siteurl, &siteurl_ns) != NSERROR_OK) {
+ NSLOG(netsurf, ERROR, "Unable to reset ssl loading parameters");
+ } else {
+ /* In order that we may proceed, replace the loading parameters */
+ nsurl_unref(bw->loading_parameters.url);
+ bw->loading_parameters.url = siteurl_ns;
+ }
+
return browser_window__handle_ssl_query_response(is_proceed, bw);
}
@@ -4693,7 +4704,7 @@ browser_window_page_info_state browser_window_get_page_info_state(
lwc_string_unref(scheme);
/* Did we have to override this SSL setting? */
- if (urldb_get_cert_permissions(bw->current_parameters.url)) {
+ if (urldb_get_cert_permissions(hlcache_handle_get_url(bw->current_content))) {
return PAGE_STATE_SECURE_OVERRIDE;
}