diff --git a/runners/client/ClientRunner.cpp b/runners/client/ClientRunner.cpp index f39442e..8e8d393 100644 --- a/runners/client/ClientRunner.cpp +++ b/runners/client/ClientRunner.cpp @@ -370,9 +370,19 @@ void ClientRunner::receive_http_request( std::unique_ptr request, std::shared_ptr payload, td::Promise, std::shared_ptr>> promise) { if (request->method() == "OPTIONS") { - // TODO: return 204 - std::string data = "OK"; - http_send_static_answer(std::move(data), std::move(promise)); + auto response = + ton::http::HttpResponse::create("HTTP/1.0", static_cast(204), "no content", false, + false) + .move_as_ok(); + response->add_header(ton::http::HttpHeader{"Access-Control-Allow-Origin", "*"}); + response->add_header(ton::http::HttpHeader{"Access-Control-Allow-Methods", "GET, POST, OPTIONS"}); + response->add_header(ton::http::HttpHeader{"Access-Control-Allow-Headers", "Content-Type, Authorization"}); + response->add_header(ton::http::HttpHeader{"Content-Length", "0"}); + response->complete_parse_header(); + + auto empty_payload = response->create_empty_payload().move_as_ok(); + empty_payload->complete_parse(); + promise.set_result(std::make_pair(std::move(response), std::move(empty_payload))); return; } if (request->url() == "/v1/models") {