diff --git a/src/core/hle/service/http_c.cpp b/src/core/hle/service/http_c.cpp index 1cd2f61a4..e5af90b7c 100644 --- a/src/core/hle/service/http_c.cpp +++ b/src/core/hle/service/http_c.cpp @@ -59,14 +59,14 @@ void HTTP_C::CreateContext(Kernel::HLERequestContext& ctx) { return; } - Context context{}; - context.url = std::move(url); - context.method = method; - context.state = RequestState::NotStarted; + ++context_counter; + contexts.emplace(context_counter, Context()); + contexts[context_counter].url = std::move(url); + contexts[context_counter].method = method; + contexts[context_counter].state = RequestState::NotStarted; // TODO(Subv): Find a correct default value for this field. - context.socket_buffer_size = 0; - context.handle = ++context_counter; - contexts[context_counter] = std::move(context); + contexts[context_counter].socket_buffer_size = 0; + contexts[context_counter].handle = ++context_counter; IPC::RequestBuilder rb = rp.MakeBuilder(2, 2); rb.Push(RESULT_SUCCESS); diff --git a/src/core/hle/service/http_c.h b/src/core/hle/service/http_c.h index 3ca56e8e9..e2d89e10d 100644 --- a/src/core/hle/service/http_c.h +++ b/src/core/hle/service/http_c.h @@ -59,7 +59,15 @@ struct RootCertChain { }; /// Represents an HTTP context. -struct Context { +class Context final { +public: + Context() = default; + Context(const Context&) = delete; + Context& operator=(const Context&) = delete; + + Context(Context&& other) = default; + Context& operator=(Context&&) = default; + struct Proxy { std::string url; std::string username; @@ -73,6 +81,7 @@ struct Context { }; struct RequestHeader { + RequestHeader(std::string name, std::string value) : name(name), value(value){}; std::string name; std::string value; };