diff -r 5e7a0fedabdf -r 877f952ae2bd web/lib/Zend/XmlRpc/Client.php --- a/web/lib/Zend/XmlRpc/Client.php Thu Mar 21 17:31:31 2013 +0100 +++ b/web/lib/Zend/XmlRpc/Client.php Thu Mar 21 19:50:53 2013 +0100 @@ -15,9 +15,9 @@ * @category Zend * @package Zend_XmlRpc * @subpackage Client - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: Client.php 20096 2010-01-06 02:05:09Z bkarwin $ + * @version $Id: Client.php 24593 2012-01-05 20:35:02Z matthew $ */ @@ -71,7 +71,7 @@ * @category Zend * @package Zend_XmlRpc * @subpackage Client - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_XmlRpc_Client @@ -211,7 +211,7 @@ /** * Returns a proxy object for more convenient method calls * - * @param $namespace Namespace to proxy or empty string for none + * @param string $namespace Namespace to proxy or empty string for none * @return Zend_XmlRpc_Client_ServerProxy */ public function getProxy($namespace = '') @@ -294,7 +294,7 @@ $response = new Zend_XmlRpc_Response(); } $this->_lastResponse = $response; - $this->_lastResponse->loadXml($httpResponse->getBody()); + $this->_lastResponse->loadXml(trim($httpResponse->getBody())); } /** @@ -333,22 +333,33 @@ if (!is_array($params)) { $params = array($params); } - foreach ($params as $key => $param) { + foreach ($params as $key => $param) + { if ($param instanceof Zend_XmlRpc_Value) { continue; } - $type = Zend_XmlRpc_Value::AUTO_DETECT_TYPE; - foreach ($signatures as $signature) { - if (!is_array($signature)) { - continue; + if (count($signatures) > 1) { + $type = Zend_XmlRpc_Value::getXmlRpcTypeByValue($param); + foreach ($signatures as $signature) { + if (!is_array($signature)) { + continue; + } + if (isset($signature['parameters'][$key])) { + if ($signature['parameters'][$key] == $type) { + break; + } + } } + } elseif (isset($signatures[0]['parameters'][$key])) { + $type = $signatures[0]['parameters'][$key]; + } else { + $type = null; + } - if (isset($signature['parameters'][$key])) { - $type = $signature['parameters'][$key]; - $type = in_array($type, $validTypes) ? $type : Zend_XmlRpc_Value::AUTO_DETECT_TYPE; - } + if (empty($type) || !in_array($type, $validTypes)) { + $type = Zend_XmlRpc_Value::AUTO_DETECT_TYPE; } $params[$key] = Zend_XmlRpc_Value::getXmlRpcValue($param, $type);