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 "gnome-maintainers@suse.de"
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 - dimstar@opensuse.org
+
+- 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
+ Benjamin Kerensa
+
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
+ *
+ * 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
+#endif
+
+#include
+
+
+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: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org