summaryrefslogtreecommitdiff
path: root/src/tool/server.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/tool/server.cc')
-rw-r--r--src/tool/server.cc22
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;