mirror of
https://github.com/KingDuckZ/kamokan.git
synced 2025-08-03 12:50:02 +00:00
Don't crash when a pastie doesn't exist, redirect to error page instead.
This commit is contained in:
parent
8b94672b25
commit
7549c0e664
4 changed files with 16 additions and 3 deletions
|
@ -26,6 +26,7 @@ namespace tawashi {
|
||||||
UserFlooding,
|
UserFlooding,
|
||||||
UnkownReason,
|
UnkownReason,
|
||||||
RedisDisconnected,
|
RedisDisconnected,
|
||||||
MissingPostVariable
|
MissingPostVariable,
|
||||||
|
PastieNotFound
|
||||||
)
|
)
|
||||||
} //namespace tawashi
|
} //namespace tawashi
|
||||||
|
|
|
@ -49,7 +49,8 @@ namespace tawashi {
|
||||||
"The pastie was not saved because the client is submitting too many pasties too quickly. Please wait a bit longer and try again.",
|
"The pastie was not saved because the client is submitting too many pasties too quickly. Please wait a bit longer and try again.",
|
||||||
"An unknown error was raised.",
|
"An unknown error was raised.",
|
||||||
"Unable to connect to Redis.",
|
"Unable to connect to Redis.",
|
||||||
"Request is missing a POST variable."
|
"Request is missing a POST variable.",
|
||||||
|
"Pastie not found."
|
||||||
};
|
};
|
||||||
constexpr const auto lengths = string_lengths(err_descs);
|
constexpr const auto lengths = string_lengths(err_descs);
|
||||||
static_assert(err_descs.static_size == lengths.static_size, "Mismatching array sizes between strings and their lengths");
|
static_assert(err_descs.static_size == lengths.static_size, "Mismatching array sizes between strings and their lengths");
|
||||||
|
|
|
@ -43,11 +43,16 @@ namespace tawashi {
|
||||||
Response(parSettings, parStreamOut, parCgiEnv, true),
|
Response(parSettings, parStreamOut, parCgiEnv, true),
|
||||||
m_langmap_dir(parSettings->as<std::string>("langmap_dir")),
|
m_langmap_dir(parSettings->as<std::string>("langmap_dir")),
|
||||||
m_plain_text(false),
|
m_plain_text(false),
|
||||||
m_syntax_highlight(true)
|
m_syntax_highlight(true),
|
||||||
|
m_pastie_not_found(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
HttpHeader PastieResponse::on_process() {
|
HttpHeader PastieResponse::on_process() {
|
||||||
|
if (m_pastie_not_found) {
|
||||||
|
return make_error_redirect(ErrorReasons::PastieNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
auto get = cgi_env().query_string_split();
|
auto get = cgi_env().query_string_split();
|
||||||
const std::string& query_str(cgi_env().query_string());
|
const std::string& query_str(cgi_env().query_string());
|
||||||
if (get["m"] == "plain" or query_str.empty()) {
|
if (get["m"] == "plain" or query_str.empty()) {
|
||||||
|
@ -78,6 +83,11 @@ namespace tawashi {
|
||||||
opt_string_list pastie_reply = redis.hmget(token, "pastie");
|
opt_string_list pastie_reply = redis.hmget(token, "pastie");
|
||||||
opt_string pastie = (pastie_reply and not pastie_reply->empty() ? (*pastie_reply)[0] : opt_string());
|
opt_string pastie = (pastie_reply and not pastie_reply->empty() ? (*pastie_reply)[0] : opt_string());
|
||||||
|
|
||||||
|
if (not pastie) {
|
||||||
|
m_pastie_not_found = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
srchilite::SourceHighlight highlighter;
|
srchilite::SourceHighlight highlighter;
|
||||||
highlighter.setDataDir(settings().as<std::string>("langmap_dir"));
|
highlighter.setDataDir(settings().as<std::string>("langmap_dir"));
|
||||||
highlighter.setGenerateEntireDoc(false);
|
highlighter.setGenerateEntireDoc(false);
|
||||||
|
|
|
@ -42,5 +42,6 @@ namespace tawashi {
|
||||||
std::string m_langmap_dir;
|
std::string m_langmap_dir;
|
||||||
bool m_plain_text;
|
bool m_plain_text;
|
||||||
bool m_syntax_highlight;
|
bool m_syntax_highlight;
|
||||||
|
bool m_pastie_not_found;
|
||||||
};
|
};
|
||||||
} //namespace tawashi
|
} //namespace tawashi
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue