PROTON-1400: [C++ example] Fix ssl test example to not rely on catching a specific exception thrown out of container::run.
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/2a606538 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/2a606538 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/2a606538 Branch: refs/heads/master Commit: 2a606538336a15da4de38684b34432e4157a02b9 Parents: e4eca5c Author: Andrew Stitcher <[email protected]> Authored: Thu Jul 13 08:42:52 2017 -0400 Committer: Andrew Stitcher <[email protected]> Committed: Fri Jul 21 12:50:06 2017 -0400 ---------------------------------------------------------------------- examples/cpp/ssl.cpp | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/2a606538/examples/cpp/ssl.cpp ---------------------------------------------------------------------- diff --git a/examples/cpp/ssl.cpp b/examples/cpp/ssl.cpp index 85dfa48..166bd61 100644 --- a/examples/cpp/ssl.cpp +++ b/examples/cpp/ssl.cpp @@ -50,10 +50,11 @@ ssl_certificate platform_certificate(const std::string &base_name, const std::st std::string find_CN(const std::string &); namespace { - std::string verify_full("full"); // Normal verification - std::string verify_noname("noname"); // Skip matching host name against the certificate - std::string verify_fail("fail"); // Force name mismatch failure + const std::string verify_full("full"); // Normal verification + const std::string verify_noname("noname"); // Skip matching host name against the certificate + const std::string verify_fail("fail"); // Force name mismatch failure std::string verify(verify_full); // Default for example + bool verify_failed(false); std::string cert_directory; class example_cert_error : public std::runtime_error @@ -137,8 +138,10 @@ class hello_world_direct : public proton::messaging_handler { void on_transport_error(proton::transport &t) OVERRIDE { std::string err = t.error().what(); - if (err.find("certificate")) + if (err.find("certificate")) { + verify_failed = true; throw example_cert_error(err); + } } void on_sendable(proton::sender &s) OVERRIDE { @@ -179,13 +182,15 @@ int main(int argc, char **argv) { hello_world_direct hwd(address); proton::default_container(hwd).run(); return 0; - } catch (const example_cert_error& ce) { - if (verify == verify_fail) { - std::cout << "Expected failure of connection with wrong peer name: " << ce.what() << std::endl; - return 0; - } - std::cerr << "unexpected internal certificate failure: " << ce.what() << std::endl; } catch (const std::exception& e) { + if (verify_failed) { + if (verify == verify_fail) { + std::cout << "Expected failure of connection with wrong peer name: " << e.what() << std::endl; + return 0; + } else { + std::cerr << "unexpected internal certificate failure: "; + } + } std::cerr << e.what() << std::endl; } return 1; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
