The problem:

In order to pipeline requests to the same webserver the following function was created, following the documentation for the Zend_Http_Client documentation. However, there appears to be something in the Zend_XmlRpc_Client code which isn't taking into account URI changes.

For this example let's suppose class1 has one function called hello, and class2 one function called goodbye.

class myTest {

protected $_client;

protected function getClient($url,$class) {		
  if (isset ( $this->_client[$url] )) {
    $this->_client[$url]->getHttpClient ()->resetParameters();
    $this->_client[$url]->getHttpClient ()->setUri ( $url . $class);
    return $this->_client [$url];
  } else {
    $this->_client [$url] = new Zend_XmlRpc_Client ( $url . $class);
    $this->_client [$url]->getHttpClient ()->setConfig ( array ('adapter' => 'Zend_Http_Client_Adapter_Socket', 'keepalive' => true ) );
    $this->_client [$url]->setSkipSystemLookup ( true );
    return $this->client [$url];

public function doFirst() {
  $client = $this->getClient('http://example.com/','class1');

public function doSecond() {
 $client = $this->getClient('http://example.com/','class2');

$t = new myTest();
$t->doSecond(); // This call will fail, as the http request is going to be hitting the first URL.