Index: includes/xmlrpc.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/xmlrpc.inc,v
retrieving revision 1.40
diff -u -p -r1.40 xmlrpc.inc
--- includes/xmlrpc.inc	18 Apr 2007 20:35:45 -0000	1.40
+++ includes/xmlrpc.inc	27 Jun 2007 00:01:48 -0000
@@ -257,7 +257,7 @@ function xmlrpc_message_tag_close($parse
     case 'value':
       // If no type is indicated, the type is string
       // We take special care for empty values
-      if (trim($xmlrpc_message->current_tag_contents) != '' || $xmlrpc_message->last_open == 'value') {
+      if (trim($xmlrpc_message->current_tag_contents) != '' || (isset($xmlrpc_message->last_open) && $xmlrpc_message->last_open == 'value')) {
         $value = (string)$xmlrpc_message->current_tag_contents;
         $value_flag = TRUE;
       }
Index: includes/xmlrpcs.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/xmlrpcs.inc,v
retrieving revision 1.21
diff -u -p -r1.21 xmlrpcs.inc
--- includes/xmlrpcs.inc	5 Jul 2006 11:45:51 -0000	1.21
+++ includes/xmlrpcs.inc	27 Jun 2007 00:01:48 -0000
@@ -67,7 +67,7 @@ function xmlrpc_server($callbacks) {
   xmlrpc_server_set($xmlrpc_server);
   $result = xmlrpc_server_call($xmlrpc_server, $xmlrpc_server->message->methodname, $xmlrpc_server->message->params);
 
-  if ($result->is_error) {
+  if (isset($result->is_error) && $result->is_error) {
     xmlrpc_server_error($result);
   }
   // Encode the result
@@ -315,4 +315,4 @@ function xmlrpc_server_method_signature(
 function xmlrpc_server_method_help($method) {
   $xmlrpc_server = xmlrpc_server_get();
   return $xmlrpc_server->help[$method];
-}
\ No newline at end of file
+}
Index: modules/drupal/drupal.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/drupal/drupal.install,v
retrieving revision 1.6
diff -u -p -r1.6 drupal.install
--- modules/drupal/drupal.install	25 May 2007 12:46:44 -0000	1.6
+++ modules/drupal/drupal.install	27 Jun 2007 00:01:48 -0000
@@ -26,3 +26,14 @@ function drupal_uninstall() {
   variable_del('drupal_default_da_server');
   variable_del('drupal_default_da_server_only');
 }
+
+/**
+ * Add PHP and database version information.
+ */
+function drupal_update_6000() {
+  $ret = array();
+  db_add_field($ret, 'client', 'php_version', array('type' => 'varchar', 'length' => 35, 'not null' => TRUE, 'default' => ''));
+  db_add_field($ret, 'client', 'db_type',  array('type' => 'varchar', 'length' => 35, 'not null' => TRUE, 'default' => ''));
+  db_add_field($ret, 'client', 'db_version', array('type' => 'varchar', 'length' => 35, 'not null' => TRUE, 'default' => ''));
+  return $ret;
+}
Index: modules/drupal/drupal.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/drupal/drupal.module,v
retrieving revision 1.146
diff -u -p -r1.146 drupal.module
--- modules/drupal/drupal.module	15 Jun 2007 06:53:26 -0000	1.146
+++ modules/drupal/drupal.module	27 Jun 2007 00:01:48 -0000
@@ -255,10 +255,10 @@ function drupal_client_ping($client, $sy
       $record = db_fetch_object($result);
       $client['cid'] = $record->cid;
       // We have an existing record.
-      db_query("UPDATE {client} SET link = '%s', name = '%s', mail = '%s', slogan = '%s', mission = '%s', users = %d, nodes = %d, version = '%s', changed = '%s' WHERE cid = %d", $client['uid'], $client['link'], $client['name'], $client['mail'], $client['slogan'], $client['mission'], $client['users'], $client['nodes'], $client['version'], time(), $client['cid']);
+      db_query("UPDATE {client} SET link = '%s', name = '%s', mail = '%s', slogan = '%s', mission = '%s', users = %d, nodes = %d, version = '%s', changed = %d, php_version = '%s', db_type = '%s', db_version = '%s' WHERE cid = %d", $client['link'], $client['name'], $client['mail'], $client['slogan'], $client['mission'], $client['users'], $client['nodes'], $client['version'], time(), $client['php_version'], $client['db_type'], $client['db_version'], $client['cid']);
     }
     else {
-      db_query("INSERT INTO {client} (link, name, mail, slogan, mission, users, nodes, version, created, changed) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", $client['link'], $client['name'], $client['mail'], $client['slogan'], $client['mission'], $client['users'], $client['nodes'], $client['version'], time(), time());
+      db_query("INSERT INTO {client} (link, name, mail, slogan, mission, users, nodes, version, created, changed, php_version, db_type, db_version) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', '%s', '%s')", $client['link'], $client['name'], $client['mail'], $client['slogan'], $client['mission'], $client['users'], $client['nodes'], $client['version'], time(), time(), $client['php_version'], $client['db_type'], $client['db_version']);
       $client['cid'] = db_last_insert_id('client', 'cid');
     }
     if (is_array($system)) {
@@ -337,14 +337,17 @@ function drupal_xmlrpc() {
  * Sends a ping to the Drupal directory server.
  */
 function drupal_notify($server) {
-  global $base_url;
+  global $base_url, $db_type;
   $client = array(
     'link' => $base_url,
     'name' => variable_get('site_name', ''),
     'mail' => variable_get('site_mail', ''),
     'slogan' => variable_get('site_slogan', ''),
     'mission' => variable_get('site_mission', ''),
-    'version' => VERSION
+    'version' => VERSION,
+    'php_version' => phpversion(),
+    'db_type' => $db_type,
+    'db_version' => db_version(),
   );
   if (variable_get('drupal_system', 0)) {
     $system = array();
Index: modules/drupal/drupal.schema
===================================================================
RCS file: /cvs/drupal/drupal/modules/drupal/drupal.schema,v
retrieving revision 1.1
diff -u -p -r1.1 drupal.schema
--- modules/drupal/drupal.schema	25 May 2007 12:46:44 -0000	1.1
+++ modules/drupal/drupal.schema	27 Jun 2007 00:01:48 -0000
@@ -4,17 +4,20 @@
 function drupal_schema() {
   $schema['client'] = array(
     'fields' => array(
-      'cid'     => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
-      'link'    => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
-      'name'    => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
-      'mail'    => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
-      'slogan'  => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
-      'mission' => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
-      'users'   => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
-      'nodes'   => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
-      'version' => array('type' => 'varchar', 'length' => 35, 'not null' => TRUE, 'default' => ''),
-      'created' => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
-      'changed' => array('type' => 'int', 'not null' => TRUE, 'default' => 0)
+      'cid'         => array('type' => 'serial', 'unsigned' => TRUE, 'not null' => TRUE),
+      'link'        => array('type' => 'varchar', 'length' => 255, 'not null' => TRUE, 'default' => ''),
+      'name'        => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
+      'mail'        => array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''),
+      'slogan'      => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
+      'mission'     => array('type' => 'text', 'not null' => TRUE, 'size' => 'big'),
+      'users'       => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
+      'nodes'       => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
+      'version'     => array('type' => 'varchar', 'length' => 35, 'not null' => TRUE, 'default' => ''),
+      'created'     => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
+      'changed'     => array('type' => 'int', 'not null' => TRUE, 'default' => 0),
+      'php_version' => array('type' => 'varchar', 'length' => 35, 'not null' => TRUE, 'default' => ''),
+      'db_type'     => array('type' => 'varchar', 'length' => 35, 'not null' => TRUE, 'default' => ''),
+      'db_version'  => array('type' => 'varchar', 'length' => 35, 'not null' => TRUE, 'default' => ''),
     ),
     'primary key' => array('cid'),
   );
