Skip to content

Commit 6393b92

Browse files
adamflottushachar
authored andcommitted
Add SNI support (#107)
1 parent bec9cc4 commit 6393b92

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

memtier_benchmark.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ static void config_print(FILE *file, struct benchmark_config *cfg)
9292
"key = %s\n"
9393
"cacert = %s\n"
9494
"tls_skip_verify = %s\n"
95+
"sni = %s\n"
9596
#endif
9697
"out_file = %s\n"
9798
"client_stats = %s\n"
@@ -139,6 +140,7 @@ static void config_print(FILE *file, struct benchmark_config *cfg)
139140
cfg->tls_key,
140141
cfg->tls_cacert,
141142
cfg->tls_skip_verify ? "yes" : "no",
143+
cfg->tls_sni,
142144
#endif
143145
cfg->out_file,
144146
cfg->client_stats,
@@ -195,6 +197,7 @@ static void config_print_to_json(json_handler * jsonhandler, struct benchmark_co
195197
jsonhandler->write_obj("key" ,"\"%s\"", cfg->tls_key);
196198
jsonhandler->write_obj("cacert" ,"\"%s\"", cfg->tls_cacert);
197199
jsonhandler->write_obj("tls_skip_verify" ,"\"%s\"", cfg->tls_skip_verify ? "true" : "false");
200+
jsonhandler->write_obj("sni" ,"\"%s\"", cfg->tls_sni);
198201
#endif
199202
jsonhandler->write_obj("client_stats" ,"\"%s\"", cfg->client_stats);
200203
jsonhandler->write_obj("run_count" ,"%u", cfg->run_count);
@@ -380,7 +383,8 @@ static int config_parse_args(int argc, char *argv[], struct benchmark_config *cf
380383
o_tls_cert,
381384
o_tls_key,
382385
o_tls_cacert,
383-
o_tls_skip_verify
386+
o_tls_skip_verify,
387+
o_tls_sni
384388
};
385389

386390
static struct option long_options[] = {
@@ -394,6 +398,7 @@ static int config_parse_args(int argc, char *argv[], struct benchmark_config *cf
394398
{ "key", 1, 0, o_tls_key },
395399
{ "cacert", 1, 0, o_tls_cacert },
396400
{ "tls-skip-verify", 0, 0, o_tls_skip_verify },
401+
{ "sni", 1, 0, o_tls_sni },
397402
#endif
398403
{ "out-file", 1, 0, 'o' },
399404
{ "client-stats", 1, 0, o_client_stats },
@@ -806,6 +811,9 @@ static int config_parse_args(int argc, char *argv[], struct benchmark_config *cf
806811
case o_tls_skip_verify:
807812
cfg->tls_skip_verify = true;
808813
break;
814+
case o_tls_sni:
815+
cfg->tls_sni = optarg;
816+
break;
809817
#endif
810818
default:
811819
return -1;
@@ -839,6 +847,7 @@ void usage() {
839847
" --key=FILE Use specified private key for TLS\n"
840848
" --cacert=FILE Use specified CA certs bundle for TLS\n"
841849
" --tls-skip-verify Skip verification of server certificate\n"
850+
" --sni=STRING Add an SNI header\n"
842851
#endif
843852
" on the protocol can be PASSWORD or USER:PASSWORD.\n"
844853
" -x, --run-count=NUMBER Number of full-test iterations to perform\n"

memtier_benchmark.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ struct benchmark_config {
9999
const char *tls_key;
100100
const char *tls_cacert;
101101
bool tls_skip_verify;
102+
const char *tls_sni;
102103
SSL_CTX *openssl_ctx;
103104
#endif
104105
};
@@ -108,4 +109,3 @@ extern void benchmark_log_file_line(int level, const char *filename, unsigned in
108109
extern void benchmark_log(int level, const char *fmt, ...);
109110

110111
#endif /* _MEMTIER_BENCHMARK_H */
111-

shard_connection.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,11 @@ void shard_connection::setup_event(int sockfd) {
188188
if (m_config->openssl_ctx) {
189189
SSL *ctx = SSL_new(m_config->openssl_ctx);
190190
assert(ctx != NULL);
191+
192+
if (m_config->tls_sni) {
193+
SSL_set_tlsext_host_name(ctx, m_config->tls_sni);
194+
}
195+
191196
m_bev = bufferevent_openssl_socket_new(m_event_base,
192197
sockfd, ctx, BUFFEREVENT_SSL_CONNECTING, BEV_OPT_CLOSE_ON_FREE);
193198
} else {

0 commit comments

Comments
 (0)