From 34baa882c8f6788aa76d1e7cdd5ffd1f5454bbf1 Mon Sep 17 00:00:00 2001 From: Subv Date: Sat, 21 Jul 2018 19:50:13 -0500 Subject: [PATCH] Services/HTTP: Corrected the error code for an invalid request method. --- src/core/hle/service/http_c.cpp | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/core/hle/service/http_c.cpp b/src/core/hle/service/http_c.cpp index e4eab02de..32862e8f1 100644 --- a/src/core/hle/service/http_c.cpp +++ b/src/core/hle/service/http_c.cpp @@ -12,6 +12,17 @@ namespace Service { namespace HTTP { +namespace ErrCodes { +enum { + InvalidRequestMethod = 32, + InvalidContext = 102, +}; +} + +const ResultCode ERROR_CONTEXT_ERROR = // 0xD8A0A066 + ResultCode(ErrCodes::InvalidContext, ErrorModule::HTTP, ErrorSummary::InvalidState, + ErrorLevel::Permanent); + enum class RequestMethod : u8 { None = 0x0, Get = 0x1, @@ -128,9 +139,15 @@ void HTTP_C::CreateContext(Kernel::HLERequestContext& ctx) { LOG_DEBUG(Service_HTTP, "called, url_size={}, url={}, method={}", url_size, url, static_cast(method)); - // TODO(Subv): Find the right error code for this case. - ASSERT_MSG(method == RequestMethod::None && static_cast(method) < TotalRequestMethods, - "Invalid request method {}", static_cast(method)); + if (method == RequestMethod::None || static_cast(method) >= TotalRequestMethods) { + LOG_ERROR(Service_HTTP, "invalid request method={}", static_cast(method)); + + IPC::RequestBuilder rb = rp.MakeBuilder(1, 2); + rb.Push(ResultCode(ErrCodes::InvalidContext, ErrorModule::HTTP, ErrorSummary::InvalidState, + ErrorLevel::Permanent)); + rb.PushMappedBuffer(buffer); + return; + } Context context{}; context.url = std::move(url);