ngx_int_t ngx_tcp_upstream_set_round_robin_peer_session(ngx_peer_connection_t *pc, void *data) { ngx_tcp_upstream_rr_peer_data_t *rrp = data; ngx_int_t rc; ngx_ssl_session_t *ssl_session; ngx_tcp_upstream_rr_peer_t *peer; peer = &rrp->peers->peer[rrp->current]; /* TODO: threads only mutex */ /* ngx_lock_mutex(rrp->peers->mutex); */ ssl_session = peer->ssl_session; rc = ngx_ssl_set_session(pc->connection, ssl_session); ngx_log_debug2(NGX_LOG_DEBUG_TCP, pc->log, 0, "set session: %p:%d", ssl_session, ssl_session ? ssl_session->references : 0); /* ngx_unlock_mutex(rrp->peers->mutex); */ return rc; }
static ngx_int_t ngx_http_upstream_set_hash_peer_session(ngx_peer_connection_t *pc, void *data) { ngx_http_upstream_hash_peer_data_t *uhpd = data; ngx_int_t rc; ngx_ssl_session_t *ssl_session; ngx_http_upstream_hash_peer_t *peer; ngx_uint_t current; current = ngx_http_upstream_get_hash_peer_index(uhpd); peer = &uhpd->peers->peer[current]; /* TODO: threads only mutex */ /* ngx_lock_mutex(rrp->peers->mutex); */ ssl_session = peer->ssl_session; rc = ngx_ssl_set_session(pc->connection, ssl_session); ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0, "set session: %p:%d", ssl_session, ssl_session ? ssl_session->references : 0); /* ngx_unlock_mutex(rrp->peers->mutex); */ return rc; }
ngx_int_t ngx_http_upstream_set_resolveMK_peer_session(ngx_peer_connection_t *pc, void *data) { ngx_http_upstream_resolveMK_peer_data_t *urpd = data; ngx_int_t rc; ngx_ssl_session_t *ssl_session; ngx_http_upstream_resolveMK_peer_t *peer; peer = &urpd->conf->peers[urpd->current]; ssl_session = peer->ssl_session; rc = ngx_ssl_set_session(pc->connection, ssl_session); ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0, "set session: %p:%d", ssl_session, ssl_session ? ssl_session->references : 0); return rc; }
static ngx_int_t ngx_http_upstream_session_sticky_set_peer_session(ngx_peer_connection_t *pc, void *data) { ngx_http_upstream_ss_peer_data_t *sspd = data; ngx_int_t rc; ngx_ssl_session_t *ssl_session; ssl_session = sspd->ssl_session; rc = ngx_ssl_set_session(pc->connection, ssl_session); ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0, "set session: %p:%d", ssl_session, ssl_session ? ssl_session->references : 0); return rc; }
static ngx_int_t ngx_http_upstream_chash_set_peer_session(ngx_peer_connection_t *pc, void *data) { ngx_http_upstream_chash_peer_data_t *uchpd = data; ngx_int_t rc; ngx_ssl_session_t *ssl_session; ssl_session = uchpd->ssl_session; rc = ngx_ssl_set_session(pc->connection, ssl_session); #if OPENSSL_VERSION_NUMBER < 0x10100000L ngx_log_debug2(NGX_LOG_DEBUG_HTTP, pc->log, 0, "set session: %p:%d", ssl_session, ssl_session ? ssl_session->references : 0); #endif return rc; }
static ngx_int_t ngx_stream_upstream_set_round_robin_peer_session(ngx_peer_connection_t *pc, void *data) { ngx_stream_upstream_rr_peer_data_t *rrp = data; ngx_int_t rc; ngx_ssl_session_t *ssl_session; ngx_stream_upstream_rr_peer_t *peer; #if (NGX_STREAM_UPSTREAM_ZONE) int len; #if OPENSSL_VERSION_NUMBER >= 0x0090707fL const #endif u_char *p; ngx_stream_upstream_rr_peers_t *peers; u_char buf[NGX_SSL_MAX_SESSION_SIZE]; #endif peer = rrp->current; #if (NGX_STREAM_UPSTREAM_ZONE) peers = rrp->peers; if (peers->shpool) { ngx_stream_upstream_rr_peers_rlock(peers); ngx_stream_upstream_rr_peer_lock(peers, peer); if (peer->ssl_session == NULL) { ngx_stream_upstream_rr_peer_unlock(peers, peer); ngx_stream_upstream_rr_peers_unlock(peers); return NGX_OK; } len = peer->ssl_session_len; ngx_memcpy(buf, peer->ssl_session, len); ngx_stream_upstream_rr_peer_unlock(peers, peer); ngx_stream_upstream_rr_peers_unlock(peers); p = buf; ssl_session = d2i_SSL_SESSION(NULL, &p, len); rc = ngx_ssl_set_session(pc->connection, ssl_session); ngx_log_debug1(NGX_LOG_DEBUG_STREAM, pc->log, 0, "set session: %p", ssl_session); ngx_ssl_free_session(ssl_session); return rc; } #endif ssl_session = peer->ssl_session; rc = ngx_ssl_set_session(pc->connection, ssl_session); ngx_log_debug1(NGX_LOG_DEBUG_STREAM, pc->log, 0, "set session: %p", ssl_session); return rc; }