diff --git a/includes/xmlrpc.inc b/includes/xmlrpc.inc index 4895e9802a0..28b160b2437 100644 --- a/includes/xmlrpc.inc +++ b/includes/xmlrpc.inc @@ -342,7 +342,7 @@ EOD; } -function xmlrpc_error($code = NULL, $message = NULL) { +function xmlrpc_error($code = NULL, $message = NULL, $reset = FALSE) { static $xmlrpc_error; if (isset($code)) { $xmlrpc_error = new stdClass(); @@ -351,6 +351,9 @@ function xmlrpc_error($code = NULL, $message = NULL) { $xmlrpc_error->message = $message; module_invoke('system', 'check_http_request'); } + elseif ($reset) { + $xmlrpc_error = NULL; + } return $xmlrpc_error; } @@ -427,6 +430,7 @@ function xmlrpc_base64_get_xml($xmlrpc_base64) { function _xmlrpc() { $args = func_get_args(); $url = array_shift($args); + xmlrpc_clear_error(); if (is_array($args[0])) { $method = 'system.multicall'; $multicall_args = array(); @@ -475,3 +479,10 @@ function xmlrpc_error_msg() { $error = xmlrpc_error(); return ($error != NULL ? $error->message : NULL); } + +/** + * Clears any previous error. + */ +function xmlrpc_clear_error() { + xmlrpc_error(NULL, NULL, TRUE); +} \ No newline at end of file