Hello community, here is the log from the commit of package gupnp for openSUSE:Factory checked in at 2013-10-17 14:14:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gupnp (Old) and /work/SRC/openSUSE:Factory/.gupnp.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gupnp" Changes: -------- --- /work/SRC/openSUSE:Factory/gupnp/gupnp.changes 2013-09-11 12:10:55.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.gupnp.new/gupnp.changes 2013-10-17 17:38:36.000000000 +0200 @@ -1,0 +2,13 @@ +Wed Oct 16 13:49:12 UTC 2013 - dims...@opensuse.org + +- Update to version 0.20.7: + + Fix GCC warnings about local includes. + + Do not hand out libxml2-allocated strings. + + Fix a crash when a notification host was not available. + + Always call action call-back asynchronously, even when there + was an error. + + Add performance measurement options to light-server/-client. + + Bugs fixed: bgo#669729, bgo#703263, bgo#708162, bgo#708575, + bgo#708751. + +------------------------------------------------------------------- Old: ---- gupnp-0.20.6.tar.xz New: ---- gupnp-0.20.7.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gupnp.spec ++++++ --- /var/tmp/diff_new_pack.j30acv/_old 2013-10-17 17:38:37.000000000 +0200 +++ /var/tmp/diff_new_pack.j30acv/_new 2013-10-17 17:38:37.000000000 +0200 @@ -17,7 +17,7 @@ Name: gupnp -Version: 0.20.6 +Version: 0.20.7 Release: 0 Summary: Implementation of the UPnP specification License: LGPL-2.0+ ++++++ gupnp-0.20.6.tar.xz -> gupnp-0.20.7.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.6/NEWS new/gupnp-0.20.7/NEWS --- old/gupnp-0.20.6/NEWS 2013-09-03 14:08:26.000000000 +0200 +++ new/gupnp-0.20.7/NEWS 2013-10-16 14:54:58.000000000 +0200 @@ -1,3 +1,25 @@ +0.20.7 +====== + +Changes since 0.20.6: +- Fix GCC warnings about local includes. +- Do not hand out libxml2-allocated strings. +- Fix a crash when a notification host was not available. +- Always call action call-back asynchronously, even when there was an error. +- Add performance measurement options to light-server/-client. + +Bugs fixed in this release: + - https://bugzilla.gnome.org/show_bug.cgi?id=669729 + - https://bugzilla.gnome.org/show_bug.cgi?id=703263 + - https://bugzilla.gnome.org/show_bug.cgi?id=708162 + - https://bugzilla.gnome.org/show_bug.cgi?id=708575 + - https://bugzilla.gnome.org/show_bug.cgi?id=708751 + +All contributors to this release: + - Jens Georg <m...@jensge.org> + - Andrzej Bieniek <andyh...@gmail.com> + - Emanuele Aina <emanuele.a...@collabora.com> + 0.20.6 ====== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.6/configure new/gupnp-0.20.7/configure --- old/gupnp-0.20.6/configure 2013-09-03 14:09:00.000000000 +0200 +++ new/gupnp-0.20.7/configure 2013-10-16 14:59:17.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for gupnp 0.20.6. +# Generated by GNU Autoconf 2.69 for gupnp 0.20.7. # # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=gupnp&component=gupnp>. # @@ -651,8 +651,8 @@ # Identity of this package. PACKAGE_NAME='gupnp' PACKAGE_TARNAME='gupnp' -PACKAGE_VERSION='0.20.6' -PACKAGE_STRING='gupnp 0.20.6' +PACKAGE_VERSION='0.20.7' +PACKAGE_STRING='gupnp 0.20.7' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=gupnp&component=gupnp' PACKAGE_URL='http://www.gupnp.org/' @@ -1454,7 +1454,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 gupnp 0.20.6 to adapt to many kinds of systems. +\`configure' configures gupnp 0.20.7 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1525,7 +1525,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gupnp 0.20.6:";; + short | recursive ) echo "Configuration of gupnp 0.20.7:";; esac cat <<\_ACEOF @@ -1667,7 +1667,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gupnp configure 0.20.6 +gupnp configure 0.20.7 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1945,7 +1945,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by gupnp $as_me 0.20.6, which was +It was created by gupnp $as_me 0.20.7, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2928,7 +2928,7 @@ # Define the identity of the package. PACKAGE='gupnp' - VERSION='0.20.6' + VERSION='0.20.7' cat >>confdefs.h <<_ACEOF @@ -13860,7 +13860,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by gupnp $as_me 0.20.6, which was +This file was extended by gupnp $as_me 0.20.7, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13927,7 +13927,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -gupnp config.status 0.20.6 +gupnp config.status 0.20.7 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/gupnp-0.20.6/configure.ac new/gupnp-0.20.7/configure.ac --- old/gupnp-0.20.6/configure.ac 2013-08-20 15:28:50.000000000 +0200 +++ new/gupnp-0.20.7/configure.ac 2013-10-09 09:50:32.000000000 +0200 @@ -1,6 +1,6 @@ AC_PREREQ([2.64]) AC_INIT([gupnp], - [0.20.6], + [0.20.7], [http://bugzilla.gnome.org/enter_bug.cgi?product=gupnp&component=gupnp], [gupnp], [http://www.gupnp.org/]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.6/doc/html/client-tutorial.html new/gupnp-0.20.7/doc/html/client-tutorial.html --- old/gupnp-0.20.6/doc/html/client-tutorial.html 2013-09-03 14:14:28.000000000 +0200 +++ new/gupnp-0.20.7/doc/html/client-tutorial.html 2013-10-16 15:04:27.000000000 +0200 @@ -24,7 +24,7 @@ <a name="client-tutorial"></a>Writing a UPnP Client</h2></div></div></div> <div class="simplesect"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id588343"></a>Introduction</h2></div></div></div> +<a name="id447881"></a>Introduction</h2></div></div></div> <p> This chapter explains how to write an application which fetches the external IP address from an UPnP-compliant modem. To do this a @@ -41,7 +41,7 @@ </div> <div class="simplesect"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id577488"></a>Finding Services</h2></div></div></div> +<a name="id431674"></a>Finding Services</h2></div></div></div> <p> First, we initialize GUPnP and create a control point targeting the service type. Then we connect a signal handler so that we are notified @@ -104,7 +104,7 @@ </div> <div class="simplesect"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id582697"></a>Invoking Actions</h2></div></div></div> +<a name="id413285"></a>Invoking Actions</h2></div></div></div> <p> Now we have an application which searches for the service we specified and calls <code class="function">service_proxy_available_cb</code> for each one it @@ -154,7 +154,7 @@ </div> <div class="simplesect"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id576655"></a>Subscribing to state variable change notifications</h2></div></div></div> +<a name="id440548"></a>Subscribing to state variable change notifications</h2></div></div></div> <p> It is possible to get change notifications for the service state variables that have attribute <code class="literal">sendEvents="yes"</code>. We'll demonstrate @@ -189,7 +189,7 @@ </div> <div class="simplesect"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id577039"></a>Generating Wrappers</h2></div></div></div> +<a name="id421575"></a>Generating Wrappers</h2></div></div></div> <p> Using <a class="link" href="GUPnPServiceProxy.html#gupnp-service-proxy-send-action" title="gupnp_service_proxy_send_action ()"><code class="function">gupnp_service_proxy_send_action()</code></a> and <a class="link" href="GUPnPServiceProxy.html#gupnp-service-proxy-add-notify" title="gupnp_service_proxy_add_notify ()"><code class="function">gupnp_service_proxy_add_notify()</code></a> can become tedious, because of the requirement to specify the types and deal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.6/doc/html/gupnp-binding-tool.html new/gupnp-0.20.7/doc/html/gupnp-binding-tool.html --- old/gupnp-0.20.6/doc/html/gupnp-binding-tool.html 2013-09-03 14:14:28.000000000 +0200 +++ new/gupnp-0.20.7/doc/html/gupnp-binding-tool.html 2013-10-16 15:04:27.000000000 +0200 @@ -33,7 +33,7 @@ <div class="cmdsynopsis"><p><code class="command">gupnp-binding-tool</code> [--prefix {PREFIX}] [--mode {client|server}] {SCPD file}</p></div> </div> <div class="refsect1"> -<a name="id586436"></a><h2>Description</h2> +<a name="id425503"></a><h2>Description</h2> <p> <span class="command"><strong>gupnp-binding-tool</strong></span> takes a <a class="glossterm" href="glossary.html#scpd"><em class="glossterm">SCPD file</em></a> and generates convenience C functions which call the actual GUPnP functions. The client-side bindings can be seen @@ -49,7 +49,7 @@ </p> </div> <div class="refsect1"> -<a name="id577144"></a><h2>Client side bindings</h2> +<a name="id422377"></a><h2>Client side bindings</h2> <p> As an example, this action: </p> @@ -138,7 +138,7 @@ </p> </div> <div class="refsect1"> -<a name="id596642"></a><h2>Server side bindings</h2> +<a name="id416406"></a><h2>Server side bindings</h2> <p> The corresponding server bindings for the same UPnP action (DeletePortMapping) look like this: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.6/doc/html/index.html new/gupnp-0.20.7/doc/html/index.html --- old/gupnp-0.20.6/doc/html/index.html 2013-09-03 14:14:28.000000000 +0200 +++ new/gupnp-0.20.7/doc/html/index.html 2013-10-16 15:04:27.000000000 +0200 @@ -14,11 +14,11 @@ <div class="titlepage"> <div> <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GUPnP Reference Manual</p></th></tr></table></div> -<div><p class="releaseinfo">Version 0.20.6 +<div><p class="releaseinfo">Version 0.20.7 </p></div> <div><p class="copyright">Copyright © 2007, 2008, 2009 OpenedHand Ltd, Nokia Corporation</p></div> <div><div class="legalnotice"> -<a name="id518626"></a><p> +<a name="id365636"></a><p> Permission is granted to copy, distribute and/or modify this document under the terms of the <em class="citetitle">GNU Free Documentation License</em>, Version 1.1 or any later diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.6/doc/html/ix01.html new/gupnp-0.20.7/doc/html/ix01.html --- old/gupnp-0.20.6/doc/html/ix01.html 2013-09-03 14:14:28.000000000 +0200 +++ new/gupnp-0.20.7/doc/html/ix01.html 2013-10-16 15:04:27.000000000 +0200 @@ -20,7 +20,7 @@ </tr></table> <div class="index"> <div class="titlepage"><div><div><h2 class="title"> -<a name="id512809"></a>Index</h2></div></div></div> +<a name="id364688"></a>Index</h2></div></div></div> <div class="index"><div class="indexdiv"> <h3>G</h3> <dl> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.6/doc/html/server-tutorial.html new/gupnp-0.20.7/doc/html/server-tutorial.html --- old/gupnp-0.20.6/doc/html/server-tutorial.html 2013-09-03 14:14:28.000000000 +0200 +++ new/gupnp-0.20.7/doc/html/server-tutorial.html 2013-10-16 15:04:27.000000000 +0200 @@ -24,7 +24,7 @@ <a name="server-tutorial"></a>Writing a UPnP Service</h2></div></div></div> <div class="simplesect"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id578921"></a>Introduction</h2></div></div></div> +<a name="id417418"></a>Introduction</h2></div></div></div> <p> This chapter explains how to implement a UPnP service using GUPnP. For this example we will create a virtual UPnP-enabled light bulb. @@ -42,7 +42,7 @@ </div> <div class="simplesect"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id581612"></a>Defining the Device</h2></div></div></div> +<a name="id445880"></a>Defining the Device</h2></div></div></div> <p> The first step is to write the <em class="firstterm">device description</em> file. This is a short XML document which describes the device and what @@ -118,7 +118,7 @@ </div> <div class="simplesect"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id579657"></a>Defining Services</h2></div></div></div> +<a name="id410736"></a>Defining Services</h2></div></div></div> <p> Because we are using a standard service we can use the service description from the specification. This is the <code class="literal">SwitchPower1</code> @@ -211,7 +211,7 @@ </div> <div class="simplesect"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id580127"></a>Implementing the Device</h2></div></div></div> +<a name="id446477"></a>Implementing the Device</h2></div></div></div> <p> Before starting to implement the device, some boilerplate code is needed to initialise GUPnP. GLib types and threading needs to be initialised, @@ -245,7 +245,7 @@ </div> <div class="simplesect"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id594925"></a>Implementing a Service</h2></div></div></div> +<a name="id413944"></a>Implementing a Service</h2></div></div></div> <p> To implement a service we first fetch the <a class="link" href="GUPnPService.html" title="GUPnPService"><span class="type">GUPnPService</span></a> from the root device using <a class="link" href="GUPnPDeviceInfo.html#gupnp-device-info-get-service" title="gupnp_device_info_get_service ()"><code class="function">gupnp_device_info_get_service()</code></a> (<a class="link" href="GUPnPRootDevice.html" title="GUPnPRootDevice"><span class="type">GUPnPRootDevice</span></a> is a @@ -354,7 +354,7 @@ </div> <div class="simplesect"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id554949"></a>Generating Service-specific Wrappers</h2></div></div></div> +<a name="id405822"></a>Generating Service-specific Wrappers</h2></div></div></div> <p> Using service-specific wrappers can simplify the implementation of a service. Wrappers can be generated with <a class="xref" href="gupnp-binding-tool.html" title="gupnp-binding-tool"><span class="refentrytitle">gupnp-binding-tool</span>(1)</a> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.6/examples/light-client.c new/gupnp-0.20.7/examples/light-client.c --- old/gupnp-0.20.6/examples/light-client.c 2013-05-29 13:41:51.000000000 +0200 +++ new/gupnp-0.20.7/examples/light-client.c 2013-10-16 14:50:43.000000000 +0200 @@ -20,9 +20,21 @@ TOGGLE } mode; +static gboolean quiet; +static gint repeat_counter = 1; +static gint repeat_delay; + +static GOptionEntry entries[] = +{ + { "quiet", 'q', 0, G_OPTION_ARG_NONE, &quiet, "Turn off output", NULL }, + { "repeat-counter", 'c', 0, G_OPTION_ARG_INT, &repeat_counter, "Repeat counter", "value" }, + { "repeat-delay", 'd', 0, G_OPTION_ARG_INT, &repeat_delay, "Delay in [ms] between each iteration", "value" }, + { NULL } +}; + + static void -service_proxy_available_cb (G_GNUC_UNUSED GUPnPControlPoint *cp, - GUPnPServiceProxy *proxy) +send_cmd (GUPnPServiceProxy *proxy) { GError *error = NULL; gboolean target; @@ -51,12 +63,16 @@ NULL)) { goto error; } else { - g_print ("Set switch to %s.\n", target ? "on" : "off"); + if (!quiet) { + g_print ("Set switch to %s.\n", target ? "on" : "off"); + } } done: /* Only manipulate the first light switch that is found */ - g_main_loop_quit (main_loop); + if (--repeat_counter <= 0) { + g_main_loop_quit (main_loop); + } return; error: @@ -65,15 +81,41 @@ goto done; } +static gboolean timeout_func (gpointer user_data) +{ + GUPnPServiceProxy *proxy = (GUPnPServiceProxy *) user_data; + + send_cmd (proxy); + return TRUE; +} + static void -usage (void) +service_proxy_available_cb (G_GNUC_UNUSED GUPnPControlPoint *cp, + GUPnPServiceProxy *proxy) { - g_printerr ("$ light-client [on|off|toggle]\n"); + if (repeat_counter>0) + { + send_cmd (proxy); + g_timeout_add (repeat_delay, timeout_func, proxy); + } else { + g_main_loop_quit (main_loop); + } +} + +static void +usage (GOptionContext *optionContext) +{ + gchar *help_text; + + help_text = g_option_context_get_help (optionContext, TRUE, NULL); + g_printerr ("%s", help_text); + g_free (help_text); } int main (int argc, char **argv) { + GOptionContext *optionContext; GError *error = NULL; GUPnPContext *context; GUPnPControlPoint *cp; @@ -82,10 +124,17 @@ g_type_init (); #endif + optionContext = g_option_context_new ("[on|off|toggle]"); + g_option_context_add_main_entries (optionContext, entries, NULL); + if (!g_option_context_parse (optionContext, &argc, &argv, &error)) + { + g_print ("option parsing failed: %s\n", error->message); + exit (1); + } /* Check and parse command line arguments */ if (argc != 2) { - usage (); + usage (optionContext); return EXIT_FAILURE; } @@ -96,7 +145,7 @@ } else if (g_str_equal (argv[1], "toggle")) { mode = TOGGLE; } else { - usage (); + usage (optionContext); return EXIT_FAILURE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.6/examples/light-server.c new/gupnp-0.20.7/examples/light-server.c --- old/gupnp-0.20.6/examples/light-server.c 2013-05-29 13:41:51.000000000 +0200 +++ new/gupnp-0.20.7/examples/light-server.c 2013-10-16 14:50:44.000000000 +0200 @@ -14,6 +14,13 @@ #include <gmodule.h> static gboolean status; +static gboolean quiet; + +static GOptionEntry entries[] = +{ + { "quiet", 'q', 0, G_OPTION_ARG_NONE, &quiet, "Turn off output", NULL }, + { NULL } +}; G_BEGIN_DECLS G_MODULE_EXPORT void set_target_cb (GUPnPService *service, @@ -55,7 +62,10 @@ "Status", G_TYPE_BOOLEAN, status, NULL); - g_print ("The light is now %s.\n", status ? "on" : "off"); + if (!quiet) + { + g_print ("The light is now %s.\n", status ? "on" : "off"); + } } /* Return success to the client */ @@ -116,6 +126,7 @@ int main (G_GNUC_UNUSED int argc, G_GNUC_UNUSED char **argv) { + GOptionContext *optionContext; GMainLoop *main_loop; GError *error = NULL; GUPnPContext *context; @@ -126,9 +137,20 @@ g_type_init (); #endif + optionContext = g_option_context_new (NULL); + g_option_context_add_main_entries (optionContext, entries, NULL); + if (!g_option_context_parse (optionContext, &argc, &argv, &error)) + { + g_print ("option parsing failed: %s\n", error->message); + exit (1); + } + /* By default the light is off */ status = FALSE; - g_print ("The light is now %s.\n", status ? "on" : "off"); + if (!quiet) + { + g_print ("The light is now %s.\n", status ? "on" : "off"); + } /* Create the UPnP context */ context = gupnp_context_new (NULL, NULL, 0, &error); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.6/libgupnp/gupnp-context-manager.c new/gupnp-0.20.7/libgupnp/gupnp-context-manager.c --- old/gupnp-0.20.6/libgupnp/gupnp-context-manager.c 2013-09-03 10:51:37.000000000 +0200 +++ new/gupnp-0.20.7/libgupnp/gupnp-context-manager.c 2013-10-09 09:50:32.000000000 +0200 @@ -47,6 +47,14 @@ #include "gupnp-unix-context-manager.h" +#ifdef G_OS_WIN32 +#include "gupnp-windows-context-manager.h" +#elif defined(USE_NETWORK_MANAGER) +#include "gupnp-network-manager.h" +#elif defined(USE_CONNMAN) +#include "gupnp-connman-manager.h" +#endif + G_DEFINE_ABSTRACT_TYPE (GUPnPContextManager, gupnp_context_manager, G_TYPE_OBJECT); @@ -526,19 +534,16 @@ #endif GUPnPContextManager *impl; GType impl_type = G_TYPE_INVALID; -#ifdef G_OS_WIN32 -#include "gupnp-windows-context-manager.h" +#ifdef G_OS_WIN32 impl_type = GUPNP_TYPE_WINDOWS_CONTEXT_MANAGER; #else -#ifdef USE_NETWORK_MANAGER -#include "gupnp-network-manager.h" +#if defined(USE_NETWORK_MANAGER) system_bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); if (gupnp_network_manager_is_available ()) impl_type = GUPNP_TYPE_NETWORK_MANAGER; -#elif USE_CONNMAN -#include "gupnp-connman-manager.h" +#elif defined(USE_CONNMAN) system_bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); if (gupnp_connman_manager_is_available ()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.6/libgupnp/gupnp-device-info.c new/gupnp-0.20.7/libgupnp/gupnp-device-info.c --- old/gupnp-0.20.6/libgupnp/gupnp-device-info.c 2013-08-17 16:21:55.000000000 +0200 +++ new/gupnp-0.20.7/libgupnp/gupnp-device-info.c 2013-10-09 09:50:32.000000000 +0200 @@ -952,9 +952,18 @@ for (element = element->children; element; element = element->next) { /* No early exit since the node explicitly may appear multiple * times: 7.2.10.3 */ - if (!strcmp ("X_DLNADOC", (char *) element->name)) + if (!strcmp ("X_DLNADOC", (char *) element->name)) { + xmlChar *content = NULL; + + content = xmlNodeGetContent (element); + + if (content == NULL) + continue; + list = g_list_prepend (list, - xmlNodeGetContent(element)); + g_strdup ((char *) content)); + xmlFree (content); + } } /* Return in order of appearance in document */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.6/libgupnp/gupnp-service-proxy.c new/gupnp-0.20.7/libgupnp/gupnp-service-proxy.c --- old/gupnp-0.20.6/libgupnp/gupnp-service-proxy.c 2013-08-20 09:47:23.000000000 +0200 +++ new/gupnp-0.20.7/libgupnp/gupnp-service-proxy.c 2013-10-16 14:48:25.000000000 +0200 @@ -970,6 +970,16 @@ xml_util_end_element (msg_str, arg_name); } +static gboolean +action_error_idle_cb (gpointer user_data) +{ + GUPnPServiceProxyAction *action = (GUPnPServiceProxyAction *) user_data; + + action->callback (action->proxy, action, action->user_data); + + return FALSE; +} + /** * gupnp_service_proxy_begin_action_valist: * @proxy: A #GUPnPServiceProxy @@ -1057,7 +1067,7 @@ ret = begin_action_msg (proxy, action, callback, user_data); if (ret->error) { - callback (proxy, ret, user_data); + g_idle_add (action_error_idle_cb, ret); return ret; } @@ -1115,7 +1125,7 @@ ret = begin_action_msg (proxy, action, callback, user_data); if (ret->error) { - callback (proxy, ret, user_data); + g_idle_add (action_error_idle_cb, ret); return ret; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.6/libgupnp/gupnp-service.c new/gupnp-0.20.7/libgupnp/gupnp-service.c --- old/gupnp-0.20.6/libgupnp/gupnp-service.c 2013-08-20 09:47:23.000000000 +0200 +++ new/gupnp-0.20.7/libgupnp/gupnp-service.c 2013-10-16 14:46:36.000000000 +0200 @@ -1840,23 +1840,20 @@ } else { /* Other failure: Try next callback or signal failure. */ if (data->callbacks->next) { - SoupURI *uri; - SoupSession *service_session; + SoupBuffer *buffer; + guint8 *property_set; + gsize length; /* Call next callback */ data->callbacks = data->callbacks->next; - uri = soup_uri_new (data->callbacks->data); - soup_message_set_uri (msg, uri); - soup_uri_free (uri); - - /* And re-queue */ - data->pending_messages = - g_list_prepend (data->pending_messages, msg); - - service_session = gupnp_service_get_session (data->service); - - soup_session_requeue_message (service_session, msg); + /* Get property-set from old message */ + buffer = soup_message_body_flatten (msg->request_body); + soup_buffer_get_data (buffer, + (const guint8 **) &property_set, + &length); + notify_subscriber (NULL, data, property_set); + soup_buffer_free (buffer); } else { /* Emit 'notify-failed' signal */ GError *error; -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org