69 #include <libxml/xmlmemory.h>    70 #include <libxml/tree.h>    71 #include <libxml/debugXML.h>    72 #include <libxml/encoding.h>    77 #define XR_ENABLE_EMPTY_STRING_VALUES    79 #define OPTIMAL_STRUCT_SIZE 7   168     { 
"DATETIME.ISO8601", 
xr_date },
   195 #define NUMBER_OF_METHODCALL_ELEMENTS \   196     sizeof(methodcall_elements)/sizeof(methodcall_elements[0])   197 #define NUMBER_OF_METHODRESPONSE_ELEMENTS \   198     sizeof(methodresponse_elements)/sizeof(methodresponse_elements[0])   199 #define NUMBER_OF_PARAMS_ELEMENTS \   200     sizeof(params_elements)/sizeof(params_elements[0])   201 #define NUMBER_OF_PARAM_ELEMENTS \   202     sizeof(param_elements)/sizeof(param_elements[0])   203 #define NUMBER_OF_VALUE_ELEMENTS \   204     sizeof(value_elements)/sizeof(value_elements[0])   205 #define NUMBER_OF_STRUCT_ELEMENTS \   206     sizeof(struct_elements)/sizeof(struct_elements[0])   207 #define NUMBER_OF_MEMBER_ELEMENTS \   208     sizeof(member_elements)/sizeof(member_elements[0])   209 #define NUMBER_OF_ARRAY_ELEMENTS \   210     sizeof(array_elements)/sizeof(array_elements[0])   211 #define NUMBER_OF_DATA_ELEMENTS \   212     sizeof(data_elements)/sizeof(data_elements[0])   213 #define NUMBER_OF_FAULT_ELEMENTS \   214     sizeof(fault_elements)/sizeof(fault_elements[0])   236                 List *params, 
int *n);
   297     if (
method == NULL || value == NULL)
   314                          "%*s<methodName>%S</methodName>\n",
   324             if (os_value == NULL) {
   325                 error(0, 
"XMLRPC: Could not print method call, param %ld malformed", i);
   330                                  level + 4, 
"", os_value, level + 4, 
"");
   358     if (fault == NULL) 
return;
   366     if (fault == NULL) 
return -1;
   373     if (fault == NULL) 
return NULL;
   382     if (fault == NULL) 
return NULL;
   387                              "%*s<name>faultCode</name>\n"   388                              "%*s<value><int>%ld</int></value>\n"   391                              "%*s<name>faultString</name>\n"   392                              "%*s<value><string>%S</string></value>\n"   395                        "%*s</value>\n%*s</fault>\n",
   396                        level, 
"", level+2, 
"", level+4, 
"", level+6, 
"", 
   397                        level+8, 
"", level+8, 
"",
   399                        level+6, 
"", level+6, 
"", level+8, 
"", level+8, 
"",
   401                        level+6, 
"", level+4, 
"", level+2, 
"", level, 
"");
   435     if (
response == NULL || value == NULL)
   439         error(0, 
"XMLRPC: Method Response may contain only one param.");
   443         error(0, 
"XMLRPC: Fault Response may not contain any param.");
   462         error(0, 
"XMLRPC response is not fault response.");
   472         error(0, 
"XMLRPC response is not fault response.");
   482     Octstr *body = NULL, *os_value = NULL;
   488                              "%*s<params>\n%*s<param>\n"   490                              "%*s</param>\n%*s</params>\n"   491                              "%*s</methodResponse>\n",
   492                              level, 
"", level+2, 
"", level+4, 
"", os_value, 
   493                              level+4, 
"", level+2, 
"", level, 
"");
   500                              "%*s</methodResponse>\n",
   501                              level, 
"", os_value, level, 
"");
   568     if (post_body == NULL) {
   581     pDoc = xmlParseMemory(body, 
size);
   599     if (xrdoc->
d_type != d_type)
   600         warning(0, 
"Destroying document with different type then given.");
   618         error(0, 
"Wrong xmlrpc document type. Param not added.");
   630         error(0, 
"Unknown xmlrpc document type. Param not added.");
   656     Octstr *body = NULL, *pref = NULL;
   661     if (xrdoc->
d_type != d_type) {
   662         error(0, 
"Wrong xmlrpc document type.");
   672         error(0, 
"Unknown xmlrpc document type.");
   676         pref = 
octstr_format(
"%*s<?xml version=\"1.0\"?>\n", level, 
"");
   690     if (http_ref == NULL || xrdoc == NULL)
   693     if (xrdoc->
d_type != d_type) {
   694         error(0, 
"Wrong xmlrpc document type.");
   712                        url, headers, body, 0, ref, NULL);
   778             error(0, 
"XMLRPC: value type not supported.");
   801             error(0, 
"XMLRPC: value type not supported.");
   838             error(0, 
"XMLRPC: value type not supported.");
   845     Octstr *body = NULL, *os = NULL;
   866                              level, 
"", os, level, 
"");
   888     scalar->
s_str = NULL;
   893 #ifdef XR_ENABLE_EMPTY_STRING_VALUES   896             error(0,
"XML-RPC: scalar value may not be null!");
   899 #ifdef XR_ENABLE_EMPTY_STRING_VALUES   906                 scalar->
s_int = *(
long*)arg;
   910                 scalar->
s_bool = *(
int*)arg;
   926             error(0,
"XML-RPC: scalar type not supported!");
   958     if (scalar->
s_type != s_type) {
   959         error(0, 
"XMLRPC: Scalar content request with bogus type");
   970             error(0,
"XML-RPC: scalar type not supported!");
   985                                level, 
"", scalar->
s_int);
   989                                level, 
"", scalar->
s_bool);
   996             if (scalar->
s_str == NULL) {
   997 #ifdef XR_ENABLE_EMPTY_STRING_VALUES  1010             os = 
octstr_format(
"%*s<datetime.iso8601>%S</datetime.iso8601>\n", 
  1011                                level, 
"", scalar->
s_date);
  1031     member->
name = NULL;
  1032     member->
value = NULL;
  1044     if (destroy_value == 1)
  1058     if (call == NULL || call->
methodcall == NULL)
  1124         || 
name == NULL || value == NULL)
  1166     Octstr *body, *os_val, *key;
  1177         member_val = 
dict_get(v_struct, key);
  1179         if (os_val == NULL) {
  1186                                      "%*s<name>%S</name>\n%S"  1188                                    level+2, 
"", level+4, 
"",
  1220     if (xrarray == NULL || xrarray->
v_type != 
xr_array || value == NULL)
  1263     Octstr *body, *os_element;
  1267     if (v_array == NULL)
  1270     body = 
octstr_format(
"%*s<array>\n%*s<data>\n", level, 
"", level+2, 
"");
  1275         if (os_element == NULL) {
  1284                          level+2, 
"", level, 
"");
  1328         error(0, 
"XMLRPC object is not fault response.");
  1338         error(0, 
"XMLRPC object is not fault response.");
  1375     node = xmlDocGetRootElement(document);
  1380     if (node == NULL || node->name == NULL) {
  1381         error(0, 
"XMLRPC: XML document - not valid root node!");
  1434                                                "methodCall" : 
"methodResponse"));
  1446     switch (node->type) {
  1448         case XML_ELEMENT_NODE:
  1454         case XML_COMMENT_NODE:
  1465                                                "in the XML-RPC source.");
  1470     if (node->next != NULL)
  1480     xmlChar *content_buff;
  1486     if (node->name == NULL) {
  1487         error(0, 
"XMLRPC: XML methodcall element nodes without name!");
  1525             content_buff = xmlNodeListGetString(doc, node->xmlChildrenNode, 1);
  1526             if (content_buff != NULL) {
  1528                 xmlFree(content_buff);
  1532                                            "at level <methodCall>");
  1538                                                "at level <methodCall>");
  1558     switch (node->type) {
  1560         case XML_ELEMENT_NODE:
  1564                                                    "in the XML-RPC source.", node->name);
  1572         case XML_COMMENT_NODE:
  1583                                                "in the XML-RPC source.");
  1588     if (node->next != NULL) {
  1607     if (node->name == NULL) {
  1608         error(0, 
"XMLRPC: XML methodResponse element nodes without name!");
  1645         return parse_fault(doc, node->xmlChildrenNode, xrdoc, methodresponse->
fault);
  1653         if (
status < 0) 
return -1;
  1657                                                "at level <methodResponse>");
  1674     switch (node->type) {
  1676         case XML_ELEMENT_NODE:
  1681         case XML_COMMENT_NODE:
  1696     if (node->next != NULL)
  1697            if (
parse_params(doc, node->next, xrdoc, params) == -1)
  1714     if (node->name == NULL) {
  1715         error(0, 
"XMLRPC: XML params element nodes without name!");
  1736                                            "in XML source at level <params>", 
  1751         if (
parse_param(doc, node->xmlChildrenNode, xrdoc, params, &n) == -1)
  1768     switch (node->type) {
  1770         case XML_ELEMENT_NODE:
  1784         case XML_COMMENT_NODE:
  1799     if (node->next != NULL)
  1800         if (
parse_param(doc, node->next, xrdoc, params, n) == -1)
  1816     if (node->name == NULL) {
  1817         error(0, 
"XMLRPC: XML param element nodes without name!");
  1838                                            "in XML source at level <param>", 
  1854         if (
parse_value(doc, node->xmlChildrenNode, xrdoc, value) == -1) {
  1874     switch (node->type) {
  1876         case XML_ELEMENT_NODE:
  1881         case XML_COMMENT_NODE:
  1896     if (node->next != NULL)
  1897         if (
parse_value(doc, node->next, xrdoc, value) == -1)
  1908     xmlChar *content_buff;
  1916     if (node->name == NULL) {
  1917         error(0, 
"XMLRPC: XML value element nodes without name!");
  1938                                            "in XML source at level <value>", 
  1946     content_buff = xmlNodeListGetString(doc, node->xmlChildrenNode, 1);
  1947     if (content_buff != NULL) {
  1949         xmlFree(content_buff);
  1972 #ifndef XR_ENABLE_EMPTY_STRING_VALUES  1975             if (value == NULL) {
  2081     switch (node->type) {
  2083         case XML_ELEMENT_NODE:
  2088         case XML_COMMENT_NODE:
  2103     if (node->next != NULL)
  2104         if (
parse_struct(doc, node->next, xrdoc, members) == -1)
  2120     if (node->name == NULL) {
  2121         error(0, 
"XMLRPC: XML struct element nodes without name!");
  2142                                            "in XML source at level <struct>", 
  2158         if (
parse_member(doc, node->xmlChildrenNode, xrdoc, member) == -1) {
  2184     switch (node->type) {
  2186         case XML_ELEMENT_NODE:
  2191         case XML_COMMENT_NODE:
  2206     if (node->next != NULL)
  2207            if (
parse_member(doc, node->next, xrdoc, member) == -1)
  2217     xmlChar *content_buff;
  2223     if (node->name == NULL) {
  2224         error(0, 
"XMLRPC: XML member element nodes without name!");
  2245                                            "in XML source at level <member>", 
  2261         if (member->
name != NULL) {
  2264                                                "in XML source at level <member>");
  2267         content_buff = xmlNodeListGetString(doc, node->xmlChildrenNode, 1);
  2268         if (content_buff != NULL) {
  2270             xmlFree(content_buff);
  2274                                           "at level <member>");
  2281             member->
value = NULL;
  2297     switch (node->type) {
  2299         case XML_ELEMENT_NODE:
  2304         case XML_COMMENT_NODE:
  2319     if (node->next != NULL)
  2320         if (
parse_array(doc, node->next, xrdoc, elements) == -1)
  2335     if (node->name == NULL) {
  2336         error(0, 
"XMLRPC: XML array element nodes without name!");
  2357                                            "in XML source at level <array>", 
  2372         if (
parse_data(doc, node->xmlChildrenNode, xrdoc, elements) == -1)
  2390     switch (node->type) {
  2392         case XML_ELEMENT_NODE:
  2397         case XML_COMMENT_NODE:
  2412     if (node->next != NULL)
  2413            if (
parse_data(doc, node->next, xrdoc, elements) == -1)
  2429     if (node->name == NULL) {
  2430         error(0, 
"XMLRPC: XML data element nodes without name!");
  2451                                            "in XML source at level <data>", 
  2467         if (
parse_value(doc, node->xmlChildrenNode, xrdoc, value) == -1) {
  2488     switch (node->type) {
  2490         case XML_ELEMENT_NODE:
  2495         case XML_COMMENT_NODE:
  2510     if (node->next != NULL)
  2511            if (
parse_fault(doc, node->next, xrdoc, fault) == -1)
  2527     if (node->name == NULL) {
  2528         error(0, 
"XMLRPC: XML fault element nodes without name!");
  2549                                            "in XML source at level <fault>", 
  2565         if (
parse_value(doc, node->xmlChildrenNode, xrdoc, value) == -1) {
  2590                                                "in XML source at level <fault>");
  2602                                            "in XML source at level <member>");
 static void xmlrpc_call_destroy(XMLRPCMethodCall *call)
 
Dict * dict_create(long size_hint, void(*destroy_value)(void *))
 
static int xmlrpc_response_is_fault(XMLRPCMethodResponse *response)
 
void error(int err, const char *fmt,...)
 
Octstr * xmlrpc_value_print(XMLRPCValue *val, int level)
 
static int parse_methodresponse(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, XMLRPCMethodResponse *methodresponse, int *n)
 
XMLRPCValue * xmlrpc_create_string_value(Octstr *val)
 
XMLRPCDocument * xmlrpc_doc_create_response(void)
 
static int parse_array_element(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, List *elements)
 
int xmlrpc_is_fault(XMLRPCDocument *response)
 
int xmlrpc_add_member(XMLRPCValue *xrstruct, Octstr *name, XMLRPCValue *value)
 
static void xmlrpc_response_destroy(XMLRPCMethodResponse *response)
 
void http_header_add(List *headers, char *name, char *contents)
 
static int parse_data(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, List *elements)
 
void gwlist_append(List *list, void *item)
 
static Octstr * xmlrpc_call_get_name(XMLRPCMethodCall *call)
 
int xmlrpc_value_get_type_smart(XMLRPCValue *val)
 
void octstr_append(Octstr *ostr1, const Octstr *ostr2)
 
void gwlist_produce(List *list, void *item)
 
long gwlist_len(List *list)
 
static void xmlrpc_fault_destroy(XMLRPCFault *fault)
 
static int parse_document(xmlDocPtr document, XMLRPCDocument *xrdoc)
 
static int parse_struct(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, Dict *members)
 
static XMLRPCMethodCall * xmlrpc_call_create(Octstr *name)
 
void * gwlist_get(List *list, long pos)
 
static int parse_fault_element(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, XMLRPCFault *fault)
 
#define NUMBER_OF_VALUE_ELEMENTS
 
static int parse_value_element(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, XMLRPCValue *xrvalue)
 
Octstr * xmlrpc_scalar_print(XMLRPCScalar *scalar, int level)
 
XMLRPCValue * xmlrpc_value_create(void)
 
#define xmlrpc_scalar_get_int(scalar)
 
static void xmlrpc_member_destroy(XMLRPCMember *member, int destroy_value)
 
static XMLRPCMethodResponse * xmlrpc_response_create(void)
 
void * xmlrpc_get_element_content(XMLRPCValue *xrarray, int i)
 
void xmlrpc_value_destroy_item(void *val)
 
Octstr * xmlrpc_print_array(List *v_array, int level)
 
XMLRPCMethodResponse * methodresponse
 
#define NUMBER_OF_PARAMS_ELEMENTS
 
static int parse_params(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, List *params)
 
int xmlrpc_add_element_scalar(XMLRPCValue *xrarray, int type, void *arg)
 
void xmlrpc_scalar_destroy(XMLRPCScalar *scalar)
 
void octstr_convert_to_html_entities(Octstr *input)
 
void octstr_strip_blanks(Octstr *text)
 
int xmlrpc_value_get_type(XMLRPCValue *val)
 
XMLRPCMethodCall * methodcall
 
long xmlrpc_get_faultcode(XMLRPCDocument *faultresponse)
 
#define octstr_get_cstr(ostr)
 
#define NUMBER_OF_FAULT_ELEMENTS
 
int xmlrpc_parse_status(XMLRPCDocument *xrdoc)
 
static int parse_methodcall_element(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, XMLRPCMethodCall *methodcall)
 
#define OPTIMAL_STRUCT_SIZE
 
XMLRPCValue * xmlrpc_get_element(XMLRPCValue *xrarray, int i)
 
Octstr * xmlrpc_doc_print(XMLRPCDocument *xrdoc, int d_type, int level)
 
static int parse_params_element(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, List *params)
 
Octstr * xmlrpc_get_faultstring(XMLRPCDocument *faultresponse)
 
long octstr_parse_double(double *nump, Octstr *ostr, long pos)
 
static int parse_array(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, List *elements)
 
static int parse_struct_element(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, Dict *members)
 
static int parse_data_element(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, List *elements)
 
static int parse_methodresponse_element(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, XMLRPCMethodResponse *methodresponse)
 
void gwlist_unlock(List *list)
 
void http_start_request(HTTPCaller *caller, int method, Octstr *url, List *headers, Octstr *body, int follow, void *id, Octstr *certkeyfile)
 
static int xmlrpc_call_add_param(XMLRPCMethodCall *method, XMLRPCValue *value)
 
XMLRPCValue * xmlrpc_create_scalar_value(int type, void *arg)
 
static Octstr * xmlrpc_fault_get_string(XMLRPCFault *fault)
 
Octstr * octstr_imm(const char *cstr)
 
int xmlrpc_doc_add_value(XMLRPCDocument *xrdoc, int d_type, XMLRPCValue *value)
 
void octstr_insert(Octstr *ostr1, const Octstr *ostr2, long pos)
 
#define xmlrpc_get_scalar_value_type(value)
 
static int parse_param_element(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, List *params)
 
static int parse_member(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, XMLRPCMember *member)
 
void * dict_get(Dict *dict, Octstr *key)
 
static xmlrpc_table_t array_elements[]
 
#define NUMBER_OF_STRUCT_ELEMENTS
 
void xmlrpc_value_destroy(XMLRPCValue *val)
 
XMLRPCDocument * xmlrpc_doc_create(void)
 
int xmlrpc_get_element_type(XMLRPCValue *xrarray, int i)
 
static xmlrpc_table_t struct_elements[]
 
#define octstr_duplicate(ostr)
 
int xmlrpc_count_elements(XMLRPCValue *xrarray)
 
long dict_key_count(Dict *dict)
 
XMLRPCDocument * xmlrpc_doc_parse(Octstr *post_body, int d_type)
 
static xmlrpc_table_t methodcall_elements[]
 
void * xmlrpc_scalar_get_content(XMLRPCScalar *scalar, int s_type)
 
int octstr_case_compare(const Octstr *os1, const Octstr *os2)
 
void * xmlrpc_value_get_content(XMLRPCValue *val)
 
void warning(int err, const char *fmt,...)
 
XMLRPCDocument * xmlrpc_doc_create_call(Octstr *name)
 
#define NUMBER_OF_MEMBER_ELEMENTS
 
#define NUMBER_OF_DATA_ELEMENTS
 
Octstr * xmlrpc_get_call_name(XMLRPCDocument *call)
 
Octstr * octstr_format(const char *fmt,...)
 
void octstr_destroy(Octstr *ostr)
 
long xmlrpc_count_members(XMLRPCValue *xrstruct)
 
#define octstr_create(cstr)
 
void octstr_destroy_item(void *os)
 
static XMLRPCMember * xmlrpc_member_create(void)
 
int xmlrpc_add_element(XMLRPCValue *xrarray, XMLRPCValue *value)
 
int xmlrpc_value_set_content(XMLRPCValue *val, void *content)
 
static xmlrpc_table_t member_elements[]
 
static int parse_param(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, List *params, int *n)
 
static long xmlrpc_fault_get_code(XMLRPCFault *fault)
 
XMLRPCValue * xmlrpc_get_param(XMLRPCDocument *xrdoc, int i)
 
XMLRPCScalar * xmlrpc_scalar_create(int type, void *arg)
 
int xmlrpc_doc_add_scalar(XMLRPCDocument *xrdoc, int d_type, int type, void *arg)
 
#define NUMBER_OF_METHODCALL_ELEMENTS
 
static int parse_value(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, XMLRPCValue *value)
 
void gwlist_lock(List *list)
 
static int xmlrpc_response_add_param(XMLRPCMethodResponse *response, XMLRPCValue *value)
 
static int parse_fault(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, XMLRPCFault *fault)
 
long octstr_len(const Octstr *ostr)
 
static xmlrpc_table_t fault_elements[]
 
void dict_destroy(Dict *dict)
 
static int parse_methodcall(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, XMLRPCMethodCall *methodcall)
 
Octstr * xmlrpc_print_struct(Dict *v_struct, int level)
 
int xmlrpc_doc_send(XMLRPCDocument *xrdoc, int d_type, HTTPCaller *http_ref, Octstr *url, List *headers, void *ref)
 
static int parse_member_element(xmlDocPtr doc, xmlNodePtr node, XMLRPCDocument *xrdoc, XMLRPCMember *member)
 
void * gwlist_consume(List *list)
 
static xmlrpc_table_t methodresponse_elements[]
 
int xmlrpc_get_member_type(XMLRPCValue *xrstruct, Octstr *name)
 
XMLRPCValue * xmlrpc_create_struct_value(int count_members)
 
long http_header_remove_all(List *headers, char *name)
 
XMLRPCValue * xmlrpc_create_double_value(double val)
 
long octstr_parse_long(long *nump, Octstr *ostr, long pos, int base)
 
void * xmlrpc_get_member_content(XMLRPCValue *xrstruct, Octstr *name)
 
void octstr_format_append(Octstr *os, const char *fmt,...)
 
static xmlrpc_2table_t value_elements[]
 
XMLRPCValue * xmlrpc_get_member(XMLRPCValue *xrstruct, Octstr *name)
 
XMLRPCValue * xmlrpc_create_array_value(void)
 
#define xmlrpc_scalar_get_string(scalar)
 
List * dict_keys(Dict *dict)
 
XMLRPCDocument * xmlrpc_doc_create_faultresponse(long faultcode, Octstr *faultstring)
 
int xmlrpc_get_type_param(XMLRPCDocument *xrdoc, int i)
 
void * xmlrpc_get_content_param(XMLRPCDocument *xrdoc, int i)
 
int dict_put_once(Dict *dict, Octstr *key, void *value)
 
static Octstr * xmlrpc_fault_print(XMLRPCFault *fault, int level)
 
static Octstr * xmlrpc_response_get_faultstring(XMLRPCMethodResponse *faultresponse)
 
int xmlrpc_value_set_type(XMLRPCValue *val, int v_type)
 
static Octstr * xmlrpc_response_print(XMLRPCMethodResponse *response, int level)
 
int xmlrpc_add_member_scalar(XMLRPCValue *xrstruct, Octstr *name, int type, void *arg)
 
static xmlrpc_table_t param_elements[]
 
static int response(List *push_headers, Octstr **username, Octstr **password)
 
#define NUMBER_OF_METHODRESPONSE_ELEMENTS
 
static XMLRPCFault * xmlrpc_fault_create(long fcode, Octstr *fstring)
 
void octstr_shrink_blanks(Octstr *text)
 
int xmlrpc_scalar_get_type(XMLRPCScalar *scalar)
 
#define NUMBER_OF_PARAM_ELEMENTS
 
static Octstr * xmlrpc_call_print(XMLRPCMethodCall *call, int level)
 
static xmlrpc_table_t data_elements[]
 
void xmlrpc_doc_destroy(XMLRPCDocument *xrdoc, int d_type)
 
XMLRPCValue * xmlrpc_create_int_value(long val)
 
Octstr * xmlrpc_parse_error(XMLRPCDocument *xrdoc)
 
static xmlrpc_table_t params_elements[]
 
#define NUMBER_OF_ARRAY_ELEMENTS
 
int xmlrpc_count_params(XMLRPCDocument *xrdoc)
 
static long xmlrpc_response_get_faultcode(XMLRPCMethodResponse *faultresponse)
 
void gwlist_destroy(List *list, gwlist_item_destructor_t *destructor)