commit - 50eb955cfb20f96fd59942b27e83fe533e1a3fcc
commit + 24c27acbf4be5ebfb6b64cd7697facc9219c500f
blob - 6e2205ba496a0fb0ece746868d149c26fdae1681
blob + 05c0100fbe7c3827ea489de80b145de1e22516ff
--- vostokd/vostokd.cc
+++ vostokd/vostokd.cc
namespace
{
+
+/** Remove null terminating character and return as span */
template <std::size_t N>
-constexpr std::span<const char> literal_to_span(const char (&arr)[N])
+constexpr std::span<const char> cut_null(const char (&arr)[N])
{
static_assert(N > 0);
return std::span<const char>{&arr[0], N - 1};
}
+
namespace meta
{
-const auto badrequest = literal_to_span("Bad request");
-const auto textgemini = literal_to_span("text/gemini");
+const auto badrequest = cut_null("Bad request");
} // namespace meta
std::array<char, transport::MAX_REQUEST_LENGTH> buffer;
const auto url = transport::read_request(ctx.get_ctx(), buffer);
+ error::g_log << "Requested URL: \"";
for (auto c : url)
error::g_log << c;
- error::g_log << std::endl;
+ error::g_log << "\"" << std::endl;
if (!url.size())
{
return;
}
- transport::send_response(ctx.get_ctx(), transport::STATUS_20_SUCCESS, meta::textgemini);
- const char content[] = "# Vostok server\r\n\r\n...work-in-progress...";
- transport::send(ctx.get_ctx(), literal_to_span(content));
+ // > If <META> is an empty string, the MIME type MUST default to "text/gemini; charset=utf-8".
+ transport::send_response(ctx.get_ctx(), transport::STATUS_20_SUCCESS, std::span<const char>{});
+ static const char content[] = "# Vostok server\r\n\r\n...work-in-progress...";
+ transport::send(ctx.get_ctx(), cut_null(content));
}