nghttpx: Use ImmutableString to store memcached server host

This commit is contained in:
Tatsuhiro Tsujikawa 2016-02-14 20:59:10 +09:00
parent 47106c0756
commit bfc26e8299
6 changed files with 21 additions and 17 deletions

View File

@ -2220,10 +2220,10 @@ void process_options(
{ {
auto &memcachedconf = tlsconf.session_cache.memcached; auto &memcachedconf = tlsconf.session_cache.memcached;
if (memcachedconf.host) { if (!memcachedconf.host.empty()) {
auto hostport = auto hostport = util::make_hostport(StringRef{memcachedconf.host},
util::make_hostport(memcachedconf.host.get(), memcachedconf.port); memcachedconf.port);
if (resolve_hostname(&memcachedconf.addr, memcachedconf.host.get(), if (resolve_hostname(&memcachedconf.addr, memcachedconf.host.c_str(),
memcachedconf.port, memcachedconf.family) == -1) { memcachedconf.port, memcachedconf.family) == -1) {
LOG(FATAL) LOG(FATAL)
<< "Resolving memcached address for TLS session cache failed: " << "Resolving memcached address for TLS session cache failed: "
@ -2238,10 +2238,10 @@ void process_options(
{ {
auto &memcachedconf = tlsconf.ticket.memcached; auto &memcachedconf = tlsconf.ticket.memcached;
if (memcachedconf.host) { if (!memcachedconf.host.empty()) {
auto hostport = auto hostport = util::make_hostport(StringRef{memcachedconf.host},
util::make_hostport(memcachedconf.host.get(), memcachedconf.port); memcachedconf.port);
if (resolve_hostname(&memcachedconf.addr, memcachedconf.host.get(), if (resolve_hostname(&memcachedconf.addr, memcachedconf.host.c_str(),
memcachedconf.port, memcachedconf.family) == -1) { memcachedconf.port, memcachedconf.family) == -1) {
LOG(FATAL) << "Resolving memcached address for TLS ticket key failed: " LOG(FATAL) << "Resolving memcached address for TLS ticket key failed: "
<< hostport; << hostport;

View File

@ -2154,7 +2154,7 @@ int parse_config(const char *opt, const char *optarg,
} }
auto &memcachedconf = mod_config()->tls.session_cache.memcached; auto &memcachedconf = mod_config()->tls.session_cache.memcached;
memcachedconf.host = strcopy(host); memcachedconf.host = host;
memcachedconf.port = port; memcachedconf.port = port;
return 0; return 0;
@ -2166,7 +2166,7 @@ int parse_config(const char *opt, const char *optarg,
} }
auto &memcachedconf = mod_config()->tls.ticket.memcached; auto &memcachedconf = mod_config()->tls.ticket.memcached;
memcachedconf.host = strcopy(host); memcachedconf.host = host;
memcachedconf.port = port; memcachedconf.port = port;
return 0; return 0;

View File

@ -343,7 +343,9 @@ struct TLSConfig {
struct { struct {
Address addr; Address addr;
uint16_t port; uint16_t port;
std::unique_ptr<char[]> host; // Hostname of memcached server. This is also used as SNI field
// if TLS is enabled.
ImmutableString host;
// Client private key and certificate for authentication // Client private key and certificate for authentication
ImmutableString private_key_file; ImmutableString private_key_file;
ImmutableString cert_file; ImmutableString cert_file;
@ -370,7 +372,9 @@ struct TLSConfig {
struct { struct {
Address addr; Address addr;
uint16_t port; uint16_t port;
std::unique_ptr<char[]> host; // Hostname of memcached server. This is also used as SNI field
// if TLS is enabled.
ImmutableString host;
// Client private key and certificate for authentication // Client private key and certificate for authentication
ImmutableString private_key_file; ImmutableString private_key_file;
ImmutableString cert_file; ImmutableString cert_file;

View File

@ -485,7 +485,7 @@ SSL_CTX *create_ssl_context(const char *private_key_file, const char *cert_file
SSL_CTX_set_session_id_context(ssl_ctx, sid_ctx, sizeof(sid_ctx) - 1); SSL_CTX_set_session_id_context(ssl_ctx, sid_ctx, sizeof(sid_ctx) - 1);
SSL_CTX_set_session_cache_mode(ssl_ctx, SSL_SESS_CACHE_SERVER); SSL_CTX_set_session_cache_mode(ssl_ctx, SSL_SESS_CACHE_SERVER);
if (tlsconf.session_cache.memcached.host) { if (!tlsconf.session_cache.memcached.host.empty()) {
SSL_CTX_sess_set_new_cb(ssl_ctx, tls_session_new_cb); SSL_CTX_sess_set_new_cb(ssl_ctx, tls_session_new_cb);
SSL_CTX_sess_set_get_cb(ssl_ctx, tls_session_get_cb); SSL_CTX_sess_set_get_cb(ssl_ctx, tls_session_get_cb);
} }

View File

@ -91,11 +91,11 @@ Worker::Worker(struct ev_loop *loop, SSL_CTX *sv_ssl_ctx, SSL_CTX *cl_ssl_ctx,
auto &session_cacheconf = get_config()->tls.session_cache; auto &session_cacheconf = get_config()->tls.session_cache;
if (session_cacheconf.memcached.host) { if (!session_cacheconf.memcached.host.empty()) {
session_cache_memcached_dispatcher_ = make_unique<MemcachedDispatcher>( session_cache_memcached_dispatcher_ = make_unique<MemcachedDispatcher>(
&session_cacheconf.memcached.addr, loop, &session_cacheconf.memcached.addr, loop,
tls_session_cache_memcached_ssl_ctx, tls_session_cache_memcached_ssl_ctx,
session_cacheconf.memcached.host.get(), &mcpool_); StringRef{session_cacheconf.memcached.host}, &mcpool_);
} }
auto &downstreamconf = get_config()->conn.downstream; auto &downstreamconf = get_config()->conn.downstream;

View File

@ -427,7 +427,7 @@ int worker_process_event_loop(WorkerProcessConfig *wpconf) {
auto &ticketconf = get_config()->tls.ticket; auto &ticketconf = get_config()->tls.ticket;
auto &memcachedconf = ticketconf.memcached; auto &memcachedconf = ticketconf.memcached;
if (ticketconf.memcached.host) { if (!memcachedconf.host.empty()) {
SSL_CTX *ssl_ctx = nullptr; SSL_CTX *ssl_ctx = nullptr;
if (memcachedconf.tls) { if (memcachedconf.tls) {
@ -437,7 +437,7 @@ int worker_process_event_loop(WorkerProcessConfig *wpconf) {
conn_handler.set_tls_ticket_key_memcached_dispatcher( conn_handler.set_tls_ticket_key_memcached_dispatcher(
make_unique<MemcachedDispatcher>( make_unique<MemcachedDispatcher>(
&ticketconf.memcached.addr, loop, ssl_ctx, &ticketconf.memcached.addr, loop, ssl_ctx,
StringRef(memcachedconf.host.get()), &mcpool)); StringRef{memcachedconf.host}, &mcpool));
ev_timer_init(&renew_ticket_key_timer, memcached_get_ticket_key_cb, 0., ev_timer_init(&renew_ticket_key_timer, memcached_get_ticket_key_cb, 0.,
0.); 0.);