[xmlrpc-c/f17] forward ported two patches from stable branch

ensc ensc at fedoraproject.org
Sun Dec 9 12:28:49 UTC 2012


commit 65c032d5537ab7c50526da9d35e0ec7a5a0dfc01
Author: Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
Date:   Sun Dec 9 13:28:15 2012 +0100

    forward ported two patches from stable branch
    
    - fixes interruption with libcurl transport
    - fixes parsing error of 64 bit integers
    - fixes libxml2 related memory leak

 release-1.25.20.patch |   69 +++++++++++++++++++++++++++++++++++++++++++++++++
 release-1.25.21.patch |   59 +++++++++++++++++++++++++++++++++++++++++
 xmlrpc-c.spec         |   12 ++++++++-
 3 files changed, 139 insertions(+), 1 deletions(-)
---
diff --git a/release-1.25.20.patch b/release-1.25.20.patch
new file mode 100644
index 0000000..315514b
--- /dev/null
+++ b/release-1.25.20.patch
@@ -0,0 +1,69 @@
+From 1c76aa8abeaef8273f637324e43de78677535833 Mon Sep 17 00:00:00 2001
+From: giraffedata <giraffedata at adbb7d4b-a73a-0410-a071-c5f57c452bd4>
+Date: Fri, 19 Oct 2012 19:47:27 +0000
+Subject: Release 1.25.20
+
+git-svn-id: https://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/stable@2435 adbb7d4b-a73a-0410-a071-c5f57c452bd4
+---
+ lib/curl_transport/xmlrpc_curl_transport.c | 23 ++++++++++++++++++++---
+ version.mk                                 |  2 +-
+ 2 Dateien geändert, 21 Zeilen hinzugefügt(+), 4 Zeilen entfernt(-)
+
+diff --git a/lib/curl_transport/xmlrpc_curl_transport.c b/lib/curl_transport/xmlrpc_curl_transport.c
+index c48b927..96a403e 100644
+--- a/lib/curl_transport/xmlrpc_curl_transport.c
++++ b/lib/curl_transport/xmlrpc_curl_transport.c
+@@ -1170,6 +1170,16 @@ createRpc(xmlrpc_env *                     const envP,
+     if (rpcP == NULL)
+         xmlrpc_faultf(envP, "Couldn't allocate memory for rpc object");
+     else {
++        curlt_progressFn * curlProgressFn;
++
++        if (progress || clientTransportP->interruptP)
++            curlProgressFn = &curlTransactionProgress;
++        else {
++            /* There's nothing for curlTransactionProgress() to do, so save
++               the time and complexity of calling it.
++            */
++            curlProgressFn = NULL;
++        }
+         rpcP->transportP   = clientTransportP;
+         rpcP->curlSessionP = curlSessionP;
+         rpcP->callInfoP    = callInfoP;
+@@ -1186,7 +1196,7 @@ createRpc(xmlrpc_env *                     const envP,
+                                &clientTransportP->curlSetupStuff,
+                                rpcP,
+                                complete ? &finishRpcCurlTransaction : NULL,
+-                               progress ? &curlTransactionProgress : NULL,
++                               curlProgressFn,
+                                &rpcP->curlTransactionP);
+         if (!envP->fault_occurred) {
+             if (envP->fault_occurred)
+@@ -1296,15 +1306,22 @@ curlTransactionProgress(void * const context,
+ 
+     assert(rpcP);
+     assert(transportP);
+-    assert(rpcP->progress);
+ 
+     progressData.response.total = dlTotal;
+     progressData.response.now   = dlNow;
+     progressData.call.total     = ulTotal;
+     progressData.call.now       = ulNow;
+ 
+-    rpcP->progress(rpcP->callInfoP, progressData);
++    if (rpcP->progress) {
++        struct xmlrpc_progress_data progressData;
++
++        progressData.response.total = dlTotal;
++        progressData.response.now   = dlNow;
++        progressData.call.total     = ulTotal;
++        progressData.call.now       = ulNow;
+ 
++        rpcP->progress(rpcP->callInfoP, progressData);
++    }
+     if (transportP->interruptP)
+         *abortP = *transportP->interruptP;
+     else
+-- 
+1.7.11.7
+
diff --git a/release-1.25.21.patch b/release-1.25.21.patch
new file mode 100644
index 0000000..09eae01
--- /dev/null
+++ b/release-1.25.21.patch
@@ -0,0 +1,59 @@
+From c880196664ca3902cbf8fd806a58a9e9f362abb0 Mon Sep 17 00:00:00 2001
+From: giraffedata <giraffedata at adbb7d4b-a73a-0410-a071-c5f57c452bd4>
+Date: Thu, 29 Nov 2012 04:37:55 +0000
+Subject: Release 1.25.21
+
+git-svn-id: https://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/stable@2452 adbb7d4b-a73a-0410-a071-c5f57c452bd4
+---
+ lib/abyss/src/channel.c | 2 +-
+ src/method.c            | 1 +
+ src/xmlrpc_libxml2.c    | 6 ++++--
+ version.mk              | 2 +-
+ 4 Dateien geändert, 7 Zeilen hinzugefügt(+), 4 Zeilen entfernt(-)
+
+diff --git a/lib/abyss/src/channel.c b/lib/abyss/src/channel.c
+index 5044e23..5454bd0 100644
+--- a/lib/abyss/src/channel.c
++++ b/lib/abyss/src/channel.c
+@@ -181,7 +181,7 @@ void
+ ChannelInterrupt(TChannel * const channelP) {
+ 
+     if (ChannelTraceIsActive)
+-        fprintf(stderr, "Interrupting channel waits");
++        fprintf(stderr, "Interrupting channel waits\n");
+ 
+     (*channelP->vtbl.interrupt)(channelP);
+ }
+diff --git a/src/method.c b/src/method.c
+index 467bbbe..e375e5f 100644
+--- a/src/method.c
++++ b/src/method.c
+@@ -54,6 +54,7 @@ translateTypeSpecifierToName(xmlrpc_env *  const envP,
+     case 'S': *typeNameP = "struct";           break;
+     case 'A': *typeNameP = "array";            break;
+     case 'n': *typeNameP = "nil";              break;
++    case 'I': *typeNameP = "i8";               break;
+     default:
+         xmlrpc_faultf(envP, 
+                       "Method registry contains invalid signature "
+diff --git a/src/xmlrpc_libxml2.c b/src/xmlrpc_libxml2.c
+index 3df6231..574af86 100644
+--- a/src/xmlrpc_libxml2.c
++++ b/src/xmlrpc_libxml2.c
+@@ -422,9 +422,11 @@ xml_parse(xmlrpc_env *   const envP,
+     *resultPP = context.root;
+ 
+  cleanup:
+-    if (parser)
++    if (parser) {
++        if (parser->myDoc)
++            xmlFreeDoc(parser->myDoc);
+         xmlFreeParserCtxt(parser);
+-
++    }
+     if (envP->fault_occurred) {
+         if (context.root)
+             xml_element_free(context.root);
+-- 
+1.7.11.7
+
diff --git a/xmlrpc-c.spec b/xmlrpc-c.spec
index 2f9a754..4875ff2 100644
--- a/xmlrpc-c.spec
+++ b/xmlrpc-c.spec
@@ -6,7 +6,7 @@
 Summary:	A lightweight RPC library based on XML and HTTP
 Name:		xmlrpc-c
 Version:	1.29.3
-Release:	%release_func 1706.svn%svnrev
+Release:	%release_func 1707.svn%svnrev
 # See COPYING for details.
 # The Python 1.5.2 license used by a few files is just BSD.
 License:	BSD and MIT
@@ -25,6 +25,8 @@ Patch1:		curl-uninit-auth.patch
 Patch2:		ipv6-parse.patch
 Patch3:		fix-double-free.patch
 Patch4:		fix-string-exceptions.patch
+Patch5:		release-1.25.20.patch
+Patch6:		release-1.25.21.patch
 
 Patch100:	xmlrpc-c-cmake.patch
 Patch102:	xmlrpc-c-printf-size_t.patch
@@ -119,6 +121,8 @@ This package contains some handy XML-RPC demo applications.
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
+%patch5 -p1
+%patch6 -p1
 %patch100 -p1
 %patch102 -p1
 %patch105 -p1
@@ -244,6 +248,12 @@ rm -rf $RPM_BUILD_ROOT
 
 
 %changelog
+* Sun Dec  9 2012 Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de> - 1.29.3-1707.svn2290
+- forward ported two patches from stable branch
+- fixes interruption with libcurl transport
+- fixes parsing error of 64 bit integers
+- fixes libxml2 related memory leak
+
 * Sun Aug 26 2012 Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de> - 1.29.3-1706.svn2290
 - forward-ported patch from stable branch which fixes exception
   handling on invalid utf-8 strings


More information about the scm-commits mailing list