diff --git a/man/httperf.1 b/man/httperf.1 index 13f1814..40f12a5 100755 --- a/man/httperf.1 +++ b/man/httperf.1 @@ -1076,7 +1076,7 @@ avg 6.45 connections/session 4 7 4 ... 3 3 240 .RE .PP -The line labeled ``Session rate'' shows the minium, average, and +The line labeled ``Session rate'' shows the minimum, average, and maximum rate at which sessions completed (based on a 5 second sampling interval). It also shows the standard deviation of the session completion rate. The numbers in parentheses show how many sessions diff --git a/src/conn.c b/src/conn.c index 13e39f2..861b989 100755 --- a/src/conn.c +++ b/src/conn.c @@ -112,6 +112,7 @@ conn_init(Conn *conn) conn->sd = -1; conn->myport = -1; conn->line.iov_base = conn->line_buf; + conn->fqdname_len = strcspn(conn->fqdname,"\r\n"); // Chomp since used in Host header record #ifdef HAVE_SSL if (param.use_ssl) { diff --git a/src/core.c b/src/core.c index 596cc99..5156003 100755 --- a/src/core.c +++ b/src/core.c @@ -1039,9 +1039,9 @@ core_ssl_connect(Conn * s) "suites!\n"); else fprintf(stderr, - "core_ssl_connect: cipher=%s, valid=%d, id=%lu\n", - ssl_cipher->name, ssl_cipher->valid, - ssl_cipher->id); + "core_ssl_connect: cipher=%s, id=%lu\n", + SSL_CIPHER_get_name(ssl_cipher), + SSL_CIPHER_get_id(ssl_cipher)); } arg.l = 0; diff --git a/src/gen/wsesslog.c b/src/gen/wsesslog.c index c76dd1e..a213014 100755 --- a/src/gen/wsesslog.c +++ b/src/gen/wsesslog.c @@ -146,13 +146,13 @@ struct Sess_Private_Data /* Methods allowed for a request: */ enum { - HM_DELETE, HM_GET, HM_HEAD, HM_OPTIONS, HM_POST, HM_PUT, HM_TRACE, + HM_DELETE, HM_GET, HM_HEAD, HM_OPTIONS, HM_POST, HM_PUT, HM_PROPFIND, HM_REPORT, HM_TRACE, HM_LEN }; static const char *call_method_name[] = { - "DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT", "TRACE" + "DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT", "PROPFIND", "REPORT", "TRACE" }; static size_t sess_private_data_offset; diff --git a/src/httperf.c b/src/httperf.c index a7beb31..4e42331 100755 --- a/src/httperf.c +++ b/src/httperf.c @@ -678,8 +678,16 @@ main(int argc, char **argv) else if (strcasecmp (optarg, "SSLv3") == 0) param.ssl_protocol = 3; #endif - else if (strcasecmp (optarg, "TLSv1") == 0) + else if (strcasecmp (optarg, "TLSv1.0") == 0 || strcasecmp (optarg, "TLSv1_0") == 0 || strcasecmp (optarg, "TLSv1") == 0) param.ssl_protocol = 4; + else if (strcasecmp (optarg, "TLSv1.1") == 0 || strcasecmp (optarg, "TLSv1_1") == 0) + param.ssl_protocol = 5; + else if (strcasecmp (optarg, "TLSv1.2") == 0 || strcasecmp (optarg, "TLSv1_2") == 0) + param.ssl_protocol = 6; +#if (OPENSSL_VERSION_NUMBER >= 0x10101000L) + else if (strcasecmp (optarg, "TLSv1.3") == 0 || strcasecmp (optarg, "TLSv1_3") == 0) + param.ssl_protocol = 7; +#endif else { fprintf (stderr, "%s: illegal SSL protocol %s\n", @@ -1003,23 +1011,91 @@ main(int argc, char **argv) SSL_library_init (); SSL_load_error_strings (); +#if (OPENSSL_VERSION_NUMBER < 0x10100000L) SSLeay_add_all_algorithms (); - SSLeay_add_ssl_algorithms (); +#endif switch (param.ssl_protocol) { - /* 0/auto for SSLv23 */ - case 0: ssl_ctx = SSL_CTX_new (SSLv23_client_method ()); break; + /* 0/auto for highest available */ + case 0: +#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) + ssl_ctx = SSL_CTX_new (TLS_client_method ()); break; +#else + ssl_ctx = SSL_CTX_new (SSLv23_client_method ()); break; +#endif + #ifndef OPENSSL_NO_SSL2 /* 2/SSLv2 */ - case 2: ssl_ctx = SSL_CTX_new (SSLv2_client_method ()); break; + case 2: +#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) + ssl_ctx = SSL_CTX_new (TLS_client_method ()); +#if (OPENSSL_VERSION_NUMBER >= 0x10101000L) + SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3); break; +#else + SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2); break; #endif +#else + ssl_ctx = SSL_CTX_new (SSLv2_client_method ()); break; +#endif +#endif + #ifndef OPENSSL_NO_SSL3 /* 3/SSLv3 */ - case 3: ssl_ctx = SSL_CTX_new (SSLv3_client_method ()); break; + case 3: +#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) + ssl_ctx = SSL_CTX_new (TLS_client_method ()); + SSL_CTX_set_min_proto_version(ssl_ctx, SSL3_VERSION); + SSL_CTX_set_max_proto_version(ssl_ctx, SSL3_VERSION); + break; +#else + ssl_ctx = SSL_CTX_new (SSLv3_client_method ()); break; +#endif #endif - /* 4/TLSv1 */ - case 4: ssl_ctx = SSL_CTX_new (TLSv1_client_method ()); break; + /* 4/TLSv1.0 */ + case 4: +#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) + ssl_ctx = SSL_CTX_new (TLS_client_method ()); + SSL_CTX_set_min_proto_version(ssl_ctx, TLS1_VERSION); + SSL_CTX_set_max_proto_version(ssl_ctx, TLS1_VERSION); + break; +#else + ssl_ctx = SSL_CTX_new (TLSv1_client_method ()); break; + SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2); break; +#endif + + /* 5/TLSv1.1 */ + case 5: +#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) + ssl_ctx = SSL_CTX_new (TLS_client_method ()); + SSL_CTX_set_min_proto_version(ssl_ctx, TLS1_1_VERSION); + SSL_CTX_set_max_proto_version(ssl_ctx, TLS1_1_VERSION); + break; +#else + ssl_ctx = SSL_CTX_new (TLSv1_client_method ()); break; + SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_2); break; +#endif + + /* 6/TLSv1.2 */ + case 6: +#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) + ssl_ctx = SSL_CTX_new (TLS_client_method ()); + SSL_CTX_set_min_proto_version(ssl_ctx, TLS1_2_VERSION); + SSL_CTX_set_max_proto_version(ssl_ctx, TLS1_2_VERSION); + break; +#else + ssl_ctx = SSL_CTX_new (TLSv1_client_method ()); break; + SSL_CTX_set_options(ssl_ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | SSL_OP_NO_TLSv1_1); break; +#endif + +#if (OPENSSL_VERSION_NUMBER >= 0x10101000L) + /* 7/TLSv1.3 */ + ssl_ctx = SSL_CTX_new (TLS_client_method ()); + SSL_CTX_set_min_proto_version(ssl_ctx, TLS1_3_VERSION); + SSL_CTX_set_max_proto_version(ssl_ctx, TLS1_3_VERSION); + break; +#endif + } if (!ssl_ctx) { @@ -1231,7 +1307,12 @@ main(int argc, char **argv) #ifndef OPENSSL_NO_SSL3 case 3: printf (" --ssl-protocol=SSLv3"); break; #endif - case 4: printf (" --ssl-protocol=TLSv1"); break; + case 4: printf (" --ssl-protocol=TLSv1.0"); break; + case 5: printf (" --ssl-protocol=TLSv1.1"); break; + case 6: printf (" --ssl-protocol=TLSv1.2"); break; +#if (OPENSSL_VERSION_NUMBER >= 0x10101000L) + case 7: printf (" --ssl-protocol=TLSv1.3"); break; +#endif } #endif if (param.additional_header) diff --git a/src/timer.c b/src/timer.c index 77a2367..6f70822 100755 --- a/src/timer.c +++ b/src/timer.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include