diff options
author | Dr. Stephen Henson <steve@openssl.org> | 2012-12-26 22:40:46 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 2012-12-26 22:40:46 +0000 |
commit | bc200e691cd68870c2062d3c1e74280a59aaa5ab (patch) | |
tree | 52713bc083b97da4ba573ac996b20041f614933e /apps/s_client.c | |
parent | a08f8d73ccac52dfd6e674f2d5abbe70986c7fc8 (diff) |
SSL/TLS record tracing code (backport from HEAD).
Diffstat (limited to 'apps/s_client.c')
-rw-r--r-- | apps/s_client.c | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/apps/s_client.c b/apps/s_client.c index 6ff11eac94..6e5eaa06df 100644 --- a/apps/s_client.c +++ b/apps/s_client.c @@ -217,6 +217,7 @@ static int ocsp_resp_cb(SSL *s, void *arg); static int audit_proof_cb(SSL *s, void *arg); #endif static BIO *bio_c_out=NULL; +static BIO *bio_c_msg=NULL; static int c_quiet=0; static int c_ign_eof=0; @@ -754,6 +755,15 @@ int MAIN(int argc, char **argv) #endif else if (strcmp(*argv,"-msg") == 0) c_msg=1; + else if (strcmp(*argv,"-msgfile") == 0) + { + if (--argc < 1) goto bad; + bio_c_msg = BIO_new_file(*(++argv), "w"); + } +#ifndef OPENSSL_NO_SSL_TRACE + else if (strcmp(*argv,"-trace") == 0) + c_msg=2; +#endif else if (strcmp(*argv,"-showcerts") == 0) c_showcerts=1; else if (strcmp(*argv,"-nbio_test") == 0) @@ -1115,9 +1125,11 @@ bad: if (bio_c_out == NULL) { - if (c_quiet && !c_debug && !c_msg) + if (c_quiet && !c_debug) { bio_c_out=BIO_new(BIO_s_null()); + if (c_msg && !bio_c_msg) + bio_c_msg=BIO_new_fp(stdout,BIO_NOCLOSE); } else { @@ -1390,8 +1402,13 @@ re_start: } if (c_msg) { - SSL_set_msg_callback(con, msg_cb); - SSL_set_msg_callback_arg(con, bio_c_out); +#ifndef OPENSSL_NO_SSL_TRACE + if (c_msg == 2) + SSL_set_msg_callback(con, SSL_trace); + else +#endif + SSL_set_msg_callback(con, msg_cb); + SSL_set_msg_callback_arg(con, bio_c_msg ? bio_c_msg : bio_c_out); } #ifndef OPENSSL_NO_TLSEXT if (c_tlsextdebug) @@ -1975,6 +1992,11 @@ end: BIO_free(bio_c_out); bio_c_out=NULL; } + if (bio_c_msg != NULL) + { + BIO_free(bio_c_msg); + bio_c_msg=NULL; + } apps_shutdown(); OPENSSL_EXIT(ret); } |