Hello community,

here is the log from the commit of package glib-networking for openSUSE:Factory 
checked in at 2013-06-05 11:52:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/glib-networking (Old)
 and      /work/SRC/openSUSE:Factory/.glib-networking.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "glib-networking"

Changes:
--------
--- /work/SRC/openSUSE:Factory/glib-networking/glib-networking.changes  
2013-04-26 15:44:13.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.glib-networking.new/glib-networking.changes     
2013-06-05 11:52:14.000000000 +0200
@@ -1,0 +2,13 @@
+Wed May  1 08:16:29 UTC 2013 - [email protected]
+
+- Update to version 2.37.1:
+  + gnutls:
+    - bgo#695062: Fixed a hang while rehandshaking with gnutls 3.x.
+    - bgo#697754: Fixed a handshaking crash in multithreaded use.
+  + proxy/gnome:
+    - Fix "automatic" mode, which was mistakenly being treated as
+      "none".
+    - bgo#698936: Use this in Unity sessions as well as GNOME ones.
+  + Updated translations.
+
+-------------------------------------------------------------------

Old:
----
  glib-networking-2.36.1.tar.xz

New:
----
  glib-networking-2.37.1.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ glib-networking.spec ++++++
--- /var/tmp/diff_new_pack.HINYyD/_old  2013-06-05 11:52:15.000000000 +0200
+++ /var/tmp/diff_new_pack.HINYyD/_new  2013-06-05 11:52:15.000000000 +0200
@@ -17,12 +17,12 @@
 
 
 Name:           glib-networking
-Version:        2.36.1
+Version:        2.37.1
 Release:        0
 Summary:        Network-related GIO modules for glib
 License:        LGPL-2.1+
 Group:          System/Libraries
-Source:         
http://download.gnome.org/sources/glib-networking/2.36/%{name}-%{version}.tar.xz
+Source:         
http://download.gnome.org/sources/glib-networking/2.37/%{name}-%{version}.tar.xz
 Source99:       baselibs.conf
 # For directory ownership
 BuildRequires:  dbus-1

++++++ glib-networking-2.36.1.tar.xz -> glib-networking-2.37.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/glib-networking-2.36.1/NEWS 
new/glib-networking-2.37.1/NEWS
--- old/glib-networking-2.36.1/NEWS     2013-04-16 14:52:24.000000000 +0200
+++ new/glib-networking-2.37.1/NEWS     2013-04-30 22:26:59.000000000 +0200
@@ -1,4 +1,4 @@
-2.36.1
+2.37.1
 ======
   * gnutls: Fixed a bug that could cause hangs and/or bursts of CPU
     usage in some cases. (#696881, Olivier CrĂȘte)
@@ -6,6 +6,18 @@
   * gnutls: Fixed CFLAGS when building with gnutls in a different
     prefix. (#696519, Emmanuel Pacaud)
 
+  * gnutls: Fixed a hang while rehandshaking with gnutls 3.x (#695062,
+    Dan)
+
+  * gnutls: Fixed a handshaking crash in multithreaded use (#697754,
+    Olivier CrĂȘte)
+
+  * proxy/gnome: Fix "automatic" mode, which was mistakenly being
+    treated as "none" (Dan)
+
+  * proxy/gnome: Use this in Unity sessions as well as GNOME ones.
+    (#698936, Iain Lane)
+
   * New/Updated translations:
        Friulian, Indonesian, Turkish
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/glib-networking-2.36.1/configure 
new/glib-networking-2.37.1/configure
--- old/glib-networking-2.36.1/configure        2013-04-16 14:53:29.000000000 
+0200
+++ new/glib-networking-2.37.1/configure        2013-04-30 22:34:55.000000000 
+0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for glib-networking 2.36.1.
+# Generated by GNU Autoconf 2.69 for glib-networking 2.37.1.
 #
 # Report bugs to 
<http://bugzilla.gnome.org/enter_bug.cgi?product=glib&component=network>.
 #
@@ -591,8 +591,8 @@
 # Identity of this package.
 PACKAGE_NAME='glib-networking'
 PACKAGE_TARNAME='glib-networking'
-PACKAGE_VERSION='2.36.1'
-PACKAGE_STRING='glib-networking 2.36.1'
+PACKAGE_VERSION='2.37.1'
+PACKAGE_STRING='glib-networking 2.37.1'
 
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=glib&component=network'
 PACKAGE_URL=''
 
@@ -1412,7 +1412,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 glib-networking 2.36.1 to adapt to many kinds of 
systems.
+\`configure' configures glib-networking 2.37.1 to adapt to many kinds of 
systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1482,7 +1482,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of glib-networking 2.36.1:";;
+     short | recursive ) echo "Configuration of glib-networking 2.37.1:";;
    esac
   cat <<\_ACEOF
 
@@ -1622,7 +1622,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-glib-networking configure 2.36.1
+glib-networking configure 2.37.1
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1991,7 +1991,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by glib-networking $as_me 2.36.1, which was
+It was created by glib-networking $as_me 2.37.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2820,7 +2820,7 @@
 
 # Define the identity of the package.
  PACKAGE='glib-networking'
- VERSION='2.36.1'
+ VERSION='2.37.1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -15309,7 +15309,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by glib-networking $as_me 2.36.1, which was
+This file was extended by glib-networking $as_me 2.37.1, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15375,7 +15375,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-glib-networking config.status 2.36.1
+glib-networking config.status 2.37.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/glib-networking-2.36.1/configure.ac 
new/glib-networking-2.37.1/configure.ac
--- old/glib-networking-2.36.1/configure.ac     2013-04-16 14:49:39.000000000 
+0200
+++ new/glib-networking-2.37.1/configure.ac     2013-04-30 22:24:31.000000000 
+0200
@@ -1,7 +1,7 @@
 AC_PREREQ(2.65)
 AC_CONFIG_MACRO_DIR([m4])
 
-AC_INIT([glib-networking],[2.36.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=glib&component=network])
+AC_INIT([glib-networking],[2.37.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=glib&component=network])
 
 AC_CONFIG_SRCDIR([proxy/libproxy/glibproxyresolver.h])
 AC_CONFIG_HEADERS([config.h])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/glib-networking-2.36.1/proxy/gnome/gproxyresolvergnome.c 
new/glib-networking-2.37.1/proxy/gnome/gproxyresolvergnome.c
--- old/glib-networking-2.36.1/proxy/gnome/gproxyresolvergnome.c        
2013-02-21 13:00:06.000000000 +0100
+++ new/glib-networking-2.37.1/proxy/gnome/gproxyresolvergnome.c        
2013-04-30 15:29:57.000000000 +0200
@@ -225,14 +225,23 @@
       resolver->pacrunner = NULL;
     }
 
-  if (resolver->mode != G_DESKTOP_PROXY_MODE_MANUAL)
-    return;
-
   ignore_hosts =
     g_settings_get_strv (resolver->proxy_settings, 
GNOME_PROXY_IGNORE_HOSTS_KEY);
   g_simple_proxy_resolver_set_ignore_hosts (simple, ignore_hosts);
   g_strfreev (ignore_hosts);
 
+  if (resolver->mode == G_DESKTOP_PROXY_MODE_AUTO)
+    {
+      /* We use the base_resolver to handle ignore_hosts in the AUTO case,
+       * so we have to set a non-"direct://" default proxy so we can 
distinguish
+       * the two cases.
+       */
+       g_simple_proxy_resolver_set_default_proxy (simple, "use-proxy:");
+    }
+
+  if (resolver->mode != G_DESKTOP_PROXY_MODE_MANUAL)
+    return;
+
   host = g_settings_get_string (resolver->http_settings, 
GNOME_PROXY_HTTP_HOST_KEY);
   port = g_settings_get_int (resolver->http_settings, 
GNOME_PROXY_HTTP_PORT_KEY);
   if (host && *host)
@@ -304,7 +313,8 @@
 static gboolean
 g_proxy_resolver_gnome_is_supported (GProxyResolver *object)
 {
-  return !g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "gnome");
+  return !g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "gnome") ||
+         !g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "ubuntu");
 }
 
 static inline gchar **
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/glib-networking-2.36.1/tls/gnutls/gtlsconnection-gnutls.c 
new/glib-networking-2.37.1/tls/gnutls/gtlsconnection-gnutls.c
--- old/glib-networking-2.36.1/tls/gnutls/gtlsconnection-gnutls.c       
2013-04-16 14:49:30.000000000 +0200
+++ new/glib-networking-2.37.1/tls/gnutls/gtlsconnection-gnutls.c       
2013-04-16 15:10:17.000000000 +0200
@@ -134,6 +134,7 @@
   gboolean started_handshake, handshaking, ever_handshaked;
   GTask *implicit_handshake;
   GError *handshake_error;
+  GByteArray *app_data_buf;
 
   gboolean closing, closed;
 
@@ -297,6 +298,8 @@
   g_clear_object (&gnutls->priv->peer_certificate);
   g_clear_object (&gnutls->priv->peer_certificate_tmp);
 
+  g_clear_pointer (&gnutls->priv->app_data_buf, g_byte_array_unref);
+
 #ifdef HAVE_PKCS11
   p11_kit_pin_unregister_callback (gnutls->priv->interaction_id,
                                    on_pin_prompt_callback, gnutls);
@@ -544,7 +547,8 @@
            }
        }
 
-      if (gnutls->priv->need_finish_handshake)
+      if (gnutls->priv->need_finish_handshake &&
+         gnutls->priv->implicit_handshake)
        {
          GError *my_error = NULL;
          gboolean success;
@@ -736,11 +740,6 @@
       g_mutex_unlock (&gnutls->priv->op_mutex);
       return status;
     }
-  else if (status == GNUTLS_E_GOT_APPLICATION_DATA)
-    {
-      if (gnutls->priv->handshaking && G_IS_TLS_SERVER_CONNECTION (gnutls))
-       return GNUTLS_E_AGAIN;
-    }
   else if (
 #ifdef GNUTLS_E_PREMATURE_TERMINATION
           status == GNUTLS_E_PREMATURE_TERMINATION
@@ -1167,6 +1166,20 @@
 
   BEGIN_GNUTLS_IO (gnutls, G_IO_IN | G_IO_OUT, TRUE, cancellable);
   ret = gnutls_handshake (gnutls->priv->session);
+  if (ret == GNUTLS_E_GOT_APPLICATION_DATA)
+    {
+      guint8 buf[1024];
+
+      /* Got app data while waiting for rehandshake; buffer it and try again */
+      ret = gnutls_record_recv (gnutls->priv->session, buf, sizeof (buf));
+      if (ret > -1)
+       {
+         if (!gnutls->priv->app_data_buf)
+           gnutls->priv->app_data_buf = g_byte_array_new ();
+         g_byte_array_append (gnutls->priv->app_data_buf, buf, ret);
+         ret = GNUTLS_E_AGAIN;
+       }
+    }
   END_GNUTLS_IO (gnutls, G_IO_IN | G_IO_OUT, ret,
                 _("Error performing TLS handshake: %s"), &error);
 
@@ -1438,6 +1451,17 @@
 {
   gssize ret;
 
+  if (gnutls->priv->app_data_buf && !gnutls->priv->handshaking)
+    {
+      ret = MIN (count, gnutls->priv->app_data_buf->len);
+      memcpy (buffer, gnutls->priv->app_data_buf->data, ret);
+      if (ret == gnutls->priv->app_data_buf->len)
+       g_clear_pointer (&gnutls->priv->app_data_buf, g_byte_array_unref);
+      else
+       g_byte_array_remove_range (gnutls->priv->app_data_buf, 0, ret);
+      return ret;
+    }
+
  again:
   if (!claim_op (gnutls, G_TLS_CONNECTION_GNUTLS_OP_READ,
                 blocking, cancellable, error))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/glib-networking-2.36.1/tls/tests/connection.c 
new/glib-networking-2.37.1/tls/tests/connection.c
--- old/glib-networking-2.36.1/tls/tests/connection.c   2013-04-16 
14:49:30.000000000 +0200
+++ new/glib-networking-2.37.1/tls/tests/connection.c   2013-04-16 
15:10:17.000000000 +0200
@@ -1006,6 +1006,60 @@
   g_main_context_unref (context);
 }
 
+static void
+test_write_during_handshake (TestConnection *test,
+                           gconstpointer   data)
+{
+  GIOStream *connection;
+  GError *error = NULL;
+  GMainContext *context;
+  GMainLoop *loop;
+  GOutputStream *ostream;
+
+  g_test_bug ("697754");
+
+  connection = start_async_server_and_connect_to_it (test, 
G_TLS_AUTHENTICATION_REQUESTED);
+  test->client_connection = g_tls_client_connection_new (connection, 
test->identity, &error);
+  g_assert_no_error (error);
+  g_object_unref (connection);
+
+  loop = g_main_loop_new (NULL, FALSE);
+  g_signal_connect (test->client_connection, "notify::accepted-cas",
+                    G_CALLBACK (quit_loop_on_notify), loop);
+
+  context = g_main_context_new ();
+  g_main_context_push_thread_default (context);
+  g_tls_connection_handshake_async (G_TLS_CONNECTION (test->client_connection),
+                                   G_PRIORITY_DEFAULT,
+                                   NULL, NULL, NULL);
+  g_main_context_pop_thread_default (context);
+
+  /* Now run the (default GMainContext) loop, which is needed for
+   * the server side of things. The client-side handshake will run in
+   * a thread, but its callback will never be invoked because its
+   * context isn't running.
+   */
+  g_main_loop_run (loop);
+  g_main_loop_unref (loop);
+
+  /* At this point handshake_thread() has started (and maybe
+   * finished), but handshake_thread_completed() (and thus
+   * finish_handshake()) has not yet run. Make sure close doesn't
+   * block.
+   */
+
+  ostream = g_io_stream_get_output_stream (test->client_connection);
+  g_output_stream_write (ostream, TEST_DATA, TEST_DATA_LENGTH,
+                        G_PRIORITY_DEFAULT, &error);
+  g_assert_no_error (error);
+
+  /* We have to let the handshake_async() call finish now, or
+   * teardown_connection() will assert.
+   */
+  g_main_context_iteration (context, TRUE);
+  g_main_context_unref (context);
+}
+
 int
 main (int   argc,
       char *argv[])
@@ -1049,6 +1103,8 @@
               setup_connection, test_close_immediately, teardown_connection);
   g_test_add ("/tls/connection/close-during-handshake", TestConnection, NULL,
               setup_connection, test_close_during_handshake, 
teardown_connection);
+  g_test_add ("/tls/connection/write-during-handshake", TestConnection, NULL,
+              setup_connection, test_write_during_handshake, 
teardown_connection);
 
   ret = g_test_run();
 

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to