summaryrefslogtreecommitdiff
path: root/modules/extra/xmlrpc.cpp
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2025-02-24 03:21:42 +0000
committerSadie Powell <sadie@witchery.services>2025-02-24 03:41:06 +0000
commita111b40560bf305653b07d8f7289484793a32588 (patch)
treeb90c6a1070120b5115641414ac2c806efde7c8fa /modules/extra/xmlrpc.cpp
parent2ccd182d2e6689877eba911452eaa8a06e82ac0b (diff)
Allow use of a non-map type as the root RPC element.
Diffstat (limited to 'modules/extra/xmlrpc.cpp')
-rw-r--r--modules/extra/xmlrpc.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/modules/extra/xmlrpc.cpp b/modules/extra/xmlrpc.cpp
index 1d9ab7762..681b230dc 100644
--- a/modules/extra/xmlrpc.cpp
+++ b/modules/extra/xmlrpc.cpp
@@ -116,7 +116,6 @@ public:
Anope::string param;
if (xmlrpc_value_type(value) != XMLRPC_TYPE_STRING)
{
- // TODO: error;
xmlrpc_env_set_fault(&env, RPC::ERR_INVALID_REQUEST, "Anope XML-RPC only supports strings");
SendError(reply, env);
xmlrpc_DECREF(value);
@@ -160,8 +159,11 @@ public:
return;
}
- auto *value = xmlrpc_struct_new(&env);
- SerializeMap(env, value, request);
+ xmlrpc_value *value;
+ if (request.GetRoot())
+ value = SerializeElement(env, request.GetRoot().value());
+ else
+ value = xmlrpc_nil_new(&env);
auto *response = xmlrpc_mem_block_new(&env, 0);
xmlrpc_serialize_response(&env, response, value);