From 17917b800cf760a76516701bbe1cb548738d89be Mon Sep 17 00:00:00 2001 From: Diane Trout Date: Sun, 12 Jun 2016 11:24:12 -0700 Subject: soup_session_async_new is deprecated (Closes: #96383) * Replace with new call soup_session_new (); * Indicate minimum libsoup version https://bugs.freedesktop.org/show_bug.cgi?id=96383 Reviewed-by: George Kiagiadakis --- configure.ac | 2 +- wocky/wocky-google-relay.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index d97dff7..4e103ca 100644 --- a/configure.ac +++ b/configure.ac @@ -259,7 +259,7 @@ if test x$enable_google_relay = xyes; then AC_DEFINE(ENABLE_GOOGLE_RELAY, [], [Enable Google Jingle relay support]) dnl Check for libsoup - PKG_CHECK_MODULES(SOUP, libsoup-2.4) + PKG_CHECK_MODULES(SOUP, libsoup-2.4 >= 2.42) fi AM_CONDITIONAL([ENABLE_GOOGLE_RELAY], [test "x$enable_google_relay" = xyes]) diff --git a/wocky/wocky-google-relay.c b/wocky/wocky-google-relay.c index 589820a..a6a6b42 100644 --- a/wocky/wocky-google-relay.c +++ b/wocky/wocky-google-relay.c @@ -243,7 +243,7 @@ wocky_google_relay_resolver_new (void) #ifdef ENABLE_GOOGLE_RELAY - resolver->soup = soup_session_async_new (); + resolver->soup = soup_session_new (); /* If we don't get answer in a few seconds, relay won't do * us much help anyways. */ -- cgit v1.2.3 From 1a4aed49fe7fb605b55b81de1f107df8d165f6b1 Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Sun, 3 Jul 2016 18:28:42 +0300 Subject: wocky-tls: replace deprecated gnutls type with its modern version It looks like gnutls has just renamed their struct types to have a _t at the end of their name --- wocky/wocky-tls.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wocky/wocky-tls.c b/wocky/wocky-tls.c index c517a3f..0fb1264 100644 --- a/wocky/wocky-tls.c +++ b/wocky/wocky-tls.c @@ -223,7 +223,7 @@ struct _WockyTLSSession gnutls_session_t session; - gnutls_certificate_credentials gnutls_cert_cred; + gnutls_certificate_credentials_t gnutls_cert_cred; }; typedef struct -- cgit v1.2.3 From 6ff15f8faac973ba36150b8b1d1fccfca2852207 Mon Sep 17 00:00:00 2001 From: Diane Trout Date: Sat, 9 Jan 2016 22:54:39 -0800 Subject: Rename a test to avoid a duplicate test error message Reviewed-by: George Kiagiadakis --- tests/wocky-porter-test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/wocky-porter-test.c b/tests/wocky-porter-test.c index d36bc00..fa9a9a8 100644 --- a/tests/wocky-porter-test.c +++ b/tests/wocky-porter-test.c @@ -3545,7 +3545,7 @@ main (int argc, char **argv) g_test_add_func ("/xmpp-porter/unregister-handler", test_unregister_handler); g_test_add_func ("/xmpp-porter/handler-bare-jid", test_handler_bare_jid); - g_test_add_func ("/xmpp-porter/handler-bare-jid", test_handler_full_jid); + g_test_add_func ("/xmpp-porter/handler-full-jid", test_handler_full_jid); g_test_add_func ("/xmpp-porter/handler-stanza", test_handler_stanza); g_test_add_func ("/xmpp-porter/cancel-sent-stanza", test_cancel_sent_stanza); -- cgit v1.2.3 From 8708bcf3689ba3066fd4863636d038f6bc8d9eea Mon Sep 17 00:00:00 2001 From: Diane Trout Date: Thu, 24 Dec 2015 16:24:33 -0800 Subject: Update CRL for 5 years (Closes: #79548) * Add hints about what the test failure looks like * Update the example crl update command line. * Instead of having two copies of the CRL, replace one with a symlink. This way when one is updated, both are updated. https://bugs.freedesktop.org/show_bug.cgi?id=79548 Reviewed-by: George Kiagiadakis --- tests/certs/ca-0-crl.cfg | 14 ++++++++++++++ tests/certs/ca-0-crl.pem | 21 +++++++++++---------- tests/certs/crl/ca-0-crl.pem | 14 +------------- 3 files changed, 26 insertions(+), 23 deletions(-) mode change 100644 => 120000 tests/certs/crl/ca-0-crl.pem diff --git a/tests/certs/ca-0-crl.cfg b/tests/certs/ca-0-crl.cfg index bc9ed25..db1cde0 100644 --- a/tests/certs/ca-0-crl.cfg +++ b/tests/certs/ca-0-crl.cfg @@ -1,3 +1,15 @@ +# Update crl with certtool from gnutls-bin: +# certtool --generate-crl \ +# --load-ca-privkey ca-0-key.pem \ +# --load-ca-certificate ca-0-cert.pem \ +# --load-certificate rev-cert.pem \ +# --template ca-0-crl.cfg \ +# --outfile=ca-0-crl.pem +# +# When expired the test ssl tests fail with the error: +# assertion failed (error == (wocky_auth_error, 6)): \ +# SSL Certificate Verification Error for weasel-juice.org (wocky-tls-cert-error, 12) +# # X.509 Certificate options # # DN options @@ -87,3 +99,5 @@ crl_signing_key # Whether this key will be used for time stamping. #time_stamping_key +crl_next_update=1825 + diff --git a/tests/certs/ca-0-crl.pem b/tests/certs/ca-0-crl.pem index 80f47ba..2867f95 100644 --- a/tests/certs/ca-0-crl.pem +++ b/tests/certs/ca-0-crl.pem @@ -1,13 +1,14 @@ -----BEGIN X509 CRL----- -MIIB/DCB5QIBATANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQGEwJVSzESMBAGA1UE +MIICDTCB9gIBATANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQGEwJVSzESMBAGA1UE ChMJQ29sbGFib3JhMRkwFwYDVQQLExBXb2NreSBUZXN0IFN1aXRlMREwDwYDVQQI -EwhDb25mdXNlZDEbMBkGA1UEAxMSV29ja3kgWE1QUCBMaWJyYXJ5Fw0xMjA1MTAx -NjQzNTBaFw0xMzA1MTAxNjQzNTBaMBQwEgIBCxcNMTIwNTEwMTY0MzUwWqAvMC0w -HwYDVR0jBBgwFoAUSTAmCIya1mnNi8DMDlwCjkofpowwCgYDVR0UBAMCAQAwDQYJ -KoZIhvcNAQELBQADggEBACFaj/M6g+fP0RQEiB7kvoocdM7XGUemkl9Ns/chc9zH -yLgq1891jIO5GoKoCuMGEFfYat/VZutNOLFHkJ0AeqrvOSPVZ8atcZTJR/lgjR6I -PN/UMFpHMEVa7cUtLPx47UvGDolrOo1d4ciLVUUPoZMRGxTitVz8KtEk+O9s6NjS -W25uTGoNT58OQS51dXq4N97gNMSeggWGN1Y9swv0s992G/Y93t/uQvsRsSEMe7kj -ddChE3Gb4I+7TkjL+e64RlYsAtvMePM3k3+Zk95wFGWqlwRow46Nv3F02C8Af5JV -zp+tsq2foM0lIADnOTjUs2XgNGqx0Gm/hTAfBMsIgkM= +EwhDb25mdXNlZDEbMBkGA1UEAxMSV29ja3kgWE1QUCBMaWJyYXJ5GA8yMDE2MDEx +MjA1NDYzN1oYDzIwMTcwMTExMDU0NjM3WjAWMBQCAQsYDzIwMTYwMTEyMDU0NjM3 +WqA6MDgwHwYDVR0jBBgwFoAUSTAmCIya1mnNi8DMDlwCjkofpowwFQYDVR0UBA4C +DFaUkz0c3DJPdC61CDANBgkqhkiG9w0BAQsFAAOCAQEAJ2KNH3iBLUtgbDHPAc55 +b2O0UG2Mrqpza1PfeFil1yNbBkTL00HbvqZ2mnY0m+tS//nIlz27n3xPgl/6f5TK +HVwTXSluAumQPVbUQyZlTTBT1B4yvwQvd5D9m3I8p2Rk4BA5hDdBKDD+jdnPrELI +FPjPMJiFY9yPRHglkBF3N1Y+7HUPugDGMiwrU8nDpAeZY/W/zz3FWKgzUORWuH3V +XEvK0I5vtT5Ms2gbmPat0Clv8Hl6BQh2oD5L+82EQOe/xuloDg5fZYLCJbJgeSIG +ONkVQ3P2k0uHsSN676MJ844N8bfyij9OpcWzK2EiKV7kb+PYtQprMR6EOy1zOG3/ +Pg== -----END X509 CRL----- diff --git a/tests/certs/crl/ca-0-crl.pem b/tests/certs/crl/ca-0-crl.pem deleted file mode 100644 index 80f47ba..0000000 --- a/tests/certs/crl/ca-0-crl.pem +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN X509 CRL----- -MIIB/DCB5QIBATANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQGEwJVSzESMBAGA1UE -ChMJQ29sbGFib3JhMRkwFwYDVQQLExBXb2NreSBUZXN0IFN1aXRlMREwDwYDVQQI -EwhDb25mdXNlZDEbMBkGA1UEAxMSV29ja3kgWE1QUCBMaWJyYXJ5Fw0xMjA1MTAx -NjQzNTBaFw0xMzA1MTAxNjQzNTBaMBQwEgIBCxcNMTIwNTEwMTY0MzUwWqAvMC0w -HwYDVR0jBBgwFoAUSTAmCIya1mnNi8DMDlwCjkofpowwCgYDVR0UBAMCAQAwDQYJ -KoZIhvcNAQELBQADggEBACFaj/M6g+fP0RQEiB7kvoocdM7XGUemkl9Ns/chc9zH -yLgq1891jIO5GoKoCuMGEFfYat/VZutNOLFHkJ0AeqrvOSPVZ8atcZTJR/lgjR6I -PN/UMFpHMEVa7cUtLPx47UvGDolrOo1d4ciLVUUPoZMRGxTitVz8KtEk+O9s6NjS -W25uTGoNT58OQS51dXq4N97gNMSeggWGN1Y9swv0s992G/Y93t/uQvsRsSEMe7kj -ddChE3Gb4I+7TkjL+e64RlYsAtvMePM3k3+Zk95wFGWqlwRow46Nv3F02C8Af5JV -zp+tsq2foM0lIADnOTjUs2XgNGqx0Gm/hTAfBMsIgkM= ------END X509 CRL----- diff --git a/tests/certs/crl/ca-0-crl.pem b/tests/certs/crl/ca-0-crl.pem new file mode 120000 index 0000000..2138c26 --- /dev/null +++ b/tests/certs/crl/ca-0-crl.pem @@ -0,0 +1 @@ +../ca-0-crl.pem \ No newline at end of file -- cgit v1.2.3 From d54cde71584efcaf29dc76dff9125830929f5ad3 Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Sun, 3 Jul 2016 21:20:56 +0300 Subject: Remove wocky-http-proxy, upstreamed in GIO now The wocky http proxy has now moved in GIO, so we no longer need to maintain it here. I have kept the unit test for the moment, to verify that the code in gio works the same as the one that we used to ship in wocky. There was one difference in the code from GIO, though. It includes "Basic" as part of the authorization string. According to RFC this is correct, so it looks like the wocky proxy client code was doing this wrong. I have updated the test to reflect that. Additionally, this commit removes support for building GIO proxy support depending on whether GIO is recent enough or not. We can now safely depend unconditionally on a recent enough version. https://bugs.freedesktop.org/show_bug.cgi?id=94031 Reviewed-by: Diane Trout --- configure.ac | 8 - docs/reference/wocky-docs.sgml | 1 - tests/Makefile.am | 5 +- tests/wocky-http-proxy-test.c | 15 +- wocky/Makefile.am | 10 - wocky/wocky-connector.c | 58 +++--- wocky/wocky-http-proxy.c | 430 ----------------------------------------- wocky/wocky-http-proxy.h | 46 ----- 8 files changed, 28 insertions(+), 545 deletions(-) delete mode 100644 wocky/wocky-http-proxy.c delete mode 100644 wocky/wocky-http-proxy.h diff --git a/configure.ac b/configure.ac index 4e103ca..0e99203 100644 --- a/configure.ac +++ b/configure.ac @@ -127,14 +127,6 @@ AC_DEFINE([GLIB_VERSION_MAX_ALLOWED], [GLIB_VERSION_2_32], [Prevent post 2.32 AP AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS) -dnl Check GIO proxy support -PKG_CHECK_EXISTS([gio-2.0 >= 2.25.15], - [HAVE_GIO_PROXY=yes - AC_DEFINE(HAVE_GIO_PROXY, [1], [Defined if GIO supports proxy])], - [HAVE_GIO_PROXY=no]) -AM_CONDITIONAL(HAVE_GIO_PROXY, [test "x${HAVE_GIO_PROXY}" = "xyes"]) - - dnl Choose an SSL/TLS backend (default gnutls) AC_ARG_WITH([tls], AC_HELP_STRING([--with-tls=BACKEND], diff --git a/docs/reference/wocky-docs.sgml b/docs/reference/wocky-docs.sgml index 922e096..69daa83 100644 --- a/docs/reference/wocky-docs.sgml +++ b/docs/reference/wocky-docs.sgml @@ -26,7 +26,6 @@ - diff --git a/tests/Makefile.am b/tests/Makefile.am index 03fd6fb..f371007 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -71,6 +71,7 @@ TEST_PROGS = \ wocky-xmpp-node-test \ wocky-xmpp-reader-test \ wocky-xmpp-readwrite-test \ + wocky-http-proxy-test \ $(NULL) noinst_PROGRAMS = @@ -80,10 +81,6 @@ if HAVE_LIBSASL2 noinst_PROGRAMS += wocky-dummy-xmpp-server endif -if HAVE_GIO_PROXY - TEST_PROGS += wocky-http-proxy-test -endif - wocky_bare_contact_test_SOURCES = \ wocky-test-helper.c wocky-test-helper.h \ wocky-test-stream.c wocky-test-stream.h \ diff --git a/tests/wocky-http-proxy-test.c b/tests/wocky-http-proxy-test.c index ce9a854..24de3c5 100644 --- a/tests/wocky-http-proxy-test.c +++ b/tests/wocky-http-proxy-test.c @@ -9,13 +9,6 @@ #include -/* WockyHttpProxy isn't public API, so we need to be a bit sneaky to get the - * header. - */ -#define WOCKY_COMPILATION -#include -#undef WOCKY_COMPILATION - typedef enum { DOMAIN_NONE = 0, @@ -164,7 +157,6 @@ test_http_proxy_instantiation (void) proxy = g_proxy_get_default_for_protocol ("http"); g_assert (G_IS_PROXY (proxy)); - g_assert (WOCKY_IS_HTTP_PROXY (proxy)); g_object_unref (proxy); } @@ -226,6 +218,11 @@ server_thread (gpointer user_data) while (*received_cred == ' ') received_cred++; + g_assert (str_has_prefix_case (received_cred, "Basic")); + received_cred += 5; + while (*received_cred == ' ') + received_cred++; + g_assert_cmpstr (base64_cred, ==, received_cred); g_free (base64_cred); } @@ -377,8 +374,6 @@ int main (int argc, test_init (argc, argv); - _wocky_http_proxy_get_type (); - g_test_add_func ("/http-proxy/instantiation", test_http_proxy_instantiation); diff --git a/wocky/Makefile.am b/wocky/Makefile.am index 1917a58..9871311 100644 --- a/wocky/Makefile.am +++ b/wocky/Makefile.am @@ -46,10 +46,6 @@ OPENSSL_SRC = \ GNUTLS_SRC = wocky-tls.c -PROXY_SRC = \ - wocky-http-proxy.h \ - wocky-http-proxy.c - handwritten_headers = \ wocky.h \ wocky-auth-handler.h \ @@ -189,12 +185,6 @@ else EXTRA_DIST += $(OPENSSL_SRC) endif -if HAVE_GIO_PROXY - handwritten_sources += $(PROXY_SRC) -else - EXTRA_DIST += $(PROXY_SRC) -endif - libwocky_la_SOURCES = $(handwritten_sources) $(built_sources) \ $(handwritten_headers) $(built_headers) diff --git a/wocky/wocky-connector.c b/wocky/wocky-connector.c index 89f4369..f3bb3c8 100644 --- a/wocky/wocky-connector.c +++ b/wocky/wocky-connector.c @@ -101,7 +101,6 @@ #define WOCKY_DEBUG_FLAG WOCKY_DEBUG_CONNECTOR #include "wocky-debug-internal.h" -#include "wocky-http-proxy.h" #include "wocky-sasl-auth.h" #include "wocky-tls-handler.h" #include "wocky-tls-connector.h" @@ -580,11 +579,6 @@ wocky_connector_class_init (WockyConnectorClass *klass) oclass->dispose = wocky_connector_dispose; oclass->finalize = wocky_connector_finalize; -#if HAVE_GIO_PROXY - /* Ensure that HTTP Proxy extension is registered */ - _wocky_http_proxy_get_type (); -#endif - /** * WockyConnector:plaintext-auth-allowed: * @@ -837,37 +831,29 @@ connect_to_host_async (WockyConnector *connector, guint default_port) { WockyConnectorPrivate *priv = connector->priv; + const gchar *uri_format = "%s://%s"; + gchar *uri; -#if HAVE_GIO_PROXY - { - const gchar *uri_format = "%s://%s"; - gchar *uri; - - /* If host_and_port is an ipv6 address we must ensure it has [] around it */ - if (host_and_port[0] != '[') - { - const gchar *p; - - /* if host_and_port contains 2 ':' chars, it must be an ipv6 address */ - p = g_strstr_len (host_and_port, -1, ":"); - if (p != NULL) - p = g_strstr_len (p + 1, -1, ":"); - if (p != NULL) - uri_format = "%s://[%s]"; - } - - /* Legacy SSL mode is just like doing HTTPS, so let's trigger HTTPS - * proxy setting if any */ - uri = g_strdup_printf (uri_format, - priv->legacy_ssl ? "https" : "xmpp-client", host_and_port); - g_socket_client_connect_to_uri_async (priv->client, - uri, default_port, NULL, tcp_host_connected, connector); - g_free (uri); - } -#else - g_socket_client_connect_to_host_async (priv->client, - host_and_port, default_port, NULL, tcp_host_connected, connector); -#endif + /* If host_and_port is an ipv6 address we must ensure it has [] around it */ + if (host_and_port[0] != '[') + { + const gchar *p; + + /* if host_and_port contains 2 ':' chars, it must be an ipv6 address */ + p = g_strstr_len (host_and_port, -1, ":"); + if (p != NULL) + p = g_strstr_len (p + 1, -1, ":"); + if (p != NULL) + uri_format = "%s://[%s]"; + } + + /* Legacy SSL mode is just like doing HTTPS, so let's trigger HTTPS + * proxy setting if any */ + uri = g_strdup_printf (uri_format, + priv->legacy_ssl ? "https" : "xmpp-client", host_and_port); + g_socket_client_connect_to_uri_async (priv->client, + uri, default_port, NULL, tcp_host_connected, connector); + g_free (uri); } static void diff --git a/wocky/wocky-http-proxy.c b/wocky/wocky-http-proxy.c deleted file mode 100644 index b79b6ad..0000000 --- a/wocky/wocky-http-proxy.c +++ /dev/null @@ -1,430 +0,0 @@ - /* wocky-http-proxy.c: Source for WockyHttpProxy - * - * Copyright (C) 2010 Collabora, Ltd. - * @author Nicolas Dufresne - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" - -#include "wocky-http-proxy.h" - -#include -#include - - -struct _WockyHttpProxy -{ - GObject parent; -}; - -struct _WockyHttpProxyClass -{ - GObjectClass parent_class; -}; - -static void wocky_http_proxy_iface_init (GProxyInterface *proxy_iface); - -#define wocky_http_proxy_get_type _wocky_http_proxy_get_type -G_DEFINE_TYPE_WITH_CODE (WockyHttpProxy, wocky_http_proxy, G_TYPE_OBJECT, - G_IMPLEMENT_INTERFACE (G_TYPE_PROXY, - wocky_http_proxy_iface_init) - g_io_extension_point_set_required_type ( - g_io_extension_point_register (G_PROXY_EXTENSION_POINT_NAME), - G_TYPE_PROXY); - g_io_extension_point_implement (G_PROXY_EXTENSION_POINT_NAME, - g_define_type_id, "http", 0)) - -static void -wocky_http_proxy_init (WockyHttpProxy *proxy) -{ -} - -#define HTTP_END_MARKER "\r\n\r\n" - -static gchar * -create_request (GProxyAddress *proxy_address, gboolean *has_cred) -{ - const gchar *hostname; - gint port; - const gchar *username; - const gchar *password; - GString *request; - gchar *ascii_hostname; - - if (has_cred) - *has_cred = FALSE; - - hostname = g_proxy_address_get_destination_hostname (proxy_address); - port = g_proxy_address_get_destination_port (proxy_address); - username = g_proxy_address_get_username (proxy_address); - password = g_proxy_address_get_password (proxy_address); - - request = g_string_new (NULL); - - ascii_hostname = g_hostname_to_ascii (hostname); - g_string_append_printf (request, - "CONNECT %s:%i HTTP/1.0\r\n" - "Host: %s:%i\r\n" - "Proxy-Connection: keep-alive\r\n" - "User-Agent: GLib/%i.%i\r\n", - ascii_hostname, port, - ascii_hostname, port, - GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION); - g_free (ascii_hostname); - - if (username != NULL && password != NULL) - { - gchar *cred; - gchar *base64_cred; - - if (has_cred) - *has_cred = TRUE; - - cred = g_strdup_printf ("%s:%s", username, password); - base64_cred = g_base64_encode ((guchar *) cred, strlen (cred)); - g_free (cred); - g_string_append_printf (request, - "Proxy-Authorization: %s\r\n", - base64_cred); - g_free (base64_cred); - } - - g_string_append (request, "\r\n"); - - return g_string_free (request, FALSE); -} - -static gboolean -check_reply (const gchar *buffer, gboolean has_cred, GError **error) -{ - gint err_code; - const gchar *ptr = buffer + 7; - - if (strncmp (buffer, "HTTP/1.", 7) != 0 - || (*ptr != '0' && *ptr != '1')) - { - g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_PROXY_FAILED, - "Bad HTTP proxy reply"); - return FALSE; - } - - ptr++; - while (*ptr == ' ') ptr++; - - err_code = atoi (ptr); - - if (err_code < 200 || err_code >= 300) - { - const gchar *msg_start; - gchar *msg; - - while (g_ascii_isdigit (*ptr)) - ptr++; - - while (*ptr == ' ') - ptr++; - - msg_start = ptr; - - ptr = strchr (msg_start, '\r'); - - if (ptr == NULL) - ptr = strchr (msg_start, '\0'); - - msg = g_strndup (msg_start, ptr - msg_start); - - if (err_code == 407) - { - if (has_cred) - g_set_error (error, G_IO_ERROR, G_IO_ERROR_PROXY_AUTH_FAILED, - "HTTP proxy authentication failed"); - else - g_set_error (error, G_IO_ERROR, G_IO_ERROR_PROXY_NEED_AUTH, - "HTTP proxy authentication required"); - } - else if (msg[0] == '\0') - g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_PROXY_FAILED, - "Connection failed due to broken HTTP reply"); - else - g_set_error (error, G_IO_ERROR, G_IO_ERROR_PROXY_FAILED, - "HTTP proxy connection failed: %i %s", - err_code, msg); - - g_free (msg); - return FALSE; - } - - return TRUE; -} - -static GIOStream * -wocky_http_proxy_connect (GProxy *proxy, - GIOStream *io_stream, - GProxyAddress *proxy_address, - GCancellable *cancellable, - GError **error) -{ - GInputStream *in; - GOutputStream *out; - GDataInputStream *data_in; - gchar *buffer; - gboolean has_cred; - - in = g_io_stream_get_input_stream (io_stream); - out = g_io_stream_get_output_stream (io_stream); - - data_in = g_data_input_stream_new (in); - g_filter_input_stream_set_close_base_stream (G_FILTER_INPUT_STREAM (data_in), - FALSE); - - buffer = create_request (proxy_address, &has_cred); - - if (!g_output_stream_write_all (out, buffer, strlen (buffer), NULL, - cancellable, error)) - goto error; - - g_free (buffer); - buffer = g_data_input_stream_read_until (data_in, HTTP_END_MARKER, NULL, - cancellable, error); - g_object_unref (data_in); - data_in = NULL; - - if (buffer == NULL) - { - if (error && (*error == NULL)) - g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_PROXY_FAILED, - "HTTP proxy server closed connection unexpectedly."); - goto error; - } - - if (!check_reply (buffer, has_cred, error)) - goto error; - - g_free (buffer); - - return g_object_ref (io_stream); - -error: - if (data_in != NULL) - g_object_unref (data_in); - - g_free (buffer); - return NULL; -} - - -typedef struct -{ - GSimpleAsyncResult *simple; - GIOStream *io_stream; - gchar *buffer; - gssize length; - gssize offset; - GDataInputStream *data_in; - gboolean has_cred; - GCancellable *cancellable; -} ConnectAsyncData; - -static void request_write_cb (GObject *source, - GAsyncResult *res, - gpointer user_data); -static void reply_read_cb (GObject *source, - GAsyncResult *res, - gpointer user_data); - -static void -free_connect_data (ConnectAsyncData *data) -{ - if (data->io_stream != NULL) - g_object_unref (data->io_stream); - - g_free (data->buffer); - - if (data->data_in != NULL) - g_object_unref (data->data_in); - - if (data->cancellable != NULL) - g_object_unref (data->cancellable); - - g_slice_free (ConnectAsyncData, data); -} - -static void -complete_async_from_error (ConnectAsyncData *data, GError *error) -{ - GSimpleAsyncResult *simple = data->simple; - - if (error == NULL) - g_set_error_literal (&error, G_IO_ERROR, G_IO_ERROR_PROXY_FAILED, - "HTTP proxy server closed connection unexpectedly."); - - g_simple_async_result_set_from_error (data->simple, error); - g_error_free (error); - g_simple_async_result_set_op_res_gpointer (simple, NULL, NULL); - g_simple_async_result_complete (simple); - g_object_unref (simple); -} - -static void -do_write (GAsyncReadyCallback callback, ConnectAsyncData *data) -{ - GOutputStream *out; - out = g_io_stream_get_output_stream (data->io_stream); - g_output_stream_write_async (out, - data->buffer + data->offset, - data->length - data->offset, - G_PRIORITY_DEFAULT, data->cancellable, - callback, data); -} - -static void -wocky_http_proxy_connect_async (GProxy *proxy, - GIOStream *io_stream, - GProxyAddress *proxy_address, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) -{ - GSimpleAsyncResult *simple; - ConnectAsyncData *data; - GInputStream *in; - - simple = g_simple_async_result_new (G_OBJECT (proxy), - callback, user_data, - wocky_http_proxy_connect_async); - - data = g_slice_new0 (ConnectAsyncData); - - data->simple = simple; - data->io_stream = g_object_ref (io_stream); - - if (cancellable != NULL) - data->cancellable = g_object_ref (cancellable); - - in = g_io_stream_get_input_stream (io_stream); - - data->data_in = g_data_input_stream_new (in); - g_filter_input_stream_set_close_base_stream (G_FILTER_INPUT_STREAM (data->data_in), - FALSE); - - g_simple_async_result_set_op_res_gpointer (simple, data, - (GDestroyNotify) free_connect_data); - - data->buffer = create_request (proxy_address, &data->has_cred); - data->length = strlen (data->buffer); - data->offset = 0; - - do_write (request_write_cb, data); -} - -static void -request_write_cb (GObject *source, - GAsyncResult *res, - gpointer user_data) -{ - GError *error = NULL; - ConnectAsyncData *data = user_data; - gssize written; - - written = g_output_stream_write_finish (G_OUTPUT_STREAM (source), - res, &error); - if (written < 0) - { - complete_async_from_error (data, error); - return; - } - - data->offset += written; - - if (data->offset == data->length) - { - g_free (data->buffer); - data->buffer = NULL; - - g_data_input_stream_read_until_async (data->data_in, - HTTP_END_MARKER, - G_PRIORITY_DEFAULT, - data->cancellable, - reply_read_cb, data); - - } - else - { - do_write (request_write_cb, data); - } -} - -static void -reply_read_cb (GObject *source, - GAsyncResult *res, - gpointer user_data) -{ - GError *error = NULL; - ConnectAsyncData *data = user_data; - - data->buffer = g_data_input_stream_read_until_finish (data->data_in, - res, NULL, &error); - - if (data->buffer == NULL) - { - complete_async_from_error (data, error); - return; - } - - if (!check_reply (data->buffer, data->has_cred, &error)) - { - complete_async_from_error (data, error); - return; - } - - g_simple_async_result_complete (data->simple); - g_object_unref (data->simple); -} - -static GIOStream * -wocky_http_proxy_connect_finish (GProxy *proxy, - GAsyncResult *result, - GError **error) -{ - GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (result); - ConnectAsyncData *data = g_simple_async_result_get_op_res_gpointer (simple); - - if (g_simple_async_result_propagate_error (simple, error)) - return NULL; - - return g_object_ref (data->io_stream); -} - -static gboolean -wocky_http_proxy_supports_hostname (GProxy *proxy) -{ - return TRUE; -} - -static void -wocky_http_proxy_class_init (WockyHttpProxyClass *class) -{ -} - -static void -wocky_http_proxy_iface_init (GProxyInterface *proxy_iface) -{ - proxy_iface->connect = wocky_http_proxy_connect; - proxy_iface->connect_async = wocky_http_proxy_connect_async; - proxy_iface->connect_finish = wocky_http_proxy_connect_finish; - proxy_iface->supports_hostname = wocky_http_proxy_supports_hostname; -} diff --git a/wocky/wocky-http-proxy.h b/wocky/wocky-http-proxy.h deleted file mode 100644 index b9f9485..0000000 --- a/wocky/wocky-http-proxy.h +++ /dev/null @@ -1,46 +0,0 @@ - /* wocky-http-proxy.h: Header for WockyHttpProxy - * - * Copyright (C) 2010 Collabora, Ltd. - * @author Nicolas Dufresne - * - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#if !defined (WOCKY_COMPILATION) -# error "This is an internal header." -#endif - -#ifndef _WOCKY_HTTP_PROXY_H_ -#define _WOCKY_HTTP_PROXY_H_ - -#include - -G_BEGIN_DECLS - -#define WOCKY_TYPE_HTTP_PROXY (_wocky_http_proxy_get_type ()) -#define WOCKY_HTTP_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), WOCKY_TYPE_HTTP_PROXY, WockyHttpProxy)) -#define WOCKY_HTTP_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), WOCKY_TYPE_HTTP_PROXY, WockyHttpProxyClass)) -#define WOCKY_IS_HTTP_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), WOCKY_TYPE_HTTP_PROXY)) -#define WOCKY_IS_HTTP_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), WOCKY_TYPE_HTTP_PROXY)) -#define WOCKY_HTTP_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), WOCKY_TYPE_HTTP_PROXY, WockyHttpProxyClass)) - -typedef struct _WockyHttpProxy WockyHttpProxy; -typedef struct _WockyHttpProxyClass WockyHttpProxyClass; - -GType _wocky_http_proxy_get_type (void); - -G_END_DECLS - -#endif /* _WOCKY_HTTP_PROXY_H_ */ -- cgit v1.2.3 From 0a3f87a744031943239b8925973114147ff95aae Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Sun, 3 Jul 2016 21:33:09 +0300 Subject: Bump required glib version to 2.44, as we now depend on GIO http proxy Since g_type_init() is deprecated in more recent glib versions, also remove all calls of it to fix compilation. g_type_init() is not necessary to be called anymore, it is a no-op. https://bugs.freedesktop.org/show_bug.cgi?id=94031 Reviewed-by: Diane Trout --- configure.ac | 6 +++--- examples/dump-certificates.c | 1 - examples/receive-messages.c | 1 - examples/register.c | 2 -- examples/send-message.c | 1 - examples/unregister.c | 2 -- tests/wocky-dummy-xmpp-server.c | 2 -- tests/wocky-test-helper.c | 1 - 8 files changed, 3 insertions(+), 13 deletions(-) diff --git a/configure.ac b/configure.ac index 0e99203..2046fad 100644 --- a/configure.ac +++ b/configure.ac @@ -119,10 +119,10 @@ AC_C_BIGENDIAN dnl Check for Glib PKG_CHECK_MODULES(GLIB, - [glib-2.0 >= 2.32, gobject-2.0 >= 2.32, gthread-2.0 >= 2.32, gio-2.0 >= 2.32]) + [glib-2.0 >= 2.44, gobject-2.0 >= 2.44, gthread-2.0 >= 2.44, gio-2.0 >= 2.44]) -AC_DEFINE([GLIB_VERSION_MIN_REQUIRED], [GLIB_VERSION_2_32], [Ignore post 2.32 deprecations]) -AC_DEFINE([GLIB_VERSION_MAX_ALLOWED], [GLIB_VERSION_2_32], [Prevent post 2.32 APIs]) +AC_DEFINE([GLIB_VERSION_MIN_REQUIRED], [GLIB_VERSION_2_44], [Ignore post 2.44 deprecations]) +AC_DEFINE([GLIB_VERSION_MAX_ALLOWED], [GLIB_VERSION_2_44], [Prevent post 2.44 APIs]) AC_SUBST(GLIB_CFLAGS) AC_SUBST(GLIB_LIBS) diff --git a/examples/dump-certificates.c b/examples/dump-certificates.c index eb22fd7..1ea1499 100644 --- a/examples/dump-certificates.c +++ b/examples/dump-certificates.c @@ -147,7 +147,6 @@ main (int argc, WockyConnector *connector; WockyTLSHandler *handler; - g_type_init (); wocky_init (); if (argc != 2) diff --git a/examples/receive-messages.c b/examples/receive-messages.c index 1d6e392..81ce4e5 100644 --- a/examples/receive-messages.c +++ b/examples/receive-messages.c @@ -189,7 +189,6 @@ main (int argc, WockyTLSHandler *tls_handler = NULL; WockyConnector *connector; - g_type_init (); wocky_init (); context = g_option_context_new (" - signs in as and prints incoming messages"); diff --git a/examples/register.c b/examples/register.c index b745898..a5c3c07 100644 --- a/examples/register.c +++ b/examples/register.c @@ -50,8 +50,6 @@ main (int argc, gchar *email = NULL; WockyConnector *wcon = NULL; - g_type_init (); - if ((argc < 4) || (argc > 5)) { printf ("Usage: %s [host]\n", argv[0]); diff --git a/examples/send-message.c b/examples/send-message.c index 96800c1..c4476c6 100644 --- a/examples/send-message.c +++ b/examples/send-message.c @@ -125,7 +125,6 @@ main (int argc, WockyTLSHandler *tls_handler = NULL; WockyConnector *connector; - g_type_init (); wocky_init (); context = g_option_context_new (" - signs in as and sends to "); diff --git a/examples/unregister.c b/examples/unregister.c index c6da4bd..e29ce41 100644 --- a/examples/unregister.c +++ b/examples/unregister.c @@ -47,8 +47,6 @@ main (int argc, gchar *pass = NULL; WockyConnector *wcon = NULL; - g_type_init (); - if ((argc < 3) || (argc > 4)) { printf ("Usage: %s [host]\n", argv[0]); diff --git a/tests/wocky-dummy-xmpp-server.c b/tests/wocky-dummy-xmpp-server.c index c1ffe1a..82a69d6 100644 --- a/tests/wocky-dummy-xmpp-server.c +++ b/tests/wocky-dummy-xmpp-server.c @@ -83,8 +83,6 @@ main (int argc, memset (&server, 0, sizeof (server)); - g_type_init (); - loop = g_main_loop_new (NULL, FALSE); server.sin_family = AF_INET; diff --git a/tests/wocky-test-helper.c b/tests/wocky-test-helper.c index f7148e5..86af79b 100644 --- a/tests/wocky-test-helper.c +++ b/tests/wocky-test-helper.c @@ -296,7 +296,6 @@ test_init (int argc, { g_test_init (&argc, &argv, NULL); g_test_bug_base ("http://bugs.freedesktop.org/show_bug.cgi?id="); - g_type_init (); wocky_init (); } -- cgit v1.2.3 From 35194060b1f2692ab5316d0d2bc0fbe26d33e81a Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Mon, 4 Jul 2016 19:19:29 +0300 Subject: wocky-connector-test: allow test server to dispatch any pending events before teardown This is to fix an assertion failure that happens in the "/connector+ssl/econnreset/client-open" test. In this test, the server closes the connection and the client catches up immediately and closes too. When the client closes, it forcibly terminates the server, but in most cases the server's socket close operation doesn't have a chance to finish before server teardown is called, so the teardown function hits cancel on the GCancellable that is linked with the operation and finally the operation ends up repording an "Operation cancelled" error. By running the GMainLoop once before calling teardown, we ensure that the socket close operation has a chance to finish gracefully. --- tests/wocky-connector-test.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tests/wocky-connector-test.c b/tests/wocky-connector-test.c index e2622b4..a1b2b12 100644 --- a/tests/wocky-connector-test.c +++ b/tests/wocky-connector-test.c @@ -3366,6 +3366,13 @@ test_server_teardown_cb (GObject *source, g_main_loop_quit (loop); } +static gboolean +test_server_idle_quit_loop_cb (GMainLoop *loop) +{ + g_main_loop_quit (loop); + return G_SOURCE_REMOVE; +} + static void test_server_teardown (test_t *test, ServerParameters *srv) @@ -3385,6 +3392,11 @@ test_server_teardown (test_t *test, test_connector_server_get_used_mech (srv->server)); } + /* let the server dispatch any pending events before + * forcing it to tear down */ + g_idle_add ((GSourceFunc) test_server_idle_quit_loop_cb, loop); + g_main_loop_run (loop); + /* Run until server is down */ test_connector_server_teardown (srv->server, test_server_teardown_cb, loop); -- cgit v1.2.3 From 01510fe918d7d015fc69cdad6f4db56b28da75b5 Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Mon, 4 Jul 2016 19:26:04 +0300 Subject: wocky-test-connector-server: report errors when asserting on finishing async operations --- tests/wocky-test-connector-server.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tests/wocky-test-connector-server.c b/tests/wocky-test-connector-server.c index 919fa86..acf9a88 100644 --- a/tests/wocky-test-connector-server.c +++ b/tests/wocky-test-connector-server.c @@ -1382,12 +1382,16 @@ force_closed_cb (GObject *source, gpointer user_data) { TestConnectorServer *self = TEST_CONNECTOR_SERVER (user_data); + GError *error = NULL; + gboolean success; DEBUG ("Connection force closed"); - g_assert (wocky_xmpp_connection_force_close_finish ( + success = wocky_xmpp_connection_force_close_finish ( WOCKY_XMPP_CONNECTION (source), - result, NULL)); + result, &error); + g_assert_no_error (error); + g_assert (success); server_dec_outstanding (self); } @@ -1398,9 +1402,13 @@ see_other_host_cb (GObject *source, gpointer user_data) { TestConnectorServer *self = user_data; + GError *error = NULL; + gboolean success; - g_assert (wocky_xmpp_connection_send_stanza_finish (self->priv->conn, - result, NULL)); + success = wocky_xmpp_connection_send_stanza_finish (self->priv->conn, + result, &error); + g_assert_no_error (error); + g_assert (success); if (server_dec_outstanding (self)) return; -- cgit v1.2.3 From d07359343e76d1745d18f276eec90ab5056917b0 Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Sat, 9 Jul 2016 10:46:59 +0300 Subject: tests/certs: update crl for 5 years indeed The previous attempt only updated it for 1 year, by mistake https://bugs.freedesktop.org/show_bug.cgi?id=79548 --- tests/certs/ca-0-crl.pem | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/tests/certs/ca-0-crl.pem b/tests/certs/ca-0-crl.pem index 2867f95..ca22774 100644 --- a/tests/certs/ca-0-crl.pem +++ b/tests/certs/ca-0-crl.pem @@ -1,14 +1,13 @@ -----BEGIN X509 CRL----- -MIICDTCB9gIBATANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQGEwJVSzESMBAGA1UE +MIICBzCB8AIBATANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQGEwJVSzESMBAGA1UE ChMJQ29sbGFib3JhMRkwFwYDVQQLExBXb2NreSBUZXN0IFN1aXRlMREwDwYDVQQI -EwhDb25mdXNlZDEbMBkGA1UEAxMSV29ja3kgWE1QUCBMaWJyYXJ5GA8yMDE2MDEx -MjA1NDYzN1oYDzIwMTcwMTExMDU0NjM3WjAWMBQCAQsYDzIwMTYwMTEyMDU0NjM3 -WqA6MDgwHwYDVR0jBBgwFoAUSTAmCIya1mnNi8DMDlwCjkofpowwFQYDVR0UBA4C -DFaUkz0c3DJPdC61CDANBgkqhkiG9w0BAQsFAAOCAQEAJ2KNH3iBLUtgbDHPAc55 -b2O0UG2Mrqpza1PfeFil1yNbBkTL00HbvqZ2mnY0m+tS//nIlz27n3xPgl/6f5TK -HVwTXSluAumQPVbUQyZlTTBT1B4yvwQvd5D9m3I8p2Rk4BA5hDdBKDD+jdnPrELI -FPjPMJiFY9yPRHglkBF3N1Y+7HUPugDGMiwrU8nDpAeZY/W/zz3FWKgzUORWuH3V -XEvK0I5vtT5Ms2gbmPat0Clv8Hl6BQh2oD5L+82EQOe/xuloDg5fZYLCJbJgeSIG -ONkVQ3P2k0uHsSN676MJ844N8bfyij9OpcWzK2EiKV7kb+PYtQprMR6EOy1zOG3/ -Pg== +EwhDb25mdXNlZDEbMBkGA1UEAxMSV29ja3kgWE1QUCBMaWJyYXJ5Fw0xNjA3MDkw +NzQ2MDVaFw0yMTA3MDgwNzQ2MDVaMBQwEgIBCxcNMTYwNzA5MDc0NjA1WqA6MDgw +HwYDVR0jBBgwFoAUSTAmCIya1mnNi8DMDlwCjkofpowwFQYDVR0UBA4CDFeAq70t +sGE/P6rkCDANBgkqhkiG9w0BAQsFAAOCAQEAWObLL6v2KJh8h6ZMCn2uVDre0avT +SWtqokxDU1xVeWT5hj0AHCrOCS8hXLgTxclYYONrVcG0l5oxIKkf2Smo+syT0dXS +3N7p7fsgxrom5eQiP8wJM2n5iOC/QYX8IpTshZOPzoELxc4RvuLfThCdF73EpVHy +RkdbyiK4CsLdpT8Vptk3vaLO3w/UdIfSLAOq5Oicw7SNQ9WdFoCA9gmuGLePDO63 +gJ2pbvKuGM7qZWOa5eBHFNX12aZoeVr1NbJU53CYT0POkYTsLBEHPRP4YTX9W2Ik +w7H546f3mOnYKKGa4SToN+TwiuevwHoXWuAdUKLR/wl9GPrUUR0f/7HYYA== -----END X509 CRL----- -- cgit v1.2.3