commit: 0dd04a60bf19738302702e81e53ed896484f24cb
parent f539edf6f68be78e7be36a94f5020a6193f58867
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date: Sun, 3 Oct 2021 09:45:30 +0200
Fallback to libsoup2 for systems with glib-2.0 <2.66.0
This is the case on Ubuntu 20.04 for example.
Diffstat:
2 files changed, 55 insertions(+), 1 deletion(-)
diff --git a/badwolf.c b/badwolf.c
@@ -440,7 +440,11 @@ WebViewCb_load_failed_with_tls_errors(WebKitWebView *web_view,
gchar *error_details = detail_tls_certificate_flags(errors);
gint dialog_response;
+#ifndef USE_LIBSOUP2
GUri *failing_uri = g_uri_parse(failing_text, G_URI_FLAGS_NONE, NULL);
+#else
+ SoupURI *failing_uri = soup_uri_new(failing_text);
+#endif
GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(browser->window->main_window),
GTK_DIALOG_MODAL & GTK_DIALOG_DESTROY_WITH_PARENT,
@@ -461,12 +465,21 @@ WebViewCb_load_failed_with_tls_errors(WebKitWebView *web_view,
if(dialog_response == 1)
{
+#ifndef USE_LIBSOUP2
webkit_web_context_allow_tls_certificate_for_host(
webkit_web_view_get_context(browser->webView), certificate, g_uri_get_host(failing_uri));
+#else
+ webkit_web_context_allow_tls_certificate_for_host(
+ webkit_web_view_get_context(browser->webView), certificate, failing_uri->host);
+#endif
webkit_web_view_reload(browser->webView);
}
+#ifndef USE_LIBSOUP2
g_free(failing_uri);
+#else
+ soup_uri_free(failing_uri);
+#endif
g_free(error_details);
gtk_widget_destroy(dialog);
diff --git a/configure b/configure
@@ -69,7 +69,7 @@ case "${WITH_WEBKITGTK}n" in
DEPS="${DEPS} webkit2gtk-4.0"
;;
n)
- echo "warning: Packagers should specify the ABI version (4.0 or 4.1) in WITH_WEBKITGTK" >&2
+ echo "notice: Packagers should consider setting the ABI version (4.0 or 4.1) in WITH_WEBKITGTK" >&2
if pkg_config_check --atleast-version=2.32.0 webkit2gtk-4.1
then
DEPS="${DEPS} webkit2gtk-4.1"
@@ -84,6 +84,47 @@ case "${WITH_WEBKITGTK}n" in
;;
esac
+case "${WITH_URI_PARSER}n" in
+ gurin)
+ echo "URI parser selected: GUri from glib-2.0"
+ pkg_config_check --atleast-version=2.66.0 glib-2.0 || exit 1
+ DEPS="${DEPS} glib-2.0"
+ ;;
+ libsoup2n)
+ echo "URI parser selected: libsoup-2.4"
+ pkg_config_check libsoup-2.4 || exit 1
+ DEPS="${DEPS} libsoup-2.4"
+ CFLAGS="${CFLAGS} -DUSE_LIBSOUP2"
+
+ if echo "${DEPS}" | grep -q 'webkit2gtk-4.1'
+ then
+ echo 'warning: libsoup2 selected while WebKitGTK with libsoup3 API is used' >&2
+ fi
+ ;;
+ n)
+ echo "notice: Packagers should consider setting the URI parsing library (guri or libsoup2) in WITH_URI_PARSER" >&2
+
+ if pkg_config_check --atleast-version=2.66.0 glib-2.0
+ then
+ echo "URI parser selected: GUri from glib-2.0"
+ DEPS="${DEPS} glib-2.0"
+ else
+ pkg_config_check libsoup-2.4 || exit 1
+ echo "URI parser selected: libsoup-2.4"
+ DEPS="${DEPS} libsoup-2.4"
+ CFLAGS="${CFLAGS} -DUSE_LIBSOUP2"
+
+ if echo "${DEPS}" | grep -q 'webkit2gtk-4.1'
+ then
+ echo 'warning: libsoup2 selected while WebKitGTK with libsoup3 API is used' >&2
+ fi
+ fi
+ ;;
+ *)
+ echo "error: invalid uri provider in WITH_URI_PARSER environment variable, must be guri or libsoup2" >&2
+ ;;
+esac
+
get_cflags() { "${PKGCONFIG}" --cflags "${DEPS}"; }
DEPS_cflags="$(get_cflags)"
get_libs() { "${PKGCONFIG}" --libs "${DEPS}"; }