diff options
author | montellese <montellese@xbmc.org> | 2014-08-07 21:29:37 +0200 |
---|---|---|
committer | montellese <montellese@xbmc.org> | 2014-08-07 21:29:37 +0200 |
commit | 36d8720154a868835ef4bcb2544f2da2728a47b3 (patch) | |
tree | dd735353be632d241dc4b956663be00bfc375961 /lib/libUPnP/patches | |
parent | bf8934a1f074c14b21359978821957520ed66eb4 (diff) |
platinum: add patch for bf8934a1f074c14b21359978821957520ed66eb4
Diffstat (limited to 'lib/libUPnP/patches')
-rw-r--r-- | lib/libUPnP/patches/0032-platinum-improve-logging-on-bad-HTTP-requests.patch | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/lib/libUPnP/patches/0032-platinum-improve-logging-on-bad-HTTP-requests.patch b/lib/libUPnP/patches/0032-platinum-improve-logging-on-bad-HTTP-requests.patch new file mode 100644 index 0000000000..c141244758 --- /dev/null +++ b/lib/libUPnP/patches/0032-platinum-improve-logging-on-bad-HTTP-requests.patch @@ -0,0 +1,150 @@ +From bf8934a1f074c14b21359978821957520ed66eb4 Mon Sep 17 00:00:00 2001 +From: montellese <montellese@xbmc.org> +Date: Thu, 7 Aug 2014 21:28:38 +0200 +Subject: [PATCH] platinum: improve logging on bad HTTP requests + +--- + lib/libUPnP/Platinum/Source/Core/PltDeviceHost.cpp | 77 ++++++++++++++++++---- + 1 file changed, 63 insertions(+), 14 deletions(-) + +diff --git a/lib/libUPnP/Platinum/Source/Core/PltDeviceHost.cpp b/lib/libUPnP/Platinum/Source/Core/PltDeviceHost.cpp +index 4d9524b..6fbe7a7 100644 +--- a/lib/libUPnP/Platinum/Source/Core/PltDeviceHost.cpp ++++ b/lib/libUPnP/Platinum/Source/Core/PltDeviceHost.cpp +@@ -510,10 +510,10 @@ PLT_DeviceHost::ProcessHttpPostRequest(NPT_HttpRequest& request, + #endif + + if (NPT_FAILED(FindServiceByControlURL(url, service, true))) +- goto bad_request; ++ goto bad_request_find_service; + + if (!request.GetHeaders().GetHeaderValue("SOAPAction")) +- goto bad_request; ++ goto bad_request_soap_header_value; + + // extract the soap action name from the header + soap_action_header = *request.GetHeaders().GetHeaderValue("SOAPAction"); +@@ -522,45 +522,45 @@ PLT_DeviceHost::ProcessHttpPostRequest(NPT_HttpRequest& request, + + components = soap_action_header.Split("#"); + if (components.GetItemCount() != 2) +- goto bad_request; ++ goto bad_request_soap_action_header; + + soap_action_name = *components.GetItem(1); +- ++ + // read the xml body and parse it + if (NPT_FAILED(PLT_HttpHelper::ParseBody(request, xml))) +- goto bad_request; ++ goto bad_request_body_parse_error; + + // check envelope + if (xml->GetTag().Compare("Envelope", true)) +- goto bad_request; ++ goto bad_request_no_envelope; + + #if defined(PLATINUM_UPNP_SPECS_STRICT) + // check namespace + if (!xml->GetNamespace() || xml->GetNamespace()->Compare("http://schemas.xmlsoap.org/soap/envelope/")) +- goto bad_request; ++ goto bad_request_upnp_not_strict; + + // check encoding + attr = xml->GetAttribute("encodingStyle", "http://schemas.xmlsoap.org/soap/envelope/"); + if (!attr || attr->Compare("http://schemas.xmlsoap.org/soap/encoding/")) +- goto bad_request; ++ goto bad_request_bad_encoding; + #endif + + // read action + soap_body = PLT_XmlHelper::GetChild(xml, "Body"); + if (soap_body == NULL) +- goto bad_request; ++ goto bad_request_soap_body; + + PLT_XmlHelper::GetChild(soap_body, soap_action); + if (soap_action == NULL) +- goto bad_request; ++ goto bad_request_soap_action_body; + + // verify action name is identical to SOAPACTION header*/ + if (soap_action->GetTag().Compare(soap_action_name, true)) +- goto bad_request; ++ goto bad_request_action_mismatch; + + // verify namespace + if (!soap_action->GetNamespace() || soap_action->GetNamespace()->Compare(service->GetServiceType())) +- goto bad_request; ++ goto bad_request_bad_namespace; + + // create a buffer for our response body and call the service + if ((action_desc = service->FindActionDesc(soap_action_name)) == NULL) { +@@ -646,8 +646,58 @@ done: + return NPT_SUCCESS; + + bad_request: +- delete xml; ++ // generic 500 now unused + response.SetStatus(500, "Bad Request"); ++ goto bad_request_end; ++ ++bad_request_find_service: ++ response.SetStatus(500, "Bad Request: Service by URL"); ++ goto bad_request_end; ++ ++bad_request_soap_header_value: ++ response.SetStatus(500, "Bad Request: SOAP Header"); ++ goto bad_request_end; ++ ++bad_request_soap_action_header: ++ response.SetStatus(500, "Bad Request: SOAP Action in Header"); ++ goto bad_request_end; ++ ++bad_request_body_parse_error: ++ response.SetStatus(500, "Bad Request: Error Parsing XML Body"); ++ goto bad_request_end; ++ ++bad_request_no_envelope: ++ response.SetStatus(500, "Bad Request: SOAP Envelope"); ++ goto bad_request_end; ++ ++#if defined(PLATINUM_UPNP_SPECS_STRICT) ++bad_request_upnp_not_strict: ++ response.SetStatus(500, "Bad Request: SOAP not Strict"); ++ goto bad_request_end; ++ ++bad_request_bad_encoding: ++ response.SetStatus(500, "Bad Request: SOAP Encoding"); ++ goto bad_request_end; ++#endif ++ ++bad_request_soap_body: ++ response.SetStatus(500, "Bad Request: SOAP Body"); ++ goto bad_request_end; ++ ++bad_request_soap_action_body: ++ response.SetStatus(500, "Bad Request: SOAP Action in Body"); ++ goto bad_request_end; ++ ++bad_request_action_mismatch: ++ response.SetStatus(500, "Bad Request: SOAP Action Mismatch"); ++ goto bad_request_end; ++ ++bad_request_bad_namespace: ++ response.SetStatus(500, "Bad Request: Bad Namespace"); ++ goto bad_request_end; ++ ++bad_request_end: ++ delete xml; + return NPT_SUCCESS; + } + +@@ -896,4 +946,3 @@ PLT_DeviceHost::OnAction(PLT_ActionReference& action, + action->SetError(401, "Invalid Action"); + return NPT_FAILURE; + } +- +-- +1.7.11.msysgit.0 + |