Index: mollom.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/mollom/mollom.inc,v
retrieving revision 1.8
diff -u -p -r1.8 mollom.inc
--- mollom.inc	12 Sep 2010 18:12:50 -0000	1.8
+++ mollom.inc	12 Sep 2010 23:04:03 -0000
@@ -68,24 +68,7 @@ function _mollom_authentication($public_
 function _mollom_retrieve_server_list() {
   // Start from a hard-coded list of servers.
   $servers = array('http://xmlrpc1.mollom.com', 'http://xmlrpc2.mollom.com', 'http://xmlrpc3.mollom.com');
-
-  // Use the list of servers to retrieve a list of servers from mollom.com:
-  foreach ($servers as $server) {
-    $result = xmlrpc($server . '/' . MOLLOM_API_VERSION, array('mollom.getServerList' => array(_mollom_authentication())));
-    if (!xmlrpc_error()) {
-      return $result;
-    }
-    else {
-      _mollom_watchdog(array(
-        'Error @errno %message from %server mollom.getServerList' => array(
-          '@errno' => xmlrpc_errno(),
-          '%server' => $server,
-          '%message' => xmlrpc_error_msg(),
-        ),
-      ), WATCHDOG_ERROR);
-    }
-  }
-
-  return xmlrpc_errno();
+  variable_set('mollom_servers', $servers);
+  return mollom('mollom.getServerList');
 }
 
Index: mollom.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/mollom/mollom.module,v
retrieving revision 1.74
diff -u -p -r1.74 mollom.module
--- mollom.module	12 Sep 2010 22:05:55 -0000	1.74
+++ mollom.module	12 Sep 2010 23:09:07 -0000
@@ -1516,7 +1516,10 @@ function mollom($method, $data = array()
       ));
 
       if ($result === FALSE && ($error = xmlrpc_error())) {
-        if ($error->code === MOLLOM_REFRESH) {
+        // Prevent infinite recursion for mollom.getServerList and fall back to
+        // regular error case instead; i.e., add a watchdog message and try next
+        // server in the list.
+        if ($error->code === MOLLOM_REFRESH && $method != 'mollom.getServerList') {
           // Avoid endless loops.
           if (!$refresh) {
             $refresh = TRUE;
@@ -1586,7 +1589,7 @@ function mollom($method, $data = array()
   //   likely want to either embed the fallback handling into form processing,
   //   or introduce a new helper function that is invoked instead of mollom()
   //   during form processing.
-  if ($method != 'mollom.verifyKey') {
+  if ($method != 'mollom.verifyKey' && $method != 'mollom.getServerList') {
     _mollom_fallback();
   }
 
