Index: xmlrpc.php
===================================================================
--- xmlrpc.php	(revision 11845)
+++ xmlrpc.php	(working copy)
@@ -207,6 +207,24 @@
 		$this->IXR_Server($this->methods);
 	}
 
+	function errorStringForDisabledXMLRPC() {
+		return sprintf(__( 'XML-RPC services are disabled on this blog.  An admin user can enable them at %s'),  admin_url('options-writing.php'));
+	}
+
+	function serve($data = false) {
+		// We want to intercept the case where a GET request is issued, but XMLRPC support is disabled.
+		// In this case, it makes a more useful failure message (and one that matches wp-app.php) if we
+		// express the disabled error string instead of allowing the default 'POST requests only' error in IXR. 
+		global $HTTP_RAW_POST_DATA;
+		if ( !get_option( 'enable_xmlrpc' ) && !$HTTP_RAW_POST_DATA) {
+			header( 'Content-Type: text/plain' );
+			die($this->errorStringForDisabledXMLRPC());
+		}
+		else {
+			parent::serve($data);
+		}
+        }
+
 	/**
 	 * Test XMLRPC API by saying, "Hello!" to client.
 	 *
@@ -246,7 +264,7 @@
 	 */
 	function login_pass_ok($user_login, $user_pass) {
 		if ( !get_option( 'enable_xmlrpc' ) ) {
-			$this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this blog.  An admin user can enable them at %s'),  admin_url('options-writing.php') ) );
+			$this->error = new IXR_Error( 405, $this->errorStringForDisabledXMLRPC());
 			return false;
 		}
 
@@ -268,7 +286,7 @@
 	 */
 	function login($username, $password) {
 		if ( !get_option( 'enable_xmlrpc' ) ) {
-			$this->error = new IXR_Error( 405, sprintf( __( 'XML-RPC services are disabled on this blog.  An admin user can enable them at %s'),  admin_url('options-writing.php') ) );
+			$this->error = new IXR_Error( 405, $this->errorStringForDisabledXMLRPC());
 			return false;
 		}
 
