/** * Handles the given request xml. * * @param string $request_xml The incoming request. * * @return string */ public function handle($request_xml) { $result = $this->parseRequest($request_xml); if (!$result || Ripcord::isFault($result)) { return $result; } else { $method = $result['methodName']; $params = $result['params']; } if ($method == 'system.multiCall' || $method == 'system.multicall') { // php's xml-rpc server (xmlrpc-epi) crashes on multi call, so handle it ourselves... fixed in php 5.3.2 $result = $this->multiCall($params); } else { try { $result = xmlrpc_server_call_method($this->xmlrpc, $request_xml, null, $this->outputOptions); } catch (\Exception $e) { $result = xmlrpc_encode_request(null, Ripcord::fault($e->getCode(), $e->getMessage()), $this->outputOptions); } } return $result; }