diff --git a/OpenSim/Framework/Servers/BaseHttpServer.cs b/OpenSim/Framework/Servers/BaseHttpServer.cs index 6b576e6f30..7f9e1a1dbf 100644 --- a/OpenSim/Framework/Servers/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/BaseHttpServer.cs @@ -230,6 +230,13 @@ namespace OpenSim.Framework.Servers return true; } } + + /// + /// Try all the registered xmlrpc handlers when an xmlrpc request is received. + /// Sends back an XMLRPC unknown request response if no handler is registered for the requested method. + /// + /// + /// private void HandleXmlRpcRequests(HttpListenerRequest request, HttpListenerResponse response) { Stream requestStream = request.InputStream; @@ -268,12 +275,8 @@ namespace OpenSim.Framework.Servers else { xmlRpcResponse = new XmlRpcResponse(); - Hashtable unknownMethodError = new Hashtable(); - unknownMethodError["reason"] = "XmlRequest"; - ; - unknownMethodError["message"] = "Unknown Rpc Request [" + methodName + "]"; - unknownMethodError["login"] = "false"; - xmlRpcResponse.Value = unknownMethodError; + // Code set in accordance with http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php + xmlRpcResponse.SetFault(-32601, String.Format("Requested method [{0}] not found", methodName)); } responseString = XmlRpcResponseSerializer.Singleton.Serialize(xmlRpcResponse); diff --git a/OpenSim/Grid/UserServer/UserLoginService.cs b/OpenSim/Grid/UserServer/UserLoginService.cs index 58e85d811b..11eaa5f571 100644 --- a/OpenSim/Grid/UserServer/UserLoginService.cs +++ b/OpenSim/Grid/UserServer/UserLoginService.cs @@ -130,12 +130,19 @@ namespace OpenSim.Grid.UserServer theUser.currentAgent.currentRegion = SimInfo.UUID; theUser.currentAgent.currentHandle = SimInfo.regionHandle; - m_log.Info("[LOGIN]: Sending expect user call to " + m_log.Info("[LOGIN]: Telling " + SimInfo.regionName + " @ " + SimInfo.httpServerURI + " " + - SimInfo.regionLocX + "," + SimInfo.regionLocY); + SimInfo.regionLocX + "," + SimInfo.regionLocY + " to expect user connection"); XmlRpcRequest GridReq = new XmlRpcRequest("expect_user", SendParams); XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000); + + if (GridResp.IsFault) + { + m_log.ErrorFormat( + "[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}", + SimInfo.httpServerURI, GridResp.FaultCode, GridResp.FaultString); + } } catch (Exception) { diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs index 0a9a05c10c..f8cbe0f6e0 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs @@ -450,7 +450,9 @@ namespace OpenSim.Region.Communications.OGS1 // Grid Request Processing /// - /// + /// Received from the user server when a user starts logging in. This call allows + /// the region to prepare for direct communication from the client. Sends back an empty + /// xmlrpc response on completion. /// /// ///