Hello community, here is the log from the commit of package libsoup for openSUSE:Factory checked in at 2015-10-25 19:10:51 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libsoup (Old) and /work/SRC/openSUSE:Factory/.libsoup.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libsoup" Changes: -------- --- /work/SRC/openSUSE:Factory/libsoup/libsoup.changes 2015-10-06 16:26:51.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libsoup.new/libsoup.changes 2015-10-25 19:10:53.000000000 +0100 @@ -1,0 +2,12 @@ +Mon Oct 12 21:38:30 UTC 2015 - zai...@opensuse.org + +- Update to version 2.52.1: + + Fixed build under MinGW. + + Fixed build with --disable-introspection (bgo#755389). + + Fixed HTTP authentication protection space handling for files + directly under the root directory (bgo#755617). + + Fixed a warning when loading data from SoupCache while using + an authenticated proxy (bgo#756076). + + Updated translations. + +------------------------------------------------------------------- Old: ---- libsoup-2.52.0.tar.xz New: ---- libsoup-2.52.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libsoup.spec ++++++ --- /var/tmp/diff_new_pack.Dh6lOe/_old 2015-10-25 19:10:54.000000000 +0100 +++ /var/tmp/diff_new_pack.Dh6lOe/_new 2015-10-25 19:10:54.000000000 +0100 @@ -20,7 +20,7 @@ Summary: HTTP client/server library for GNOME License: LGPL-2.1+ Group: Development/Libraries/GNOME -Version: 2.52.0 +Version: 2.52.1 Release: 0 Url: http://www.gnome.org Source: http://download.gnome.org/sources/libsoup/2.52/%{name}-%{version}.tar.xz ++++++ libsoup-2.52.0.tar.xz -> libsoup-2.52.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/NEWS new/libsoup-2.52.1/NEWS --- old/libsoup-2.52.0/NEWS 2015-09-21 17:36:01.000000000 +0200 +++ new/libsoup-2.52.1/NEWS 2015-10-12 23:25:50.000000000 +0200 @@ -1,3 +1,20 @@ +Changes in libsoup from 2.52.0 to 2.52.1: + + * Fixed build under MinGW [Chun-wei Fan] + + * Fixed build with --disable-introspection [#755389, Quentin + Glidic] + + * Fixed HTTP authentication protection space handling for + files directly under the root directory. [#755617, Carlos + Garcia Campos] + + * Fixed a warning when loading data from SoupCache while using + an authenticated proxy. [#756076, Carlos Garcia Campos] + + * Updated translations: + German, Vietnamese + Changes in libsoup from 2.51.92 to 2.52.0: * Removed duplicate test paths from tests/date so it will pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/configure new/libsoup-2.52.1/configure --- old/libsoup-2.52.0/configure 2015-09-21 17:36:16.000000000 +0200 +++ new/libsoup-2.52.1/configure 2015-10-12 23:26:15.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libsoup 2.52.0. +# Generated by GNU Autoconf 2.69 for libsoup 2.52.1. # # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=libsoup>. # @@ -651,8 +651,8 @@ # Identity of this package. PACKAGE_NAME='libsoup' PACKAGE_TARNAME='libsoup' -PACKAGE_VERSION='2.52.0' -PACKAGE_STRING='libsoup 2.52.0' +PACKAGE_VERSION='2.52.1' +PACKAGE_STRING='libsoup 2.52.1' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=libsoup' PACKAGE_URL='' @@ -1530,7 +1530,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libsoup 2.52.0 to adapt to many kinds of systems. +\`configure' configures libsoup 2.52.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1600,7 +1600,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libsoup 2.52.0:";; + short | recursive ) echo "Configuration of libsoup 2.52.1:";; esac cat <<\_ACEOF @@ -1744,7 +1744,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libsoup configure 2.52.0 +libsoup configure 2.52.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2022,7 +2022,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libsoup $as_me 2.52.0, which was +It was created by libsoup $as_me 2.52.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2888,7 +2888,7 @@ # Define the identity of the package. PACKAGE='libsoup' - VERSION='2.52.0' + VERSION='2.52.1' cat >>confdefs.h <<_ACEOF @@ -3054,7 +3054,7 @@ SOUP_MAJOR_VERSION=2 SOUP_MINOR_VERSION=52 -SOUP_MICRO_VERSION=0 +SOUP_MICRO_VERSION=1 @@ -13752,8 +13752,7 @@ -if test "x$found_introspection" = "xyes"; then - # Extract the first word of "valac", so it can be a program name with args. +# Extract the first word of "valac", so it can be a program name with args. set dummy valac; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } @@ -14067,7 +14066,6 @@ -fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for glib-networking (glib TLS implementation)" >&5 $as_echo_n "checking for glib-networking (glib TLS implementation)... " >&6; } @@ -15288,7 +15286,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libsoup $as_me 2.52.0, which was +This file was extended by libsoup $as_me 2.52.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15354,7 +15352,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -libsoup config.status 2.52.0 +libsoup config.status 2.52.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/configure.ac new/libsoup-2.52.1/configure.ac --- old/libsoup-2.52.0/configure.ac 2015-09-21 17:35:26.000000000 +0200 +++ new/libsoup-2.52.1/configure.ac 2015-10-12 23:25:40.000000000 +0200 @@ -4,7 +4,7 @@ m4_define([soup_major_version], [2]) m4_define([soup_minor_version], [52]) -m4_define([soup_micro_version], [0]) +m4_define([soup_micro_version], [1]) AC_PREREQ(2.63) AC_INIT([libsoup],[soup_major_version.soup_minor_version.soup_micro_version],[http://bugzilla.gnome.org/enter_bug.cgi?product=libsoup]) @@ -162,9 +162,7 @@ dnl ***************************** GOBJECT_INTROSPECTION_CHECK([0.9.5]) -if test "x$found_introspection" = "xyes"; then - VAPIGEN_CHECK() -fi +VAPIGEN_CHECK() AC_MSG_CHECKING([for glib-networking (glib TLS implementation)]) save_CFLAGS="$CFLAGS" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/docs/reference/html/libsoup-2.4-Version-Information.html new/libsoup-2.52.1/docs/reference/html/libsoup-2.4-Version-Information.html --- old/libsoup-2.52.0/docs/reference/html/libsoup-2.4-Version-Information.html 2015-09-21 17:36:53.000000000 +0200 +++ new/libsoup-2.52.1/docs/reference/html/libsoup-2.4-Version-Information.html 2015-10-12 23:26:52.000000000 +0200 @@ -292,7 +292,7 @@ <hr> <div class="refsect2"> <a name="SOUP-MICRO-VERSION:CAPS"></a><h3>SOUP_MICRO_VERSION</h3> -<pre class="programlisting">#define SOUP_MICRO_VERSION (0) +<pre class="programlisting">#define SOUP_MICRO_VERSION (1) </pre> <p>Like <a class="link" href="libsoup-2.4-Version-Information.html#soup-get-micro-version" title="soup_get_micro_version ()"><code class="function">soup_get_micro_version()</code></a>, but from the headers used at application compile time, rather than from the library linked diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/libsoup/Makefile.am new/libsoup-2.52.1/libsoup/Makefile.am --- old/libsoup-2.52.0/libsoup/Makefile.am 2015-09-15 16:08:46.000000000 +0200 +++ new/libsoup-2.52.1/libsoup/Makefile.am 2015-10-12 23:20:07.000000000 +0200 @@ -101,6 +101,7 @@ $(SQLITE_LIBS) libsoup_2_4_la_SOURCES = \ + gconstructor.h \ soup-address.c \ soup-auth.c \ soup-auth-basic.h \ @@ -150,6 +151,7 @@ soup-filter-input-stream.h \ soup-form.c \ soup-headers.c \ + soup-init.c \ soup-io-stream.h \ soup-io-stream.c \ soup-logger.c \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/libsoup/Makefile.in new/libsoup-2.52.1/libsoup/Makefile.in --- old/libsoup-2.52.0/libsoup/Makefile.in 2015-09-21 17:36:16.000000000 +0200 +++ new/libsoup-2.52.1/libsoup/Makefile.in 2015-10-12 23:26:16.000000000 +0200 @@ -157,7 +157,7 @@ soup-cookie-jar-db.lo soup-cookie-jar-text.lo soup-date.lo \ soup-directory-input-stream.lo soup-enum-types.lo \ soup-filter-input-stream.lo soup-form.lo soup-headers.lo \ - soup-io-stream.lo soup-logger.lo soup-message.lo \ + soup-init.lo soup-io-stream.lo soup-logger.lo soup-message.lo \ soup-message-body.lo soup-message-client-io.lo \ soup-message-headers.lo soup-message-io.lo \ soup-message-queue.lo soup-message-server-io.lo soup-method.lo \ @@ -551,6 +551,7 @@ $(SQLITE_LIBS) libsoup_2_4_la_SOURCES = \ + gconstructor.h \ soup-address.c \ soup-auth.c \ soup-auth-basic.h \ @@ -600,6 +601,7 @@ soup-filter-input-stream.h \ soup-form.c \ soup-headers.c \ + soup-init.c \ soup-io-stream.h \ soup-io-stream.c \ soup-logger.c \ @@ -844,6 +846,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soup-form.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soup-gnome-features.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soup-headers.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soup-init.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soup-io-stream.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soup-logger.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/soup-message-body.Plo@am__quote@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/libsoup/gconstructor.h new/libsoup-2.52.1/libsoup/gconstructor.h --- old/libsoup-2.52.0/libsoup/gconstructor.h 1970-01-01 01:00:00.000000000 +0100 +++ new/libsoup-2.52.1/libsoup/gconstructor.h 2015-10-12 23:20:07.000000000 +0200 @@ -0,0 +1,94 @@ +/* + If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and + destructors, in a sane way, including e.g. on library unload. If not you're on + your own. + + Some compilers need #pragma to handle this, which does not work with macros, + so the way you need to use this is (for constructors): + + #ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA + #pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(my_constructor) + #endif + G_DEFINE_CONSTRUCTOR(my_constructor) + static void my_constructor(void) { + ... + } + +*/ + +#ifndef __GTK_DOC_IGNORE__ + +#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) + +#define G_HAS_CONSTRUCTORS 1 + +#define G_DEFINE_CONSTRUCTOR(_func) static void __attribute__((constructor)) _func (void); +#define G_DEFINE_DESTRUCTOR(_func) static void __attribute__((destructor)) _func (void); + +#elif defined (_MSC_VER) && (_MSC_VER >= 1500) +/* Visual studio 2008 and later has _Pragma */ + +#define G_HAS_CONSTRUCTORS 1 + +#define G_DEFINE_CONSTRUCTOR(_func) \ + static void _func(void); \ + static int _func ## _wrapper(void) { _func(); return 0; } \ + __pragma(section(".CRT$XCU",read)) \ + __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = _func ## _wrapper; + +#define G_DEFINE_DESTRUCTOR(_func) \ + static void _func(void); \ + static int _func ## _constructor(void) { atexit (_func); return 0; } \ + __pragma(section(".CRT$XCU",read)) \ + __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = _func ## _constructor; + +#elif defined (_MSC_VER) + +#define G_HAS_CONSTRUCTORS 1 + +/* Pre Visual studio 2008 must use #pragma section */ +#define G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 1 +#define G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA 1 + +#define G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(_func) \ + section(".CRT$XCU",read) +#define G_DEFINE_CONSTRUCTOR(_func) \ + static void _func(void); \ + static int _func ## _wrapper(void) { _func(); return 0; } \ + __declspec(allocate(".CRT$XCU")) static int (*p)(void) = _func ## _wrapper; + +#define G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(_func) \ + section(".CRT$XCU",read) +#define G_DEFINE_DESTRUCTOR(_func) \ + static void _func(void); \ + static int _func ## _constructor(void) { atexit (_func); return 0; } \ + __declspec(allocate(".CRT$XCU")) static int (* _array ## _func)(void) = _func ## _constructor; + +#elif defined(__SUNPRO_C) + +/* This is not tested, but i believe it should work, based on: + * http://opensource.apple.com/source/OpenSSL098/OpenSSL098-35/src/fips/fips_premain.c + */ + +#define G_HAS_CONSTRUCTORS 1 + +#define G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA 1 +#define G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA 1 + +#define G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(_func) \ + init(_func) +#define G_DEFINE_CONSTRUCTOR(_func) \ + static void _func(void); + +#define G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(_func) \ + fini(_func) +#define G_DEFINE_DESTRUCTOR(_func) \ + static void _func(void); + +#else + +/* constructors not supported for this compiler */ + +#endif + +#endif /* __GTK_DOC_IGNORE__ */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/libsoup/soup-auth-basic.c new/libsoup-2.52.1/libsoup/soup-auth-basic.c --- old/libsoup-2.52.0/libsoup/soup-auth-basic.c 2015-09-18 16:04:53.000000000 +0200 +++ new/libsoup-2.52.1/libsoup/soup-auth-basic.c 2015-10-12 23:20:07.000000000 +0200 @@ -75,7 +75,9 @@ /* Strip filename component */ p = strrchr (space, '/'); - if (p && p != space && p[1]) + if (p == space && p[1]) + p[1] = '\0'; + else if (p && p[1]) *p = '\0'; return g_slist_prepend (NULL, space); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/libsoup/soup-auth-manager.c new/libsoup-2.52.1/libsoup/soup-auth-manager.c --- old/libsoup-2.52.0/libsoup/soup-auth-manager.c 2015-07-27 19:51:03.000000000 +0200 +++ new/libsoup-2.52.1/libsoup/soup-auth-manager.c 2015-10-12 23:20:07.000000000 +0200 @@ -474,12 +474,12 @@ queue = soup_session_get_queue (priv->session); item = soup_message_queue_lookup (queue, msg); - if (item) { - uri = soup_connection_get_proxy_uri (item->conn); - soup_message_queue_item_unref (item); - } else - uri = NULL; + if (!item) + return; + /* When loaded from the disk cache, the connection is NULL. */ + uri = item->conn ? soup_connection_get_proxy_uri (item->conn) : NULL; + soup_message_queue_item_unref (item); if (!uri) return; } else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/libsoup/soup-init.c new/libsoup-2.52.1/libsoup/soup-init.c --- old/libsoup-2.52.0/libsoup/soup-init.c 1970-01-01 01:00:00.000000000 +0100 +++ new/libsoup-2.52.1/libsoup/soup-init.c 2015-10-12 23:20:07.000000000 +0200 @@ -0,0 +1,78 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ +/* + * soup-session.c + * + * Copyright (C) 2000-2003, Ximian, Inc. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <glib/gi18n-lib.h> +#include "gconstructor.h" + +#ifdef G_OS_WIN32 +#define WIN32_LEAN_AND_MEAN +#include <windows.h> + +HMODULE soup_dll; +#endif + +static void +soup_init (void) +{ +#ifdef G_OS_WIN32 + char *basedir = g_win32_get_package_installation_directory_of_module (soup_dll); + char *localedir = g_build_filename (basedir, "share", "locale", NULL); + bindtextdomain (GETTEXT_PACKAGE, localedir); + g_free (localedir); + g_free (basedir); +#else + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); +#endif +#ifdef HAVE_BIND_TEXTDOMAIN_CODESET + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); +#endif +} + +#if defined (G_OS_WIN32) + +BOOL WINAPI +DllMain (HINSTANCE hinstDLL, + DWORD fdwReason, + LPVOID lpvReserved) +{ + switch (fdwReason) { + case DLL_PROCESS_ATTACH: + soup_dll = hinstDLL; + + soup_init (); + break; + + case DLL_THREAD_DETACH: + + default: + /* do nothing */ + ; + } + + return TRUE; +} + +#elif defined (G_HAS_CONSTRUCTORS) + +#ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA +#pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(soup_init_ctor) +#endif +G_DEFINE_CONSTRUCTOR(soup_init_ctor) + +static void +soup_init_ctor (void) +{ + soup_init (); +} + +#else +# error Your platform/compiler is missing constructor support +#endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/libsoup/soup-session.c new/libsoup-2.52.1/libsoup/soup-session.c --- old/libsoup-2.52.0/libsoup/soup-session.c 2015-08-10 15:49:46.000000000 +0200 +++ new/libsoup-2.52.1/libsoup/soup-session.c 2015-10-12 23:20:07.000000000 +0200 @@ -77,48 +77,6 @@ * subtypes) have a #SoupContentDecoder by default. **/ -#if defined (G_OS_WIN32) -#define WIN32_LEAN_AND_MEAN -#include <windows.h> - -HMODULE soup_dll; - -BOOL WINAPI -DllMain (HINSTANCE hinstDLL, - DWORD fdwReason, - LPVOID lpvReserved) -{ - switch (fdwReason) { - case DLL_PROCESS_ATTACH: - soup_dll = hinstDLL; - break; - - case DLL_THREAD_DETACH: - - default: - /* do nothing */ - ; - } -} -#endif - -static void -soup_init (void) -{ -#ifdef G_OS_WIN32 - char *basedir = g_win32_get_package_installation_directory_of_module (soup_dll); - char *localedir = g_build_filename (basedir, "share", "locale", NULL); - bindtextdomain (GETTEXT_PACKAGE, localedir); - g_free (localedir); - g_free (basedir); -#else - bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); -#endif -#ifdef HAVE_BIND_TEXTDOMAIN_CODESET - bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); -#endif -} - typedef struct { SoupURI *uri; SoupAddress *addr; @@ -214,9 +172,7 @@ #define SOUP_SESSION_USER_AGENT_BASE "libsoup/" PACKAGE_VERSION -G_DEFINE_TYPE_WITH_CODE (SoupSession, soup_session, G_TYPE_OBJECT, - soup_init (); - ) +G_DEFINE_TYPE (SoupSession, soup_session, G_TYPE_OBJECT) enum { REQUEST_QUEUED, @@ -4823,7 +4779,9 @@ { GTask *task = user_data; - g_signal_handlers_disconnect_by_func (msg, G_CALLBACK (websocket_connect_async_stop), task); + /* Disconnect websocket_connect_async_stop() handler. */ + g_signal_handlers_disconnect_matched (msg, G_SIGNAL_MATCH_DATA, + 0, 0, NULL, NULL, task); g_task_return_new_error (task, SOUP_WEBSOCKET_ERROR, SOUP_WEBSOCKET_ERROR_NOT_WEBSOCKET, @@ -4840,7 +4798,9 @@ SoupWebsocketConnection *client; GError *error = NULL; - g_signal_handlers_disconnect_by_func (msg, G_CALLBACK (websocket_connect_async_stop), task); + /* Disconnect websocket_connect_async_stop() handler. */ + g_signal_handlers_disconnect_matched (msg, G_SIGNAL_MATCH_DATA, + 0, 0, NULL, NULL, task); if (soup_websocket_client_verify_handshake (item->msg, &error)){ stream = soup_session_steal_connection (item->session, item->msg); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/po/de.po new/libsoup-2.52.1/po/de.po --- old/libsoup-2.52.0/po/de.po 2015-07-27 19:51:03.000000000 +0200 +++ new/libsoup-2.52.1/po/de.po 2015-10-12 23:20:07.000000000 +0200 @@ -4,26 +4,27 @@ # Tobias Endrigkeit <tobiasendrigk...@googlemail.com>, 2012. # Mario Blättermann <mario.blaetterm...@gmail.com>, 2012, 2013. # Andre Jonas <nip...@googlemail.com>, 2013. +# Bernd Homuth <d...@hmt.im>, 2015. # msgid "" msgstr "" "Project-Id-Version: libsoup master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=libsoup&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2014-09-21 13:58+0000\n" -"PO-Revision-Date: 2014-09-21 19:25+0100\n" -"Last-Translator: Benjamin Steinwender <b...@stbe.at>\n" -"Language-Team: Deutsch <German <gnome...@gnome.org>>\n" +"POT-Creation-Date: 2015-09-21 11:01+0000\n" +"PO-Revision-Date: 2015-09-22 21:16+0200\n" +"Last-Translator: Bernd Homuth <d...@hmt.im>\n" +"Language-Team: Deutsch <gnome...@gnome.org>\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.6.9\n" +"X-Generator: Gtranslator 2.91.6\n" #: ../libsoup/soup-body-input-stream.c:140 #: ../libsoup/soup-body-input-stream.c:171 -#: ../libsoup/soup-body-input-stream.c:204 ../libsoup/soup-message-io.c:196 +#: ../libsoup/soup-body-input-stream.c:204 ../libsoup/soup-message-io.c:235 msgid "Connection terminated unexpectedly" msgstr "Die Verbindung wurde unerwartet beendet" @@ -35,11 +36,11 @@ msgid "Cannot truncate SoupBodyInputStream" msgstr "SoupBodyInputStream konnte nicht abgeschnitten werden" -#: ../libsoup/soup-cache-input-stream.c:73 +#: ../libsoup/soup-cache-input-stream.c:74 msgid "Network stream unexpectedly closed" msgstr "Netzwerk-Stream wurde unerwartet geschlossen" -#: ../libsoup/soup-cache-input-stream.c:290 +#: ../libsoup/soup-cache-input-stream.c:291 msgid "Failed to completely cache the resource" msgstr "Das vollständige Zwischenspeichern der Ressource ist fehlgeschlagen" @@ -56,15 +57,15 @@ msgid "Unrecognized HTTP response encoding" msgstr "Unbekannte Kodierung der HTTP-Antwort" -#: ../libsoup/soup-message-io.c:854 ../libsoup/soup-message-io.c:890 -msgid "Operation was cancelled" -msgstr "Der Vorgang wurde abgebrochen" - -#: ../libsoup/soup-message-io.c:901 +#: ../libsoup/soup-message-io.c:392 ../libsoup/soup-message-io.c:1020 msgid "Operation would block" msgstr "Der Vorgang würde gestoppt werden" -#: ../libsoup/soup-message-server-io.c:41 +#: ../libsoup/soup-message-io.c:972 ../libsoup/soup-message-io.c:1005 +msgid "Operation was cancelled" +msgstr "Der Vorgang wurde abgebrochen" + +#: ../libsoup/soup-message-server-io.c:64 msgid "Could not parse HTTP request" msgstr "HTTP-Anfrage konnte nicht verarbeitet werden" @@ -78,42 +79,88 @@ msgid "Invalid '%s' URI: %s" msgstr "Ungültige »%s« Adresse: %s" -#: ../libsoup/soup-server.c:1528 +#: ../libsoup/soup-server.c:1711 msgid "Can't create a TLS server without a TLS certificate" msgstr "TLS-Server kann nicht ohne TLS-Zertifikat erstellt werden" -#: ../libsoup/soup-server.c:1547 +#: ../libsoup/soup-server.c:1730 #, c-format msgid "Could not listen on address %s, port %d" msgstr "Auf Adresse %s, Port %d kann nicht gehört werden" -#: ../libsoup/soup-session.c:4466 +#: ../libsoup/soup-session.c:4587 #, c-format msgid "Could not parse URI '%s'" msgstr "Die Adresse »%s« konnte nicht verarbeitet werden" -#: ../libsoup/soup-session.c:4503 +#: ../libsoup/soup-session.c:4624 #, c-format msgid "Unsupported URI scheme '%s'" msgstr "Nicht unterstütztes Adressenschema »%s«" -#: ../libsoup/soup-session.c:4525 +#: ../libsoup/soup-session.c:4646 #, c-format msgid "Not an HTTP URI" msgstr "Keine HTTP-Adresse" -#: ../libsoup/soup-socket.c:142 +#: ../libsoup/soup-session.c:4830 +msgid "The server did not accept the WebSocket handshake." +msgstr "Der Server hat den WebSocket-Handshake nicht angenommen." + +#: ../libsoup/soup-socket.c:148 msgid "Can't import non-socket as SoupSocket" msgstr "Nicht-Socket kann nicht als SoupSocket importiert werden" -#: ../libsoup/soup-socket.c:160 +#: ../libsoup/soup-socket.c:166 msgid "Could not import existing socket: " msgstr "Bestehendes Socket konnte nicht importieren werden: " -#: ../libsoup/soup-socket.c:169 +#: ../libsoup/soup-socket.c:175 msgid "Can't import unconnected socket" msgstr "Unverbundenes Socket kann nicht importiert werden" +#: ../libsoup/soup-websocket.c:338 ../libsoup/soup-websocket.c:347 +msgid "WebSocket handshake expected" +msgstr "WebSocket-Handshale erwartet" + +#: ../libsoup/soup-websocket.c:355 +msgid "Unsupported WebSocket version" +msgstr "Nicht unterstütze WebSocket-Version" + +#: ../libsoup/soup-websocket.c:364 +msgid "Invalid WebSocket key" +msgstr "Ungültiger WebSocket-Schlüssel" + +#: ../libsoup/soup-websocket.c:374 +#, c-format +msgid "Incorrect WebSocket \"%s\" header" +msgstr "Falscher WebSocket »%s«-Kopf" + +#: ../libsoup/soup-websocket.c:383 +msgid "Unsupported WebSocket subprotocol" +msgstr "Nicht unterstütztes WebSocket-Subprotokoll" + +#: ../libsoup/soup-websocket.c:510 +msgid "Server rejected WebSocket handshake" +msgstr "Server lehnte WebSocket-Handshake ab" + +#: ../libsoup/soup-websocket.c:518 ../libsoup/soup-websocket.c:527 +msgid "Server ignored WebSocket handshake" +msgstr "Server ignorierte WebSocket-Handshake" + +#: ../libsoup/soup-websocket.c:539 +msgid "Server requested unsupported protocol" +msgstr "Server forderte nicht unterstütztes Protokoll an" + +#: ../libsoup/soup-websocket.c:549 +msgid "Server requested unsupported extension" +msgstr "Server forderte nicht unterstützte Erweiterung an" + +#: ../libsoup/soup-websocket.c:562 +#, c-format +msgid "Server returned incorrect \"%s\" key" +msgstr "Server gab falschen »%s«-Schlüssel zurück" + #: ../libsoup/soup-tld.c:188 msgid "Hostname is an IP address" msgstr "Der Rechnername ist eine IP-Adresse" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/po/vi.po new/libsoup-2.52.1/po/vi.po --- old/libsoup-2.52.0/po/vi.po 2015-07-27 19:51:03.000000000 +0200 +++ new/libsoup-2.52.1/po/vi.po 2015-10-12 23:20:07.000000000 +0200 @@ -1,44 +1,47 @@ # Vietnamese translation for libsoup. -# Copyright (C) 2012 libsoup's COPYRIGHT HOLDER +# Bản dịch tiếng Việt dành cho libsoup. +# Copyright © 2015 GNOME i18n Project for Vietnamese. # This file is distributed under the same license as the libsoup package. # Nguyễn Thái Ngọc Duy <pclo...@gmail.com>, 2012-2013. +# Trần Ngọc Quân <vnwild...@gmail.com>, 2015. # msgid "" msgstr "" "Project-Id-Version: libsoup master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?" "product=libsoup&keywords=I18N+L10N&component=general\n" -"POT-Creation-Date: 2013-02-18 10:20+0000\n" -"PO-Revision-Date: 2013-03-02 20:44+0700\n" -"Last-Translator: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>\n" -"Language-Team: Vietnamese <gnomevi-l...@lists.sourceforge.net>\n" +"POT-Creation-Date: 2015-09-28 23:41+0000\n" +"PO-Revision-Date: 2015-09-29 07:41+0700\n" +"Last-Translator: Trần Ngọc Quân <vnwild...@gmail.com>\n" +"Language-Team: Vietnamese <gnome-vi-l...@gnome.org>\n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Gtranslator 2.91.7\n" -#: ../libsoup/soup-body-input-stream.c:141 -#: ../libsoup/soup-body-input-stream.c:172 -#: ../libsoup/soup-body-input-stream.c:205 ../libsoup/soup-message-io.c:191 +#: ../libsoup/soup-body-input-stream.c:140 +#: ../libsoup/soup-body-input-stream.c:171 +#: ../libsoup/soup-body-input-stream.c:204 ../libsoup/soup-message-io.c:235 msgid "Connection terminated unexpectedly" msgstr "Kết nối ngắt bất ngờ" -#: ../libsoup/soup-body-input-stream.c:463 +#: ../libsoup/soup-body-input-stream.c:462 msgid "Invalid seek request" -msgstr "Yêu cầu di chuyển (seek) không hợp lệ" +msgstr "Yêu cầu di chuyển vị trí đọc (seek) không hợp lệ" -#: ../libsoup/soup-body-input-stream.c:491 +#: ../libsoup/soup-body-input-stream.c:490 msgid "Cannot truncate SoupBodyInputStream" -msgstr "Không thể cắt SoupBodyInputStream" +msgstr "Không thể cắt ngắn SoupBodyInputStream" #: ../libsoup/soup-cache-input-stream.c:74 msgid "Network stream unexpectedly closed" -msgstr "Luồng mạng đóng bất ngờ" +msgstr "Luồng dữ liệu mạng đã đóng bất ngờ" #: ../libsoup/soup-cache-input-stream.c:291 msgid "Failed to completely cache the resource" -msgstr "Lỗi lưu tạm (cache) toàn bộ tài nguyên" +msgstr "Gặp lỗi khi lưu tạm (cache) toàn bộ tài nguyên" #: ../libsoup/soup-converter-wrapper.c:192 #, c-format @@ -53,15 +56,15 @@ msgid "Unrecognized HTTP response encoding" msgstr "Không nhận ra bảng mã phản hồi HTTP" -#: ../libsoup/soup-message-io.c:846 ../libsoup/soup-message-io.c:882 -msgid "Operation was cancelled" -msgstr "Thao tác bị huỷ" - -#: ../libsoup/soup-message-io.c:893 +#: ../libsoup/soup-message-io.c:392 ../libsoup/soup-message-io.c:1020 msgid "Operation would block" msgstr "Thao tác có thể treo" -#: ../libsoup/soup-message-server-io.c:40 +#: ../libsoup/soup-message-io.c:972 ../libsoup/soup-message-io.c:1005 +msgid "Operation was cancelled" +msgstr "Thao tác bị hủy" + +#: ../libsoup/soup-message-server-io.c:64 msgid "Could not parse HTTP request" msgstr "Không thể phân tích phản hồi HTTP" @@ -73,35 +76,102 @@ #: ../libsoup/soup-request.c:150 #, c-format msgid "Invalid '%s' URI: %s" -msgstr "URI '%s' không hợp lệ: %s" +msgstr "URI “%s” không hợp lệ: %s" + +#: ../libsoup/soup-server.c:1711 +msgid "Can't create a TLS server without a TLS certificate" +msgstr "Không thể tạo máy phục vụ TLS mà không có giấy chứng thực điện tử TLS" + +#: ../libsoup/soup-server.c:1730 +#, c-format +msgid "Could not listen on address %s, port %d" +msgstr "Không thể lắng nghe trên địa chỉ %s, cổng %d" -#: ../libsoup/soup-session.c:4209 +#: ../libsoup/soup-session.c:4543 #, c-format msgid "Could not parse URI '%s'" -msgstr "Không thể phân tích URI '%s'" +msgstr "Không thể phân tích URI “%s”" -#: ../libsoup/soup-session.c:4246 +#: ../libsoup/soup-session.c:4580 #, c-format msgid "Unsupported URI scheme '%s'" -msgstr "Không hỗ trợ kiểu URI '%s'" +msgstr "Không hỗ trợ kiểu URI “%s”" -#: ../libsoup/soup-session.c:4268 +#: ../libsoup/soup-session.c:4602 #, c-format msgid "Not an HTTP URI" -msgstr "Không phải HTTP URI" +msgstr "Không phải URI của HTTP" + +#: ../libsoup/soup-session.c:4788 +msgid "The server did not accept the WebSocket handshake." +msgstr "Máy chủ đã không chấp nhận bắt tay WebSocket" + +#: ../libsoup/soup-socket.c:148 +msgid "Can't import non-socket as SoupSocket" +msgstr "Không thể nhập vào SoupSocket một non-socket" + +#: ../libsoup/soup-socket.c:166 +msgid "Could not import existing socket: " +msgstr "Không thể nhập vào ổ cắm mạng đã có: " + +#: ../libsoup/soup-socket.c:175 +msgid "Can't import unconnected socket" +msgstr "Không thể nhập vào một ổ cắm mạng mà nó chưa kết nối" + +#: ../libsoup/soup-websocket.c:338 ../libsoup/soup-websocket.c:347 +msgid "WebSocket handshake expected" +msgstr "Cần bắt tay WebSocket" + +#: ../libsoup/soup-websocket.c:355 +msgid "Unsupported WebSocket version" +msgstr "Phiên bản WebSocket không được hỗ trợ" + +#: ../libsoup/soup-websocket.c:364 +msgid "Invalid WebSocket key" +msgstr "Khóa WebSocket không hợp lệ" + +#: ../libsoup/soup-websocket.c:374 +#, c-format +msgid "Incorrect WebSocket \"%s\" header" +msgstr "Phần đầu WebSocket \"%s\" không hợp lệ" + +#: ../libsoup/soup-websocket.c:383 +msgid "Unsupported WebSocket subprotocol" +msgstr "Không hỗ trợ giao thức phụ WebSocket" + +#: ../libsoup/soup-websocket.c:510 +msgid "Server rejected WebSocket handshake" +msgstr "Máy phục vụ từ chối bắt tay WebSocket" + +#: ../libsoup/soup-websocket.c:518 ../libsoup/soup-websocket.c:527 +msgid "Server ignored WebSocket handshake" +msgstr "Máy phục vụ bỏ qua bắt tay WebSocket" + +#: ../libsoup/soup-websocket.c:539 +msgid "Server requested unsupported protocol" +msgstr "Máy phục vụ đã yêu cầu giao thức không được hỗ trợ" + +#: ../libsoup/soup-websocket.c:549 +msgid "Server requested unsupported extension" +msgstr "Máy phục vụ đã yêu cầu phần mở rộng không được hỗ trợ" + +#: ../libsoup/soup-websocket.c:562 +#, c-format +msgid "Server returned incorrect \"%s\" key" +msgstr "Máy phục vụ trả về khóa \"%s\" không hợp lệ" -#: ../libsoup/soup-tld.c:185 +#: ../libsoup/soup-tld.c:188 msgid "Hostname is an IP address" msgstr "Tên máy là địa chỉ IP" -#: ../libsoup/soup-tld.c:206 +#: ../libsoup/soup-tld.c:198 ../libsoup/soup-tld.c:220 msgid "Invalid hostname" msgstr "Tên máy không hợp lệ" -#: ../libsoup/soup-tld.c:235 +#: ../libsoup/soup-tld.c:250 msgid "Hostname has no base domain" -msgstr "Tên máy không có miền cơ bản" +msgstr "Tên máy không có miền cơ sở" -#: ../libsoup/soup-tld.c:257 +#: ../libsoup/soup-tld.c:304 msgid "Not enough domains" msgstr "Không đủ miền" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/tests/auth-test.c new/libsoup-2.52.1/tests/auth-test.c --- old/libsoup-2.52.0/tests/auth-test.c 2015-07-27 19:51:03.000000000 +0200 +++ new/libsoup-2.52.1/tests/auth-test.c 2015-10-12 23:20:07.000000000 +0200 @@ -1183,6 +1183,17 @@ { NULL } }; +/* https://bugzilla.gnome.org/show_bug.cgi?id=755617 */ +static SoupAuthTest basic_root_pspace_test[] = { + { "Auth provided via URL, should succeed", + "BasicRoot", "1", TRUE, "01", SOUP_STATUS_OK }, + + { "Parent dir should automatically reuse auth", + "/", "1", FALSE, "1", SOUP_STATUS_OK }, + + { NULL } +}; + static void do_batch_tests (gconstpointer data) { @@ -1265,6 +1276,7 @@ g_test_add_data_func ("/auth/main-tests", main_tests, do_batch_tests); g_test_add_data_func ("/auth/relogin-tests", relogin_tests, do_batch_tests); + g_test_add_data_func ("/auth/basic-root-pspec-test", basic_root_pspace_test, do_batch_tests); g_test_add_func ("/auth/pipelined-auth", do_pipelined_auth_test); g_test_add_func ("/auth/digest-expiration", do_digest_expiration_test); g_test_add_func ("/auth/async-auth/good-password", do_async_auth_good_password_test); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/tests/httpd.conf.22.in new/libsoup-2.52.1/tests/httpd.conf.22.in --- old/libsoup-2.52.0/tests/httpd.conf.22.in 2015-07-27 19:51:03.000000000 +0200 +++ new/libsoup-2.52.1/tests/httpd.conf.22.in 2015-10-12 23:20:07.000000000 +0200 @@ -171,6 +171,7 @@ Alias /Basic/realm2 . Alias /Basic/realm3 . Alias /Basic . +Alias /BasicRoot . <Location /Basic/realm1> AuthType Basic @@ -221,6 +222,13 @@ Require user user3 </Location> +<Location /BasicRoot> + AuthType Basic + AuthName realm1 + AuthUserFile ./htpasswd + Require user user1 +</Location> + # Digest auth tests Alias /Digest/realm1/realm2/realm1 . Alias /Digest/realm1/realm2 . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/tests/httpd.conf.24.in new/libsoup-2.52.1/tests/httpd.conf.24.in --- old/libsoup-2.52.0/tests/httpd.conf.24.in 2015-07-27 19:51:03.000000000 +0200 +++ new/libsoup-2.52.1/tests/httpd.conf.24.in 2015-10-12 23:20:07.000000000 +0200 @@ -155,6 +155,7 @@ Alias /Basic/realm2 . Alias /Basic/realm3 . Alias /Basic . +Alias /BasicRoot . <Location /Basic/realm1> AuthType Basic @@ -205,6 +206,13 @@ Require user user3 </Location> +<Location /BasicRoot> + AuthType Basic + AuthName realm1 + AuthUserFile ./htpasswd + Require user user1 +</Location> + # Digest auth tests Alias /Digest/realm1/realm2/realm1 . Alias /Digest/realm1/realm2 . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/tests/ntlm-test.c new/libsoup-2.52.1/tests/ntlm-test.c --- old/libsoup-2.52.0/tests/ntlm-test.c 2015-07-27 19:51:03.000000000 +0200 +++ new/libsoup-2.52.1/tests/ntlm-test.c 2015-10-12 23:24:32.000000000 +0200 @@ -379,7 +379,7 @@ * asking. */ authenticated_ntlm = FALSE; - do_message (session, base_uri, "/noauth", + do_message (session, base_uri, "/noauth/", FALSE, use_ntlm, FALSE, FALSE, SOUP_STATUS_OK); @@ -395,7 +395,7 @@ * previous step, then we'll just immediately get a 401 here. * So in no case will we see the client try to do_ntlm. */ - do_message (session, base_uri, "/alice", + do_message (session, base_uri, "/alice/", !alice_via_ntlm, FALSE, !alice_via_ntlm, alice_via_basic, alice ? SOUP_STATUS_OK : @@ -415,7 +415,7 @@ SOUP_STATUS_UNAUTHORIZED); /* 4. Should be exactly the same as #3, except the status code */ - do_message (session, base_uri, "/alice", + do_message (session, base_uri, "/alice/", !alice, bob_via_ntlm, !alice, alice_via_basic, alice ? SOUP_STATUS_OK : @@ -427,7 +427,7 @@ * (and fail). Bob-via-NTLM will try to do NTLM right away and * succeed. */ - do_message (session, base_uri, "/bob", + do_message (session, base_uri, "/bob/", !bob_via_ntlm, bob_via_ntlm, !bob_via_ntlm, alice_via_basic, bob ? SOUP_STATUS_OK : @@ -439,7 +439,7 @@ * still knows about this path, so will try Basic right away * and succeed. */ - do_message (session, base_uri, "/alice", + do_message (session, base_uri, "/alice/", !alice_via_ntlm, alice_via_ntlm, !alice_via_ntlm, alice_via_basic, alice ? SOUP_STATUS_OK : @@ -449,7 +449,7 @@ * Since Bob-via-NTLM is unauthenticated at this point, he'll try * NTLM before realizing that the server doesn't support it. */ - do_message (session, base_uri, "/basic", + do_message (session, base_uri, "/basic/", FALSE, bob_via_ntlm, TRUE, user != NULL, user != NULL ? SOUP_STATUS_OK : @@ -460,7 +460,7 @@ * previous NTLM connections will have been closed by the 401 * from /basic). Non-NTLM users will be prompted for either. */ - do_message (session, base_uri, "/either", + do_message (session, base_uri, "/either/", !use_ntlm, use_ntlm, !use_ntlm, !use_ntlm && user != NULL, user != NULL ? SOUP_STATUS_OK : diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libsoup-2.52.0/tests/proxy-test.c new/libsoup-2.52.1/tests/proxy-test.c --- old/libsoup-2.52.0/tests/proxy-test.c 2015-07-27 19:51:03.000000000 +0200 +++ new/libsoup-2.52.1/tests/proxy-test.c 2015-10-12 23:20:07.000000000 +0200 @@ -322,6 +322,84 @@ soup_test_session_abort_unref (session); } +static void +do_proxy_auth_request (const char *url, SoupSession *session, gboolean do_read) +{ + SoupRequest *request; + SoupMessage *msg; + GInputStream *stream; + GError *error = NULL; + + request = soup_session_request (session, url, NULL); + msg = soup_request_http_get_message (SOUP_REQUEST_HTTP (request)); + + stream = soup_test_request_send (request, NULL, 0, &error); + g_assert_no_error (error); + g_clear_error (&error); + + if (do_read) { + char buffer[256]; + gsize nread; + + do { + g_input_stream_read_all (stream, buffer, sizeof (buffer), &nread, + NULL, &error); + g_assert_no_error (error); + g_clear_error (&error); + } while (nread > 0); + } + + soup_test_request_close_stream (request, stream, NULL, &error); + g_assert_no_error (error); + g_clear_error (&error); + g_object_unref (stream); + + debug_printf (1, " %d %s\n", msg->status_code, msg->reason_phrase); + soup_test_assert_message_status (msg, SOUP_STATUS_OK); + + g_object_unref (msg); + g_object_unref (request); +} + +static void +do_proxy_auth_cache_test (void) +{ + SoupSession *session; + char *cache_dir; + SoupCache *cache; + char *url; + + g_test_bug ("756076"); + + SOUP_TEST_SKIP_IF_NO_APACHE; + + cache_dir = g_dir_make_tmp ("cache-test-XXXXXX", NULL); + debug_printf (2, " Caching to %s\n", cache_dir); + cache = soup_cache_new (cache_dir, SOUP_CACHE_SINGLE_USER); + g_free (cache_dir); + + session = soup_test_session_new (SOUP_TYPE_SESSION_ASYNC, + SOUP_SESSION_PROXY_RESOLVER, proxy_resolvers[AUTH_PROXY], + SOUP_SESSION_USE_THREAD_CONTEXT, TRUE, + SOUP_SESSION_ADD_FEATURE, cache, + NULL); + g_signal_connect (session, "authenticate", + G_CALLBACK (authenticate), NULL); + + url = g_strconcat (HTTP_SERVER, "/Basic/realm1/", NULL); + + debug_printf (1, " GET %s via %s (from network)\n", url, proxy_names[AUTH_PROXY]); + do_proxy_auth_request (url, session, TRUE); + soup_cache_flush (cache); + + debug_printf (1, " GET %s via %s (from cache)\n", url, proxy_names[AUTH_PROXY]); + do_proxy_auth_request (url, session, FALSE); + + g_free (url); + soup_test_session_abort_unref (session); + g_object_unref (cache); +} + int main (int argc, char **argv) { @@ -355,6 +433,7 @@ g_test_add_data_func ("/proxy/fragment", base_uri, do_proxy_fragment_test); g_test_add_func ("/proxy/redirect", do_proxy_redirect_test); + g_test_add_func ("/proxy/auth-cache", do_proxy_auth_cache_test); ret = g_test_run ();