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