[Pkg-voip-commits] r4679 - in /openser/trunk/debian: changelog patches/00list patches/02_xmlrpc_update.dpatch
jblache at alioth.debian.org
jblache at alioth.debian.org
Sat Oct 6 10:06:28 UTC 2007
Author: jblache
Date: Sat Oct 6 10:06:28 2007
New Revision: 4679
URL: http://svn.debian.org/wsvn/pkg-voip/?sc=1&rev=4679
Log:
Backport trunk rev 2870, update mi_xmlrpc code for newer libxmlrpc versions.
Added:
openser/trunk/debian/patches/02_xmlrpc_update.dpatch (with props)
Modified:
openser/trunk/debian/changelog
openser/trunk/debian/patches/00list
Modified: openser/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-voip/openser/trunk/debian/changelog?rev=4679&op=diff
==============================================================================
--- openser/trunk/debian/changelog (original)
+++ openser/trunk/debian/changelog Sat Oct 6 10:06:28 2007
@@ -1,8 +1,10 @@
-openser (1.2.2-3) UNRELEASED; urgency=low
-
- * NOT RELEASED YET
-
- -- Julien BLACHE <jblache at debian.org> Wed, 12 Sep 2007 12:22:10 +0200
+openser (1.2.2-3) unstable; urgency=low
+
+ * debian/patches/02_xmlrpc_update.dpatch:
+ + Added; Backported from trunk rev 2870, update mi_xmlrpc code for newer
+ libxmlrpc versions (closes: #445111).
+
+ -- Julien BLACHE <jblache at debian.org> Sat, 06 Oct 2007 12:04:46 +0200
openser (1.2.2-2) unstable; urgency=low
Modified: openser/trunk/debian/patches/00list
URL: http://svn.debian.org/wsvn/pkg-voip/openser/trunk/debian/patches/00list?rev=4679&op=diff
==============================================================================
--- openser/trunk/debian/patches/00list (original)
+++ openser/trunk/debian/patches/00list Sat Oct 6 10:06:28 2007
@@ -1,4 +1,5 @@
01_psql_connect
+02_xmlrpc_update
10_no_lib64_on_64_bits
11_always_smp
Added: openser/trunk/debian/patches/02_xmlrpc_update.dpatch
URL: http://svn.debian.org/wsvn/pkg-voip/openser/trunk/debian/patches/02_xmlrpc_update.dpatch?rev=4679&op=file
==============================================================================
--- openser/trunk/debian/patches/02_xmlrpc_update.dpatch (added)
+++ openser/trunk/debian/patches/02_xmlrpc_update.dpatch Sat Oct 6 10:06:28 2007
@@ -1,0 +1,538 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 02_xmlrpc_update.dpatch by <jblache at debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: mi_xmlrpc update for newer libxmlrpc, backported from trunk rev 2870.
+
+ at DPATCH@
+diff -urNad openser-1.2.2~/modules/mi_xmlrpc/Makefile openser-1.2.2/modules/mi_xmlrpc/Makefile
+--- openser-1.2.2~/modules/mi_xmlrpc/Makefile 2007-10-06 11:58:22.245319344 +0200
++++ openser-1.2.2/modules/mi_xmlrpc/Makefile 2007-10-06 11:58:24.244955548 +0200
+@@ -5,10 +5,42 @@
+ NAME=mi_xmlrpc.so
+ LIBS=
+
+-DEFS+=-I$(LOCALBASE)/include -I$(LOCALBASE)/include/xmlrpc-c \
+- -I$(SYSBASE)/include/xmlrpc-c
+-LIBS+=-L$(SYSBASE)/lib -L$(LOCALBASE)/lib -lxmlrpc -lxmlrpc_xmlparse \
+- -lxmlrpc_xmltok -lxmlrpc_abyss -lxmlrpc_abyss_server \
+- -lxmlrpc_client -lwwwinit -lwwwstream -lwwwxml
++NEW_VERSION_THRESHOLD_UP=10618 # 1.06.18
++NEW_VERSION_THRESHOLD_DOWN=10310 # 1.03.10
++
++OLD_VERSION_THRESHOLD_UP=910 # 0.09.10
++OLD_VERSION_THRESHOLD_DOWN=901 # 0.09.10
++
++
++# get the version
++XMLRPC-C-CONFIG=$(shell which xmlrpc-c-config)
++
++XMLRPC_VER=$(shell $(XMLRPC-C-CONFIG) --version)
++
++XMLRPC_VERSION=$(shell echo $(XMLRPC_VER) | sed "s/\.\([0-9]\)\./.0\1./g" | sed "s/\.\([0-9]\)\$$/.0\1/g" | tr -d "." | sed -e "s/^0*//" )
++
++
++# check the versions
++OLD=$(shell if (("$(XMLRPC_VERSION)" <= "$(OLD_VERSION_THRESHOLD_UP)")) && (("$(XMLRPC_VERSION)" >= "$(OLD_VERSION_THRESHOLD_DOWN)")) ; then echo "yes"; fi ; )
++
++NEW=$(shell if (("$(XMLRPC_VERSION)" <= "$(NEW_VERSION_THRESHOLD_UP)")) && (("$(XMLRPC_VERSION)" >= "$(NEW_VERSION_THRESHOLD_DOWN)")) ; then echo "yes"; fi ; )
++
++
++# supported version ?
++ifeq ($(OLD),yes)
++ DEFS+=-DXMLRPC_OLD_VERSION
++else
++ifeq ($(NEW),yes)
++ # nothing to do
++else
++$(warning You are using an unsupported libxmlrpc-c3 \
++ version ($(XMLRPC_VER)), compile at your own risk!)
++endif
++endif
++
++DEFS+=$(shell $(XMLRPC-C-CONFIG) abyss-server --cflags)
++LIBS+=$(shell $(XMLRPC-C-CONFIG) abyss-server --libs)
++
+
+ include ../../Makefile.modules
++
+diff -urNad openser-1.2.2~/modules/mi_xmlrpc/mi_xmlrpc.c openser-1.2.2/modules/mi_xmlrpc/mi_xmlrpc.c
+--- openser-1.2.2~/modules/mi_xmlrpc/mi_xmlrpc.c 2007-10-06 11:58:22.245319344 +0200
++++ openser-1.2.2/modules/mi_xmlrpc/mi_xmlrpc.c 2007-10-06 11:58:24.244955548 +0200
+@@ -22,6 +22,7 @@
+ * History:
+ * ---------
+ * 2006-11-30 first version (lavinia)
++ * 2007-10-05 support for libxmlrpc-c3 version 1.x.x added (dragos)
+ */
+
+
+@@ -39,9 +40,25 @@
+ #include "xr_writer.h"
+ #include "xr_parser.h"
+ #include "xr_server.h"
++
+ #define XMLRPC_SERVER_WANT_ABYSS_HANDLERS
++
++#ifdef XMLRPC_OLD_VERSION
++
+ #include "abyss.h"
+ #include <xmlrpc_abyss.h>
++#include <xmlrpc.h>
++
++#else
++
++#include <xmlrpc-c/base.h>
++#include <xmlrpc-c/abyss.h>
++#include <xmlrpc-c/server.h>
++#include <xmlrpc-c/server_abyss.h>
++
++#endif
++
++
+ #include "../../sr_module.h"
+ #include "../../str.h"
+ #include "../../mem/mem.h"
+@@ -49,6 +66,8 @@
+
+ xmlrpc_env env;
+ xmlrpc_value * xr_response;
++xmlrpc_registry * registryP;
++
+ int rpl_opt = 0;
+
+ /* module functions */
+@@ -159,7 +178,16 @@
+ }
+
+ /* Server Abyss init */
++
++ xmlrpc_env_init(&env);
++
++ #ifdef XMLRPC_OLD_VERSION
+ xmlrpc_server_abyss_init_registry();
++ registryP= xmlrpc_server_abyss_registry();
++ #else
++ registryP = xmlrpc_registry_new(&env);
++ #endif
++
+ DateInit();
+ MIMETypeInit();
+
+@@ -169,6 +197,7 @@
+ return -1;
+ }
+
++ #ifdef XMLRPC_OLD_VERSION
+ if (!ServerAddHandler(&srv, xmlrpc_server_abyss_rpc2_handler)) {
+ LOG(L_ERR,"ERROR: mi_xmlrpc: mod_child_init: failed to add handler "
+ "to server\n");
+@@ -176,6 +205,13 @@
+ }
+
+ ServerDefaultHandler(&srv, xmlrpc_server_abyss_default_handler);
++
++ #else
++
++ xmlrpc_server_abyss_set_handlers2(&srv, "/RPC2", registryP);
++
++ #endif
++
+ ServerInit(&srv);
+
+ if( init_mi_child() != 0 ) {
+@@ -189,8 +225,9 @@
+ "reply writer\n");
+ return -1;
+ }
+-
++ #ifdef XMLRPC_OLD_VERSION
+ xmlrpc_env_init(&env);
++ #endif
+
+ if ( rpl_opt == 1 ) {
+ xr_response = xmlrpc_build_value(&env, "()");
+@@ -201,7 +238,7 @@
+ }
+ }
+
+- if ( set_default_method(&env) != 0 ) {
++ if ( set_default_method(&env,registryP) != 0 ) {
+ LOG(L_ERR, "ERROR: mi_xmlrpc: mod_child_init: Failed to set up the "
+ "default method!\n");
+ goto cleanup;
+@@ -250,4 +287,3 @@
+
+ return 0;
+ }
+-
+diff -urNad openser-1.2.2~/modules/mi_xmlrpc/xr_parser.c openser-1.2.2/modules/mi_xmlrpc/xr_parser.c
+--- openser-1.2.2~/modules/mi_xmlrpc/xr_parser.c 2007-10-06 11:58:22.245319344 +0200
++++ openser-1.2.2/modules/mi_xmlrpc/xr_parser.c 2007-10-06 11:59:54.728473091 +0200
+@@ -22,17 +22,18 @@
+ * History:
+ * ---------
+ * 2006-11-30 first version (lavinia)
++ * 2007-10-05 support for libxmlrpc-c3 version 1.x.x added (dragos)
+ */
+
+
+ #include <string.h>
++#include <stdlib.h>
+ #include "../../dprint.h"
+ #include "../../mem/mem.h"
+ #include "xr_parser.h"
+ #include "xr_parser_lib.h"
+ #include "mi_xmlrpc.h"
+
+-
+ /*
+ * Convert in argument string each LFLF to CRLF and return length of
+ * the string not including the terminating `\0' character.
+@@ -66,11 +67,19 @@
+
+ int size, i;
+ size_t length;
+- void * cptrValue;
++
+ xmlrpc_int32 intValue;
+ xmlrpc_bool boolValue;
++
++ #ifdef XMLRPC_OLD_VERSION
+ double doubleValue;
+- char * stringValue = 0, * byteStringValue = 0, * contents;
++ char * contents;
++ #else
++ xmlrpc_double doubleValue;
++ #endif
++
++ char * stringValue ;
++ char * byteStringValue =0;
+ xmlrpc_value * item;
+
+ mi_root = init_mi_tree(0, 0, 0);
+@@ -96,15 +105,12 @@
+
+ case (XMLRPC_TYPE_INT):
+
+- validateType(env, item, XMLRPC_TYPE_INT);
+-
+- if ( env->fault_occurred ) {
+- LOG(L_ERR, "ERROR: mi_xmlrpc: xr_parse_tree: Failed to read "
+- "the intValue: %s\n", env->fault_string);
+- goto error;
+- }
+-
++ #ifdef XMLRPC_OLD_VERSION
+ intValue = item->_value.i;
++ #else
++ xmlrpc_read_int(env,item,&intValue);
++ #endif
++
+ if (addf_mi_node_child(&mi_root->node,0,0,0,"%d",intValue)==NULL) {
+ LOG(L_ERR, "ERROR: mi_xmlrpc: xr_parse_tree: Failed to add "
+ "node to the MI tree.\n");
+@@ -113,16 +119,13 @@
+ break;
+
+ case (XMLRPC_TYPE_BOOL):
+-
+- validateType(env, item, XMLRPC_TYPE_BOOL);
+-
+- if ( env->fault_occurred ) {
+- LOG(L_ERR, "ERROR: mi_xmlrpc: xr_parse_tree: Failed to "
+- "read the boolValue: %s\n", env->fault_string);
+- goto error;
+- }
+-
++
++ #ifdef XMLRPC_OLD_VERSION
+ boolValue = item->_value.b;
++ #else
++ xmlrpc_read_bool(env,item,&boolValue);
++ #endif
++
+ if (addf_mi_node_child(&mi_root->node,0,0,0,"%u",boolValue)==NULL){
+ LOG(L_ERR, "ERROR: mi_xmlrpc: xr_parse_tree: Failed to add "
+ "node to the MI tree.\n");
+@@ -131,16 +134,13 @@
+ break;
+
+ case (XMLRPC_TYPE_DOUBLE):
+-
+- validateType(env, item, XMLRPC_TYPE_DOUBLE);
+-
+- if ( env->fault_occurred ) {
+- LOG(L_ERR, "ERROR: mi_xmlrpc: xr_parse_tree: Failed to "
+- "read the doubleValue: %s\n", env->fault_string);
+- goto error;
+- }
+
++ #ifdef XMLRPC_OLD_VERSION
+ doubleValue = item->_value.d;
++ #else
++ xmlrpc_read_double(env,item,&doubleValue);
++ #endif
++
+ if ( addf_mi_node_child(&mi_root->node, 0, 0, 0, "%lf",
+ doubleValue) == NULL ) {
+ LOG(L_ERR, "ERROR: mi_xmlrpc: xr_parse_tree: Failed to add "
+@@ -153,7 +153,11 @@
+
+ #if HAVE_UNICODE_WCHAR
+ char * stringValueW;
++ #ifdef XMLRPC_OLD_VERSION
+ xmlrpc_read_string_w(env, item, &stringValueW);
++ #else
++ xmlrpc_read_string_w(env, item , stringValueW);
++ #endif
+
+ if ( env->fault_occurred ) {
+ LOG(L_ERR, "ERROR: mi_xmlrpc: xr_parse_tree: failed to read "
+@@ -168,7 +172,11 @@
+ goto error;
+ }
+ #else
++ #ifdef XMLRPC_OLD_VERSION
+ xmlrpc_read_string(env, item, &stringValue);
++ #else
++ xmlrpc_read_string(env, item, (const char **)&stringValue);
++ #endif
+
+ if ( env->fault_occurred ) {
+ LOG(L_ERR, "ERROR: mi_xmlrpc: xr_parse_tree: Failed to read "
+@@ -176,8 +184,7 @@
+ goto error;
+ }
+ if ( add_mi_node_child(&mi_root->node, 0, 0, 0,
+- stringValue,
+- lflf_to_crlf_hack(stringValue)) == NULL ) {
++ stringValue,strlen(stringValue)) == NULL ) {
+ LOG(L_ERR, "ERROR: mi_xmlrpc: xr_parse_tree: Failed to add "
+ "node to the MI tree.\n");
+ goto error;
+@@ -187,15 +194,9 @@
+ break;
+
+ case (XMLRPC_TYPE_BASE64):
+-
+- validateType(env, item, XMLRPC_TYPE_BASE64);
+-
+- if ( env->fault_occurred ) {
+- LOG(L_ERR, "ERROR: mi_xmlrpc: xr_parse_tree: Failed to read "
+- "byteStringValue: %s!\n", env->fault_string);
+- goto error;
+- }
+-
++
++ #ifdef XMLRPC_OLD_VERSION
++
+ length = XMLRPC_TYPED_MEM_BLOCK_SIZE(char, &item->_block);
+ contents = XMLRPC_TYPED_MEM_BLOCK_CONTENTS(char, &item->_block);
+ byteStringValue = pkg_malloc(length);
+@@ -215,26 +216,37 @@
+ "node to the MI tree.\n");
+ goto error;
+ }
+- break;
+
+- case (XMLRPC_TYPE_C_PTR):
+-
+- validateType(env, item, XMLRPC_TYPE_C_PTR);
+-
++ #else
++
++ xmlrpc_read_base64(env, item, &length,
++ (const unsigned char **)(void*)&byteStringValue);
++
+ if ( env->fault_occurred ) {
+ LOG(L_ERR, "ERROR: mi_xmlrpc: xr_parse_tree: Failed to read "
+- "the cptrValue: %s\n", env->fault_string);
++ "byteStringValue: %s!\n", env->fault_string);
+ goto error;
+ }
+
+- cptrValue = item->_value.c_ptr;
+- if ( add_mi_node_child(&mi_root->node, 0, 0, 0, (char*)cptrValue,
+- strlen((char*)cptrValue)) == NULL ) {
++ if ( add_mi_node_child(&mi_root->node, MI_DUP_VALUE, 0, 0,
++ byteStringValue, length) == NULL ) {
+ LOG(L_ERR, "ERROR: mi_xmlrpc: xr_parse_tree: Failed to add "
+ "node to the MI tree.\n");
+ goto error;
+ }
++ free(byteStringValue);
++
++ #endif
++
+ break;
++
++ default :
++ LOG(L_ERR, "ERROR: mi_xmlrpc: xr_parse_tree: unsupported node type %d\n",
++ xmlrpc_value_type(item) );
++ xmlrpc_env_set_fault_formatted( env, XMLRPC_TYPE_ERROR,
++ "Unsupported value of type %d supplied",
++ xmlrpc_value_type(item));
++ goto error;
+ }
+ }
+
+@@ -249,5 +261,3 @@
+ #endif
+ return 0;
+ }
+-
+-
+diff -urNad openser-1.2.2~/modules/mi_xmlrpc/xr_parser_lib.h openser-1.2.2/modules/mi_xmlrpc/xr_parser_lib.h
+--- openser-1.2.2~/modules/mi_xmlrpc/xr_parser_lib.h 2007-10-06 11:58:22.745228395 +0200
++++ openser-1.2.2/modules/mi_xmlrpc/xr_parser_lib.h 2007-10-06 11:58:24.244955548 +0200
+@@ -31,39 +31,15 @@
+ * ---------
+ * 2006-11-30 imported from xmlrpc project, file /xmlrpc-c/src/xmlrpc_data.c,
+ * version 1.06.06 (lavinia)
++ * 2007-10-05 support for libxmlrpc-c3 version 1.x.x added (dragos)
+ */
+
+
++#ifdef XMLRPC_OLD_VERSION
+
+ #define XMLRPC_WANT_INTERNAL_DECLARATIONS
+ #include <xmlrpc.h>
+
+-static char * xmlrpc_typeName ( xmlrpc_type type ) {
+-
+- switch(type) {
+-
+- case XMLRPC_TYPE_INT: return "INT";
+- case XMLRPC_TYPE_BOOL: return "BOOL";
+- case XMLRPC_TYPE_DOUBLE: return "DOUBLE";
+- case XMLRPC_TYPE_DATETIME: return "DATETIME";
+- case XMLRPC_TYPE_STRING: return "STRING";
+- case XMLRPC_TYPE_BASE64: return "BASE64";
+- case XMLRPC_TYPE_ARRAY: return "ARRAY";
+- case XMLRPC_TYPE_STRUCT: return "STRUCT";
+- case XMLRPC_TYPE_C_PTR: return "C_PTR";
+- case XMLRPC_TYPE_DEAD: return "DEAD";
+- default: return "Unknown";
+- }
+-}
+-
+-static void validateType ( xmlrpc_env * env, xmlrpc_value * value, xmlrpc_type expectedType ) {
+-
+- if ( value->_type != expectedType ) {
+- xmlrpc_env_set_fault_formatted(
+- env, XMLRPC_TYPE_ERROR, "Value of type %s supplied where type %s was expected.",
+- xmlrpc_typeName(value->_type), xmlrpc_typeName(expectedType));
+- }
+-}
+
+ static void verifyNoNulls ( xmlrpc_env * env, char * content, unsigned int len ) {
+
+@@ -167,5 +143,4 @@
+ }
+ }
+ #endif
+-
+-
++#endif
+diff -urNad openser-1.2.2~/modules/mi_xmlrpc/xr_server.c openser-1.2.2/modules/mi_xmlrpc/xr_server.c
+--- openser-1.2.2~/modules/mi_xmlrpc/xr_server.c 2007-10-06 11:58:22.745228395 +0200
++++ openser-1.2.2/modules/mi_xmlrpc/xr_server.c 2007-10-06 11:58:24.244955548 +0200
+@@ -23,6 +23,7 @@
+ * ---------
+ * 2006-11-30 first version (lavinia)
+ * 2007-02-02 support for asyncronous reply added (bogdan)
++ * 2007-10-05 support for libxmlrpc-c3 version 1.x.x added (dragos)
+ */
+
+
+@@ -38,7 +39,11 @@
+ #include "xr_parser.h"
+ #include "mi_xmlrpc.h"
+ #include "xr_server.h"
++
++#ifdef XMLRPC_OLD_VERSION
+ #include <xmlrpc_abyss.h>
++#endif
++
+
+ gen_lock_t *xr_lock;
+
+@@ -149,13 +154,20 @@
+ }
+
+
+-
++#ifdef XMLRPC_OLD_VERSION
+ xmlrpc_value* default_method (xmlrpc_env* env,
+ char* host,
+ char* methodName,
+ xmlrpc_value* paramArray,
+- void* serverInfo){
+-
++ void* serverInfo)
++#else
++xmlrpc_value* default_method (xmlrpc_env* env,
++ const char* host,
++ const char* methodName,
++ xmlrpc_value* paramArray,
++ void* serverInfo)
++#endif
++{
+ xmlrpc_value* ret = NULL;
+ struct mi_root* mi_cmd = NULL;
+ struct mi_root* mi_rpl = NULL;
+@@ -166,7 +178,7 @@
+
+ DBG("DEBUG: mi_xmlrpc: default_method: starting up.....\n");
+
+- f = lookup_mi_cmd(methodName, strlen(methodName));
++ f = lookup_mi_cmd((char*)methodName, strlen(methodName));
+
+ if ( f == 0 ) {
+ LOG(L_ERR, "ERROR: mi_xmlrpc: default_method: Command %s is not "
+@@ -265,11 +277,8 @@
+ }
+
+
+-int set_default_method ( xmlrpc_env * env )
++int set_default_method ( xmlrpc_env * env , xmlrpc_registry * registry)
+ {
+- xmlrpc_registry * registry;
+-
+- registry = xmlrpc_server_abyss_registry();
+ xmlrpc_registry_set_default_method(env, registry, &default_method, NULL);
+
+ if ( env->fault_occurred ) {
+diff -urNad openser-1.2.2~/modules/mi_xmlrpc/xr_server.h openser-1.2.2/modules/mi_xmlrpc/xr_server.h
+--- openser-1.2.2~/modules/mi_xmlrpc/xr_server.h 2007-10-06 11:58:22.745228395 +0200
++++ openser-1.2.2/modules/mi_xmlrpc/xr_server.h 2007-10-06 11:58:24.244955548 +0200
+@@ -22,6 +22,7 @@
+ * History:
+ * ---------
+ * 2006-11-30 first version (lavinia)
++ * 2007-10-05 support for libxmlrpc-c3 version 1.x.x added (dragos)
+ */
+
+
+@@ -32,10 +33,18 @@
+ #define XMLRPC_WANT_INTERNAL_DECLARATIONS
+ #include <xmlrpc.h>
+
++#ifdef XMLRPC_OLD_VERSION
++
+ xmlrpc_value * default_method ( xmlrpc_env * env, char * host,
+- char * methodName, xmlrpc_value * paramArray, void * serverInfo );
++ char * methodName, xmlrpc_value * paramArray, void * serverInfo );
+
+-int set_default_method ( xmlrpc_env * env );
++#else
++
++xmlrpc_value * default_method ( xmlrpc_env * env, const char * host,
++ const char * methodName, xmlrpc_value * paramArray, void * serverInfo );
++
++#endif
++int set_default_method ( xmlrpc_env * env , xmlrpc_registry * registry);
+
+ int init_async_lock();
+
Propchange: openser/trunk/debian/patches/02_xmlrpc_update.dpatch
------------------------------------------------------------------------------
svn:executable = *
More information about the Pkg-voip-commits
mailing list