From ec9867e8b66de81839c7d824991e2007ff8d989b Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Fri, 23 Jul 2021 20:04:14 +0100 Subject: [PATCH] [Minor] Distinguish fatal and non fatal parsing errors --- src/libserver/css/css_parser.cxx | 2 +- src/libserver/css/parse_error.hxx | 7 ++++++- src/libserver/html/html.cxx | 13 ++++++++----- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/libserver/css/css_parser.cxx b/src/libserver/css/css_parser.cxx index 4a545db4e..36550908a 100644 --- a/src/libserver/css/css_parser.cxx +++ b/src/libserver/css/css_parser.cxx @@ -606,7 +606,7 @@ css_parser::consume_input(const std::string_view &sv) const auto &rules = consumed_blocks->get_blocks_or_empty(); if (rules.empty()) { - if (error.type == css_parse_error_type::PARSE_ERROR_UNKNOWN_ERROR) { + if (error.type == css_parse_error_type::PARSE_ERROR_NO_ERROR) { return css_parse_error(css_parse_error_type::PARSE_ERROR_EMPTY, "no css rules consumed"); } diff --git a/src/libserver/css/parse_error.hxx b/src/libserver/css/parse_error.hxx index a493e993f..57ff0c0ce 100644 --- a/src/libserver/css/parse_error.hxx +++ b/src/libserver/css/parse_error.hxx @@ -31,10 +31,11 @@ enum class css_parse_error_type { PARSE_ERROR_UNKNOWN_OPTION, PARSE_ERROR_INVALID_SYNTAX, PARSE_ERROR_BAD_NESTING, - PARSE_ERROR_EMPTY, PARSE_ERROR_NYI, PARSE_ERROR_UNKNOWN_ERROR, + /* All above is treated as fatal error in parsing */ PARSE_ERROR_NO_ERROR, + PARSE_ERROR_EMPTY, }; struct css_parse_error { @@ -45,6 +46,10 @@ struct css_parse_error { type(type), description(description) {} explicit css_parse_error (css_parse_error_type type = css_parse_error_type::PARSE_ERROR_NO_ERROR) : type(type) {} + + constexpr auto is_fatal(void) const -> bool { + return type < css_parse_error_type::PARSE_ERROR_NO_ERROR; + } }; } diff --git a/src/libserver/html/html.cxx b/src/libserver/html/html.cxx index 30607a8da..088aad369 100644 --- a/src/libserver/html/html.cxx +++ b/src/libserver/html/html.cxx @@ -1791,11 +1791,14 @@ html_process_input(rspamd_mempool_t *pool, std::move(hc->css_style)); if (!ret_maybe.has_value()) { - auto err_str = fmt::format("cannot parse css (error code: {}): {}", - static_cast(ret_maybe.error().type), - ret_maybe.error().description.value_or("unknown error")); - msg_info_pool ("cannot parse css: %*s", - (int) err_str.size(), err_str.data()); + if (ret_maybe.error().is_fatal()) { + auto err_str = fmt::format( + "cannot parse css (error code: {}): {}", + static_cast(ret_maybe.error().type), + ret_maybe.error().description.value_or("unknown error")); + msg_info_pool ("cannot parse css: %*s", + (int) err_str.size(), err_str.data()); + } } else { hc->css_style = ret_maybe.value(); -- 2.39.5