commit 6b81b81: [Minor] Improve diagnostics
Vsevolod Stakhov
vsevolod at rspamd.com
Tue Oct 24 15:07:03 UTC 2023
Author: Vsevolod Stakhov
Date: 2023-10-24 16:02:59 +0100
URL: https://github.com/rspamd/rspamd/commit/6b81b812a7a34ad7201b7df214bb543d089d7919 (HEAD -> master)
[Minor] Improve diagnostics
---
src/client/rspamc.cxx | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
diff --git a/src/client/rspamc.cxx b/src/client/rspamc.cxx
index cf2f9d1dc..50e3cbdee 100644
--- a/src/client/rspamc.cxx
+++ b/src/client/rspamc.cxx
@@ -365,28 +365,36 @@ struct fmt::formatter<rspamd_action_type> : fmt::formatter<string_view> {
template<typename... T>
static inline void rspamc_print(std::FILE *f, fmt::format_string<T...> fmt, T &&...args)
{
- static auto try_print_exception = 1;
+ static auto try_print_exception = true;
+ auto wanna_die = false;
+
try {
fmt::print(f, fmt, std::forward<T>(args)...);
} catch (const fmt::format_error &err) {
if (try_print_exception) {
- if (fprintf(f, "Format error: %s\n", err.what()) < 0) {
- try_print_exception = 0;
+ if (fprintf(stderr, "Format error: %s\n", err.what()) < 0) {
+ try_print_exception = false;
}
}
} catch (std::system_error &err) {
+ wanna_die = true;
if (try_print_exception) {
- if (fprintf(f, "System error: %s\n", err.what()) < 0) {
- try_print_exception = 0;
+ if (fprintf(stderr, "System error: %s\n", err.what()) < 0) {
+ try_print_exception = false;
}
}
} catch (...) {
+ wanna_die = true;
if (try_print_exception) {
- if (fprintf(f, "Unknown format error\n") < 0) {
- try_print_exception = 0;
+ if (fprintf(stderr, "Unknown format error\n") < 0) {
+ try_print_exception = false;
}
}
}
+
+ if (wanna_die) {
+ exit(EXIT_FAILURE);
+ }
}
using sort_lambda = std::function<int(const ucl_object_t *, const ucl_object_t *)>;
More information about the Commits
mailing list