Hello community, here is the log from the commit of package gupnp for openSUSE:Factory checked in at 2013-04-09 10:27:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gupnp (Old) and /work/SRC/openSUSE:Factory/.gupnp.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gupnp", Maintainer is "[email protected]" Changes: -------- --- /work/SRC/openSUSE:Factory/gupnp/gupnp.changes 2013-04-02 11:51:31.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.gupnp.new/gupnp.changes 2013-04-09 10:27:14.000000000 +0200 @@ -1,0 +2,10 @@ +Sat Apr 6 15:10:31 UTC 2013 - [email protected] + +- Update to version 0.20.2: + + Fix some typos in docs and warning messages. + + Fix argument order issue introduced with the va_list fix in + 0.20.1. + + Add some tests for this bug. + + Bugs fixed: bgo#695591, bgo#696762. + +------------------------------------------------------------------- Old: ---- gupnp-0.20.1.tar.xz New: ---- gupnp-0.20.2.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ gupnp.spec ++++++ --- /var/tmp/diff_new_pack.jUzAii/_old 2013-04-09 10:27:16.000000000 +0200 +++ /var/tmp/diff_new_pack.jUzAii/_new 2013-04-09 10:27:16.000000000 +0200 @@ -17,7 +17,7 @@ Name: gupnp -Version: 0.20.1 +Version: 0.20.2 Release: 0 Summary: Implementation of the UPnP specification License: LGPL-2.0+ ++++++ gupnp-0.20.1.tar.xz -> gupnp-0.20.2.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.1/NEWS new/gupnp-0.20.2/NEWS --- old/gupnp-0.20.1/NEWS 2013-03-06 11:24:33.000000000 +0100 +++ new/gupnp-0.20.2/NEWS 2013-04-05 13:36:40.000000000 +0200 @@ -1,3 +1,19 @@ +0.20.2 +====== + +Changes since 0.20.1: +- Fix some typos in docs and warning messages. +- Fix argument order issue introduced with the va_list fix in 0.20.1. +- Add some tests for this bug. + +Bugs fixed in this release: + - https://bugzilla.gnome.org/show_bug.cgi?id=695591 + - https://bugzilla.gnome.org/show_bug.cgi?id=696762 + +All contributors to this release: + Jens Georg <[email protected]> + Benjamin Kerensa <[email protected]> + 0.20.1 ====== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.1/configure new/gupnp-0.20.2/configure --- old/gupnp-0.20.1/configure 2013-03-06 11:26:12.000000000 +0100 +++ new/gupnp-0.20.2/configure 2013-04-05 13:37: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 gupnp 0.20.1. +# Generated by GNU Autoconf 2.69 for gupnp 0.20.2. # # 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.1' -PACKAGE_STRING='gupnp 0.20.1' +PACKAGE_VERSION='0.20.2' +PACKAGE_STRING='gupnp 0.20.2' PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=gupnp&component=gupnp' PACKAGE_URL='http://www.gupnp.org/' @@ -1460,7 +1460,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.1 to adapt to many kinds of systems. +\`configure' configures gupnp 0.20.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1531,7 +1531,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of gupnp 0.20.1:";; + short | recursive ) echo "Configuration of gupnp 0.20.2:";; esac cat <<\_ACEOF @@ -1673,7 +1673,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -gupnp configure 0.20.1 +gupnp configure 0.20.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1951,7 +1951,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.1, which was +It was created by gupnp $as_me 0.20.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2886,7 +2886,7 @@ # Define the identity of the package. PACKAGE='gupnp' - VERSION='0.20.1' + VERSION='0.20.2' cat >>confdefs.h <<_ACEOF @@ -13835,7 +13835,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.1, which was +This file was extended by gupnp $as_me 0.20.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13902,7 +13902,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.1 +gupnp config.status 0.20.2 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.1/configure.ac new/gupnp-0.20.2/configure.ac --- old/gupnp-0.20.1/configure.ac 2013-03-06 11:13:11.000000000 +0100 +++ new/gupnp-0.20.2/configure.ac 2013-04-05 13:36:40.000000000 +0200 @@ -1,6 +1,6 @@ AC_PREREQ([2.64]) AC_INIT([gupnp], - [0.20.1], + [0.20.2], [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.1/doc/html/client-tutorial.html new/gupnp-0.20.2/doc/html/client-tutorial.html --- old/gupnp-0.20.1/doc/html/client-tutorial.html 2013-03-06 11:39:36.000000000 +0100 +++ new/gupnp-0.20.2/doc/html/client-tutorial.html 2013-04-05 13:42:55.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="id462980"></a>Introduction</h2></div></div></div> +<a name="id598360"></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="id443326"></a>Finding Services</h2></div></div></div> +<a name="id602345"></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="id440342"></a>Invoking Actions</h2></div></div></div> +<a name="id576247"></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="id467974"></a>Subscribing to state variable change notifications</h2></div></div></div> +<a name="id574950"></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="id467560"></a>Generating Wrappers</h2></div></div></div> +<a name="id599291"></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.1/doc/html/gupnp-binding-tool.html new/gupnp-0.20.2/doc/html/gupnp-binding-tool.html --- old/gupnp-0.20.1/doc/html/gupnp-binding-tool.html 2013-03-06 11:39:36.000000000 +0100 +++ new/gupnp-0.20.2/doc/html/gupnp-binding-tool.html 2013-04-05 13:42:55.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="id467862"></a><h2>Description</h2> +<a name="id599965"></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="id481812"></a><h2>Client side bindings</h2> +<a name="id624727"></a><h2>Client side bindings</h2> <p> As an example, this action: </p> @@ -138,7 +138,7 @@ </p> </div> <div class="refsect1"> -<a name="id501402"></a><h2>Server side bindings</h2> +<a name="id627728"></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.1/doc/html/gupnp-gupnp-service-introspection.html new/gupnp-0.20.2/doc/html/gupnp-gupnp-service-introspection.html --- old/gupnp-0.20.1/doc/html/gupnp-gupnp-service-introspection.html 2013-03-06 11:39:36.000000000 +0100 +++ new/gupnp-0.20.2/doc/html/gupnp-gupnp-service-introspection.html 2013-04-05 13:42:55.000000000 +0200 @@ -334,7 +334,7 @@ </tr> <tr> <td><p><span class="term"><em class="parameter"><code>action_name</code></em> :</span></p></td> -<td>The name of the action to retreive</td> +<td>The name of the action to retrieve</td> </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> @@ -415,7 +415,7 @@ </tr> <tr> <td><p><span class="term"><em class="parameter"><code>variable_name</code></em> :</span></p></td> -<td>The name of the variable to retreive</td> +<td>The name of the variable to retrieve</td> </tr> <tr> <td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.1/doc/html/index.html new/gupnp-0.20.2/doc/html/index.html --- old/gupnp-0.20.1/doc/html/index.html 2013-03-06 11:39:36.000000000 +0100 +++ new/gupnp-0.20.2/doc/html/index.html 2013-04-05 13:42:55.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.1 +<div><p class="releaseinfo">Version 0.20.2 </p></div> <div><p class="copyright">Copyright © 2007, 2008, 2009 OpenedHand Ltd, Nokia Corporation</p></div> <div><div class="legalnotice"> -<a name="id396334"></a><p> +<a name="id529886"></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.1/doc/html/ix01.html new/gupnp-0.20.2/doc/html/ix01.html --- old/gupnp-0.20.1/doc/html/ix01.html 2013-03-06 11:39:36.000000000 +0100 +++ new/gupnp-0.20.2/doc/html/ix01.html 2013-04-05 13:42:55.000000000 +0200 @@ -20,7 +20,7 @@ </tr></table> <div class="index"> <div class="titlepage"><div><div><h2 class="title"> -<a name="id390549"></a>Index</h2></div></div></div> +<a name="id528631"></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.1/doc/html/server-tutorial.html new/gupnp-0.20.2/doc/html/server-tutorial.html --- old/gupnp-0.20.1/doc/html/server-tutorial.html 2013-03-06 11:39:36.000000000 +0100 +++ new/gupnp-0.20.2/doc/html/server-tutorial.html 2013-04-05 13:42:55.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="id464336"></a>Introduction</h2></div></div></div> +<a name="id599468"></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="id447794"></a>Defining the Device</h2></div></div></div> +<a name="id578186"></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="id472354"></a>Defining Services</h2></div></div></div> +<a name="id601658"></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="id454182"></a>Implementing the Device</h2></div></div></div> +<a name="id576166"></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, @@ -249,7 +249,7 @@ </div> <div class="simplesect"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id436458"></a>Implementing a Service</h2></div></div></div> +<a name="id602736"></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 @@ -358,7 +358,7 @@ </div> <div class="simplesect"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> -<a name="id474473"></a>Generating Service-specific Wrappers</h2></div></div></div> +<a name="id570038"></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.1/libgupnp/gupnp-service-introspection.c new/gupnp-0.20.2/libgupnp/gupnp-service-introspection.c --- old/gupnp-0.20.1/libgupnp/gupnp-service-introspection.c 2012-10-26 20:58:55.000000000 +0200 +++ new/gupnp-0.20.2/libgupnp/gupnp-service-introspection.c 2013-03-28 12:24:56.000000000 +0100 @@ -445,7 +445,7 @@ } if (type == G_TYPE_INVALID) { - g_warning ("Unkown type '%s' in the SCPD", data_type); + g_warning ("Unknown type '%s' in the SCPD", data_type); return FALSE; } @@ -851,7 +851,7 @@ /** * gupnp_service_introspection_get_state_variable: * @introspection: A #GUPnPServiceIntrospection - * @variable_name: The name of the variable to retreive + * @variable_name: The name of the variable to retrieve * * Returns the state variable by the name @variable_name in this service. * @@ -888,7 +888,7 @@ /** * gupnp_service_introspection_get_action: * @introspection: A #GUPnPServiceIntrospection - * @action_name: The name of the action to retreive + * @action_name: The name of the action to retrieve * * Returns the action by the name @action_name in this service. * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.1/libgupnp/gupnp-service-proxy.c new/gupnp-0.20.2/libgupnp/gupnp-service-proxy.c --- old/gupnp-0.20.1/libgupnp/gupnp-service-proxy.c 2013-03-06 11:05:52.000000000 +0100 +++ new/gupnp-0.20.2/libgupnp/gupnp-service-proxy.c 2013-04-05 12:33:55.000000000 +0200 @@ -461,7 +461,7 @@ /* Initializes hash table to hold arg names as keys and GValues of * given type and value. */ -#define VAR_ARGS_TO_IN_HASH_TABLE(var_args, hash) \ +#define VAR_ARGS_TO_IN_LIST(var_args, names, values) \ G_STMT_START { \ const gchar *arg_name = va_arg (var_args, const gchar *); \ \ @@ -476,7 +476,8 @@ G_VALUE_NOCOPY_CONTENTS, \ &error); \ if (error == NULL) { \ - g_hash_table_insert (hash, g_strdup (arg_name), value); \ + names = g_list_prepend (names, g_strdup (arg_name)); \ + values = g_list_prepend (values, value); \ } else { \ g_warning ("Failed to collect value of type %s for %s: %s", \ g_type_name (type), \ @@ -486,6 +487,8 @@ } \ arg_name = va_arg (var_args, const gchar *); \ } \ + names = g_list_reverse (names); \ + values = g_list_reverse (values); \ } G_STMT_END /* Puts values stored in hash table with GValues into var args. @@ -552,20 +555,22 @@ GError **error, va_list var_args) { - GHashTable *in_hash; - GHashTable *out_hash; + GList *in_names = NULL, *in_values = NULL; + GHashTable *out_hash = NULL; va_list var_args_copy; gboolean result; GError *local_error; + GMainLoop *main_loop; + GUPnPServiceProxyAction *handle; g_return_val_if_fail (GUPNP_IS_SERVICE_PROXY (proxy), FALSE); g_return_val_if_fail (action, FALSE); - in_hash = g_hash_table_new_full (g_str_hash, - g_str_equal, - g_free, - value_free); - VAR_ARGS_TO_IN_HASH_TABLE (var_args, in_hash); + + main_loop = g_main_loop_new (g_main_context_get_thread_default (), + TRUE); + + VAR_ARGS_TO_IN_LIST (var_args, in_names, in_values); G_VA_COPY (var_args_copy, var_args); out_hash = g_hash_table_new_full (g_str_hash, g_str_equal, @@ -574,11 +579,28 @@ VAR_ARGS_TO_OUT_HASH_TABLE (var_args, out_hash); local_error = NULL; - result = gupnp_service_proxy_send_action_hash (proxy, - action, - &local_error, - in_hash, - out_hash); + handle = gupnp_service_proxy_begin_action_list (proxy, + action, + in_names, + in_values, + stop_main_loop, + main_loop); + if (!handle) { + g_main_loop_unref (main_loop); + + return FALSE; + } + + /* Loop till we get a reply (or time out) */ + if (g_main_loop_is_running (main_loop)) + g_main_loop_run (main_loop); + + g_main_loop_unref (main_loop); + + result = gupnp_service_proxy_end_action_hash (proxy, + handle, + &local_error, + out_hash); if (local_error == NULL) { OUT_HASH_TABLE_TO_VAR_ARGS (out_hash, var_args_copy); @@ -586,7 +608,8 @@ g_propagate_error (error, local_error); } va_end (var_args_copy); - g_hash_table_unref (in_hash); + g_list_free_full (in_names, g_free); + g_list_free_full (in_values, value_free); g_hash_table_unref (out_hash); return result; @@ -969,24 +992,21 @@ va_list var_args) { GUPnPServiceProxyAction *ret; - GHashTable *in_hash; + GList *in_names = NULL, *in_values = NULL; g_return_val_if_fail (GUPNP_IS_SERVICE_PROXY (proxy), NULL); g_return_val_if_fail (action, NULL); g_return_val_if_fail (callback, NULL); - - in_hash = g_hash_table_new_full (g_str_hash, - g_str_equal, - g_free, - value_free); - VAR_ARGS_TO_IN_HASH_TABLE (var_args, in_hash); - ret = gupnp_service_proxy_begin_action_hash (proxy, + VAR_ARGS_TO_IN_LIST (var_args, in_names, in_values); + ret = gupnp_service_proxy_begin_action_list (proxy, action, + in_names, + in_values, callback, - user_data, - in_hash); - g_hash_table_unref (in_hash); + user_data); + g_list_free_full (in_names, g_free); + g_list_free_full (in_values, value_free); return ret; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.1/libgupnp/gupnp-service.c new/gupnp-0.20.2/libgupnp/gupnp-service.c --- old/gupnp-0.20.1/libgupnp/gupnp-service.c 2013-02-20 13:35:57.000000000 +0100 +++ new/gupnp-0.20.2/libgupnp/gupnp-service.c 2013-03-28 12:24:56.000000000 +0100 @@ -491,7 +491,7 @@ } if (!found) - g_warning ("Failed to retreive '%s' argument of '%s' action", + g_warning ("Failed to retrieve '%s' argument of '%s' action", argument, action->name); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.1/tests/gtest/Makefile.am new/gupnp-0.20.2/tests/gtest/Makefile.am --- old/gupnp-0.20.1/tests/gtest/Makefile.am 2012-12-09 21:05:27.000000000 +0100 +++ new/gupnp-0.20.2/tests/gtest/Makefile.am 2013-04-05 13:36:40.000000000 +0200 @@ -4,9 +4,10 @@ TESTS=$(check_PROGRAMS) -check_PROGRAMS = test-context +check_PROGRAMS = test-context test-bugs test_context_SOURCES = test-context.c +test_bugs_SOURCES = test-bugs.c endif LDADD = \ @@ -17,4 +18,4 @@ -I $(top_srcdir) \ -DDATA_PATH="\"$(srcdir)/data\"" -EXTRA_DIST=data/random4k.bin +EXTRA_DIST=data/random4k.bin data/ServiceBgo69762.xml data/TestBgo696762.xml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.1/tests/gtest/Makefile.in new/gupnp-0.20.2/tests/gtest/Makefile.in --- old/gupnp-0.20.1/tests/gtest/Makefile.in 2013-03-06 11:26:14.000000000 +0100 +++ new/gupnp-0.20.2/tests/gtest/Makefile.in 2013-04-05 13:37:16.000000000 +0200 @@ -51,7 +51,8 @@ build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -@HAVE_GTEST_TRUE@check_PROGRAMS = test-context$(EXEEXT) +@HAVE_GTEST_TRUE@check_PROGRAMS = test-context$(EXEEXT) \ +@HAVE_GTEST_TRUE@ test-bugs$(EXEEXT) subdir = tests/gtest DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 @@ -66,16 +67,22 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = +am__test_bugs_SOURCES_DIST = test-bugs.c +@HAVE_GTEST_TRUE@am_test_bugs_OBJECTS = test-bugs.$(OBJEXT) +test_bugs_OBJECTS = $(am_test_bugs_OBJECTS) +test_bugs_LDADD = $(LDADD) +am__DEPENDENCIES_1 = +test_bugs_DEPENDENCIES = $(top_builddir)/libgupnp/libgupnp-1.0.la \ + $(am__DEPENDENCIES_1) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent am__test_context_SOURCES_DIST = test-context.c @HAVE_GTEST_TRUE@am_test_context_OBJECTS = test-context.$(OBJEXT) test_context_OBJECTS = $(am_test_context_OBJECTS) test_context_LDADD = $(LDADD) -am__DEPENDENCIES_1 = test_context_DEPENDENCIES = $(top_builddir)/libgupnp/libgupnp-1.0.la \ $(am__DEPENDENCIES_1) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp am__depfiles_maybe = depfiles @@ -102,8 +109,9 @@ AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(test_context_SOURCES) -DIST_SOURCES = $(am__test_context_SOURCES_DIST) +SOURCES = $(test_bugs_SOURCES) $(test_context_SOURCES) +DIST_SOURCES = $(am__test_bugs_SOURCES_DIST) \ + $(am__test_context_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -269,6 +277,7 @@ @HAVE_GTEST_TRUE@TESTS = $(check_PROGRAMS) @HAVE_GTEST_TRUE@test_context_SOURCES = test-context.c +@HAVE_GTEST_TRUE@test_bugs_SOURCES = test-bugs.c LDADD = \ $(top_builddir)/libgupnp/libgupnp-1.0.la \ $(LIBGUPNP_LIBS) @@ -278,7 +287,7 @@ -I $(top_srcdir) \ -DDATA_PATH="\"$(srcdir)/data\"" -EXTRA_DIST = data/random4k.bin +EXTRA_DIST = data/random4k.bin data/ServiceBgo69762.xml data/TestBgo696762.xml all: all-am .SUFFIXES: @@ -322,6 +331,9 @@ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list +test-bugs$(EXEEXT): $(test_bugs_OBJECTS) $(test_bugs_DEPENDENCIES) $(EXTRA_test_bugs_DEPENDENCIES) + @rm -f test-bugs$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(test_bugs_OBJECTS) $(test_bugs_LDADD) $(LIBS) test-context$(EXEEXT): $(test_context_OBJECTS) $(test_context_DEPENDENCIES) $(EXTRA_test_context_DEPENDENCIES) @rm -f test-context$(EXEEXT) $(AM_V_CCLD)$(LINK) $(test_context_OBJECTS) $(test_context_LDADD) $(LIBS) @@ -332,6 +344,7 @@ distclean-compile: -rm -f *.tab.c +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-bugs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test-context.Po@am__quote@ .c.o: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.1/tests/gtest/data/ServiceBgo69762.xml new/gupnp-0.20.2/tests/gtest/data/ServiceBgo69762.xml --- old/gupnp-0.20.1/tests/gtest/data/ServiceBgo69762.xml 1970-01-01 01:00:00.000000000 +0100 +++ new/gupnp-0.20.2/tests/gtest/data/ServiceBgo69762.xml 2013-04-05 12:33:55.000000000 +0200 @@ -0,0 +1,107 @@ +<scpd xmlns="urn:schemas-upnp-org:service-1-0"> + <specVersion> + <major>1</major> + <minor>0</minor> + </specVersion> + <serviceStateTable> + <stateVariable sendEvents="no"> + <name>A_ARG_TYPE_ObjectID</name> + <dataType>string</dataType> + </stateVariable> + <stateVariable sendEvents="no"> + <name>A_ARG_TYPE_Result</name> + <dataType>string</dataType> + </stateVariable> + <stateVariable sendEvents="no"> + <name>A_ARG_TYPE_BrowseFlag</name> + <dataType>string</dataType> + <allowedValueList> + <allowedValue>BrowseMetadata</allowedValue> + <allowedValue>BrowseDirectChildren</allowedValue> + </allowedValueList> + </stateVariable> + <stateVariable sendEvents="no"> + <name>A_ARG_TYPE_Filter</name> + <dataType>string</dataType> + </stateVariable> + <stateVariable sendEvents="no"> + <name>A_ARG_TYPE_SortCriteria</name> + <dataType>string</dataType> + </stateVariable> + <stateVariable sendEvents="no"> + <name>A_ARG_TYPE_Index</name> + <dataType>ui4</dataType> + </stateVariable> + <stateVariable sendEvents="no"> + <name>A_ARG_TYPE_Count</name> + <dataType>ui4</dataType> + </stateVariable> + </serviceStateTable> + <actionList> + <action> + <name>Browse</name> + <argumentList> + <argument> + <name>ObjectID</name> + <direction>in</direction> + <relatedStateVariable> + A_ARG_TYPE_ObjectID</relatedStateVariable> + </argument> + <argument> + <name>BrowseFlag</name> + <direction>in</direction> + <relatedStateVariable> + A_ARG_TYPE_BrowseFlag</relatedStateVariable> + </argument> + <argument> + <name>Filter</name> + <direction>in</direction> + <relatedStateVariable> + A_ARG_TYPE_Filter</relatedStateVariable> + </argument> + <argument> + <name>StartingIndex</name> + <direction>in</direction> + <relatedStateVariable> + A_ARG_TYPE_Index</relatedStateVariable> + </argument> + <argument> + <name>RequestedCount</name> + <direction>in</direction> + <relatedStateVariable> + A_ARG_TYPE_Count</relatedStateVariable> + </argument> + <argument> + <name>SortCriteria</name> + <direction>in</direction> + <relatedStateVariable> + A_ARG_TYPE_SortCriteria</relatedStateVariable> + </argument> + <argument> + <name>Result</name> + <direction>out</direction> + <relatedStateVariable> + A_ARG_TYPE_Result</relatedStateVariable> + </argument> + <argument> + <name>NumberReturned</name> + <direction>out</direction> + <relatedStateVariable> + A_ARG_TYPE_Count</relatedStateVariable> + </argument> + <argument> + <name>TotalMatches</name> + <direction>out</direction> + <relatedStateVariable> + A_ARG_TYPE_Count</relatedStateVariable> + </argument> + <argument> + <name>UpdateID</name> + <direction>out</direction> + <relatedStateVariable> + A_ARG_TYPE_UpdateID</relatedStateVariable> + </argument> + </argumentList> + </action> + </actionList> +</scpd> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.1/tests/gtest/data/TestBgo696762.xml new/gupnp-0.20.2/tests/gtest/data/TestBgo696762.xml --- old/gupnp-0.20.1/tests/gtest/data/TestBgo696762.xml 1970-01-01 01:00:00.000000000 +0100 +++ new/gupnp-0.20.2/tests/gtest/data/TestBgo696762.xml 2013-04-05 12:33:55.000000000 +0200 @@ -0,0 +1,21 @@ +<root xmlns="urn:schemas-upnp-org:device-1-0"> +<specVersion> +<major>1</major> +<minor>0</minor> +</specVersion> +<device> +<deviceType>urn:test-gupnp-org:device:TestBgo696762:1</deviceType> +<friendlyName>Regression Test for bgo#696762</friendlyName> +<modelURL>https://bugzilla.gnome.org/show_bug.cgi?id=696762</modelURL> +<UDN>uuid:1234</UDN> +<serviceList> +<service> +<serviceType>urn:test-gupnp-org:service:bgo696762:1</serviceType> +<serviceId>urn:test-gupnp-org:serviceId:bgo696762:1</serviceId> +<SCPDURL>/ServiceBgo69762.xml</SCPDURL> +<controlURL>/ServiceBgo69762/Control</controlURL> +<eventSubURL>/ServiceBgo69762/Event</eventSubURL> +</service> +</serviceList> +</device> +</root> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/gupnp-0.20.1/tests/gtest/test-bugs.c new/gupnp-0.20.2/tests/gtest/test-bugs.c --- old/gupnp-0.20.1/tests/gtest/test-bugs.c 1970-01-01 01:00:00.000000000 +0100 +++ new/gupnp-0.20.2/tests/gtest/test-bugs.c 2013-04-05 12:33:55.000000000 +0200 @@ -0,0 +1,183 @@ +/* + * Copyright (C) 2013 Intel Corporation. + * + * Author: Jens Georg <[email protected]> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <libgupnp/gupnp.h> + + +struct _GUPnPServiceAction { + volatile gint ref_count; + + GUPnPContext *context; + + char *name; + + SoupMessage *msg; + gboolean accept_gzip; + + GUPnPXMLDoc *doc; + xmlNode *node; + + GString *response_str; + + guint argument_count; +}; + +typedef struct _TestBgo696762Data { + GMainLoop *loop; + GUPnPServiceProxy *proxy; +} TestBgo696762Data; + +static void +test_bgo_696762_on_browse_call (GUPnPService *service, + GUPnPServiceAction *action, + gpointer user_data) +{ + xmlNode *node = action->node->children; + g_assert (node != NULL); + g_assert_cmpstr (node->name, ==, "ObjectID"); + node = node->next; + + g_assert (node != NULL); + g_assert_cmpstr (node->name, ==, "BrowseFlag"); + node = node->next; + + g_assert (node != NULL); + g_assert_cmpstr (node->name, ==, "Filter"); + node = node->next; + + g_assert (node != NULL); + g_assert_cmpstr (node->name, ==, "StartingIndex"); + node = node->next; + + g_assert (node != NULL); + g_assert_cmpstr (node->name, ==, "RequestedCount"); + node = node->next; + + g_assert (node != NULL); + g_assert_cmpstr (node->name, ==, "SortCriteria"); + node = node->next; + gupnp_service_action_return (action); +} + +static void +test_bgo_696762_on_browse (GUPnPServiceProxy *proxy, + GUPnPServiceProxyAction *action, + gpointer user_data) +{ + TestBgo696762Data *data = (TestBgo696762Data *) user_data; + + g_main_loop_quit (data->loop); +} + +static void +test_bgo_696762_on_sp_available (GUPnPControlPoint *cp, + GUPnPServiceProxy *proxy, + gpointer user_data) +{ + TestBgo696762Data *data = (TestBgo696762Data *) user_data; + + data->proxy = g_object_ref (proxy); + + g_main_loop_quit (data->loop); +} + +static gboolean +test_bgo_696762_on_timeout (gpointer user_data) +{ + g_assert_not_reached (); + + return FALSE; +} + +/* Test if a call on a service proxy keeps argument order */ +static void +test_bgo_696762 (void) +{ + GUPnPContext *context = NULL; + GError *error = NULL; + GUPnPControlPoint *cp = NULL; + guint timeout_id = 0; + GUPnPRootDevice *rd; + TestBgo696762Data data = { NULL, NULL }; + GUPnPServiceInfo *info = NULL; + + data.loop = g_main_loop_new (NULL, FALSE); + + context = gupnp_context_new (NULL, "lo", 0, &error); + g_assert (context != NULL); + g_assert (error == NULL); + + cp = gupnp_control_point_new (context, + "urn:test-gupnp-org:service:bgo696762:1"); + + gssdp_resource_browser_set_active (GSSDP_RESOURCE_BROWSER (cp), TRUE); + + g_signal_connect (G_OBJECT (cp), + "service-proxy-available", + G_CALLBACK (test_bgo_696762_on_sp_available), + &data); + + + rd = gupnp_root_device_new (context, "TestBgo696762.xml", DATA_PATH); + gupnp_root_device_set_available (rd, TRUE); + info = gupnp_device_info_get_service (GUPNP_DEVICE_INFO (rd), + "urn:test-gupnp-org:service:bgo696762:1"); + g_signal_connect (G_OBJECT (info), + "action-invoked::Browse", + G_CALLBACK (test_bgo_696762_on_browse_call), + &data); + + timeout_id = g_timeout_add_seconds (2, test_bgo_696762_on_timeout, &(data.loop)); + g_main_loop_run (data.loop); + g_source_remove (timeout_id); + g_assert (data.proxy != NULL); + + gupnp_service_proxy_begin_action (data.proxy, + "Browse", + test_bgo_696762_on_browse, + &data, + "ObjectID", G_TYPE_STRING, "0", + "BrowseFlag", G_TYPE_STRING, "BrowseDirectChildren", + "Filter", G_TYPE_STRING, "res,dc:date,res@size", + "StartingIndex", G_TYPE_UINT, 0, + "RequestedCount", G_TYPE_UINT, 0, + "SortCriteria", G_TYPE_STRING, "", + NULL); + + timeout_id = g_timeout_add_seconds (2, test_bgo_696762_on_timeout, &(data.loop)); + g_main_loop_run (data.loop); + g_source_remove (timeout_id); +} + +int +main (int argc, char *argv[]) { +#if !GLIB_CHECK_VERSION(2,35,0) + g_type_init (); +#endif + g_test_init (&argc, &argv, NULL); + g_test_add_func ("/bugs/696762", test_bgo_696762); + + return g_test_run (); +} -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
