diff options
Diffstat (limited to 'src/tool/server.cc')
-rw-r--r-- | src/tool/server.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/tool/server.cc b/src/tool/server.cc index 3b125ad1..4cc183b1 100644 --- a/src/tool/server.cc +++ b/src/tool/server.cc @@ -71,6 +71,10 @@ static const struct argument kArguments[] = { "-tls13-variant", kBooleanArgument, "Enable TLS 1.3 variants", }, { + "-debug", kBooleanArgument, + "Print debug information about the handshake", + }, + { "", kOptionalArgument, "", }, }; @@ -142,6 +146,20 @@ static bssl::UniquePtr<X509> MakeSelfSignedCert(EVP_PKEY *evp_pkey, return x509; } +static void InfoCallback(const SSL *ssl, int type, int value) { + switch (type) { + case SSL_CB_HANDSHAKE_START: + fprintf(stderr, "Handshake started.\n"); + break; + case SSL_CB_HANDSHAKE_DONE: + fprintf(stderr, "Handshake done.\n"); + break; + case SSL_CB_ACCEPT_LOOP: + fprintf(stderr, "Handshake progress: %s\n", SSL_state_string_long(ssl)); + break; + } +} + bool Server(const std::vector<std::string> &args) { if (!InitSocketLibrary()) { return false; @@ -241,6 +259,10 @@ bool Server(const std::vector<std::string> &args) { SSL_CTX_set_tls13_variant(ctx.get(), tls13_experiment); } + if (args_map.count("-debug") != 0) { + SSL_CTX_set_info_callback(ctx.get(), InfoCallback); + } + Listener listener; if (!listener.Init(args_map["-accept"])) { return false; |