From 927cff33179c1b72801d977dc385ff6ed68360e7 Mon Sep 17 00:00:00 2001 From: Alex Miller Date: Thu, 20 Feb 2020 16:53:01 -0800 Subject: [PATCH] Report errors on TLS misconfigurations ... or at least try to. --- bindings/c/fdb_c.cpp | 7 ++++++- fdbbackup/backup.actor.cpp | 7 +++++++ fdbcli/fdbcli.actor.cpp | 3 +++ fdbserver/fdbserver.actor.cpp | 5 +++++ flow/Net2.actor.cpp | 2 +- 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/bindings/c/fdb_c.cpp b/bindings/c/fdb_c.cpp index 356c3225d5..1c787f060a 100644 --- a/bindings/c/fdb_c.cpp +++ b/bindings/c/fdb_c.cpp @@ -108,7 +108,12 @@ fdb_error_t fdb_network_set_option( FDBNetworkOption option, } fdb_error_t fdb_setup_network_impl() { - CATCH_AND_RETURN( API->setupNetwork(); ); + CATCH_AND_RETURN( + try { + API->setupNetwork(); + } catch (boost::system::system_error& e) { + return error_code_tls_error; + } ); } fdb_error_t fdb_setup_network_v13( const char* localAddress ) { diff --git a/fdbbackup/backup.actor.cpp b/fdbbackup/backup.actor.cpp index d120fa06da..2ea44f1a99 100644 --- a/fdbbackup/backup.actor.cpp +++ b/fdbbackup/backup.actor.cpp @@ -3657,6 +3657,13 @@ int main(int argc, char* argv[]) { } catch (Error& e) { TraceEvent(SevError, "MainError").error(e); status = FDB_EXIT_MAIN_ERROR; + } catch (boost::system::system_error& e) { + if (g_network) { + TraceEvent(SevError, "MainError").error(unknown_error()).detail("RootException", e.what()); + } else { + fprintf(stderr, "ERROR: %s (%d)\n", e.what(), e.code().value()); + } + status = FDB_EXIT_MAIN_EXCEPTION; } catch (std::exception& e) { TraceEvent(SevError, "MainError").error(unknown_error()).detail("RootException", e.what()); status = FDB_EXIT_MAIN_EXCEPTION; diff --git a/fdbcli/fdbcli.actor.cpp b/fdbcli/fdbcli.actor.cpp index c8c3ba9e1a..4f7cf83972 100644 --- a/fdbcli/fdbcli.actor.cpp +++ b/fdbcli/fdbcli.actor.cpp @@ -3753,5 +3753,8 @@ int main(int argc, char **argv) { } catch (Error& e) { printf("ERROR: %s (%d)\n", e.what(), e.code()); return 1; + } catch (boost::system::system_error& e) { + printf("ERROR: %s (%d)\n", e.what(), e.code().value()); + return 1; } } diff --git a/fdbserver/fdbserver.actor.cpp b/fdbserver/fdbserver.actor.cpp index 5448bfa161..9df3ea4cf5 100644 --- a/fdbserver/fdbserver.actor.cpp +++ b/fdbserver/fdbserver.actor.cpp @@ -1963,6 +1963,11 @@ int main(int argc, char* argv[]) { TraceEvent(SevError, "MainError").error(e); //printf("\n%d tests passed; %d tests failed\n", passCount, failCount); flushAndExit(FDB_EXIT_MAIN_ERROR); + } catch (boost::system::system_error& e) { + fprintf(stderr, "boost::system::system_error: %s (%d)", e.what(), e.code().value()); + TraceEvent(SevError, "MainError").error(unknown_error()).detail("RootException", e.what()); + //printf("\n%d tests passed; %d tests failed\n", passCount, failCount); + flushAndExit(FDB_EXIT_MAIN_EXCEPTION); } catch (std::exception& e) { fprintf(stderr, "std::exception: %s\n", e.what()); TraceEvent(SevError, "MainError").error(unknown_error()).detail("RootException", e.what()); diff --git a/flow/Net2.actor.cpp b/flow/Net2.actor.cpp index cbaa4b322a..f922eea985 100644 --- a/flow/Net2.actor.cpp +++ b/flow/Net2.actor.cpp @@ -1456,7 +1456,7 @@ INetwork* newNet2(bool useThreadPool, bool useMetrics, Reference poli } catch(boost::system::system_error e) { TraceEvent("Net2InitError").detail("Message", e.what()); - throw unknown_error(); + throw; } catch(std::exception const& e) { TraceEvent("Net2InitError").detail("Message", e.what());