in native/common/jk_ajp_common.c [3048:3240]
int ajp_init(jk_worker_t *pThis, jk_map_t *props, jk_worker_env_t *we,
jk_log_context_t *l, int proto)
{
int rc = JK_FALSE;
int cache;
/*
* start the connection cache
*/
JK_TRACE_ENTER(l);
cache = jk_get_worker_def_cache_size(proto);
if (pThis && pThis->worker_private) {
ajp_worker_t *p = pThis->worker_private;
p->worker.we = we;
p->ep_cache_sz = jk_get_worker_cache_size(props, p->name, cache);
p->ep_mincache_sz = jk_get_worker_cache_size_min(props, p->name,
(p->ep_cache_sz+1) / 2);
p->socket_timeout =
jk_get_worker_socket_timeout(props, p->name, AJP_DEF_SOCKET_TIMEOUT);
p->socket_connect_timeout =
jk_get_worker_socket_connect_timeout(props, p->name,
p->socket_timeout * 1000);
p->keepalive =
jk_get_worker_socket_keepalive(props, p->name, JK_FALSE);
p->cache_timeout =
jk_get_worker_cache_timeout(props, p->name,
AJP_DEF_CACHE_TIMEOUT);
p->ping_timeout =
jk_get_worker_ping_timeout(props, p->name,
AJP_DEF_PING_TIMEOUT);
p->ping_mode =
jk_get_worker_ping_mode(props, p->name,
AJP_CPING_NONE);
p->connect_timeout =
jk_get_worker_connect_timeout(props, p->name,
AJP_DEF_CONNECT_TIMEOUT);
p->prepost_timeout =
jk_get_worker_prepost_timeout(props, p->name,
AJP_DEF_PREPOST_TIMEOUT);
if ((p->ping_mode & AJP_CPING_CONNECT) &&
p->connect_timeout == AJP_DEF_CONNECT_TIMEOUT)
p->connect_timeout = p->ping_timeout;
if ((p->ping_mode & AJP_CPING_PREPOST) &&
p->prepost_timeout == AJP_DEF_PREPOST_TIMEOUT)
p->prepost_timeout = p->ping_timeout;
p->conn_ping_interval =
jk_get_worker_conn_ping_interval(props, p->name, 0);
if ((p->ping_mode & AJP_CPING_INTERVAL) &&
p->conn_ping_interval == 0) {
/* XXX: Ping timeout is in miliseconds
* and ping_interval is in seconds.
* Use 10 times larger value for ping interval
* (ping_timeout / 1000) * 10
*/
p->conn_ping_interval = p->ping_timeout / 100;
}
p->reply_timeout =
jk_get_worker_reply_timeout(props, p->name,
AJP_DEF_REPLY_TIMEOUT);
p->recovery_opts =
jk_get_worker_recovery_opts(props, p->name,
AJP_DEF_RECOVERY_OPTS);
p->retries =
jk_get_worker_retries(props, p->name,
JK_RETRIES);
p->lb_retries =
jk_get_worker_lb_retries(props, p->name,
JK_LB_RETRIES);
p->max_packet_size =
jk_get_max_packet_size(props, p->name);
p->socket_buf =
jk_get_worker_socket_buffer(props, p->name, p->max_packet_size);
p->retry_interval =
jk_get_worker_retry_interval(props, p->name,
JK_SLEEP_DEF);
p->cache_acquire_timeout = jk_get_worker_cache_acquire_timeout(props,
p->name, p->retries * p->retry_interval);
p->busy_limit =
jk_get_worker_busy_limit(props, p->name, 0);
jk_get_worker_fail_on_status(props, p->name,
&(p->http_status_fail),
&(p->http_status_fail_num));
if (p->retries < 1) {
jk_log(l, JK_LOG_INFO,
"(%s) number of retries must be greater then 1. "
"Setting to default=%d",
p->name, JK_RETRIES);
p->retries = JK_RETRIES;
}
p->maintain_time = jk_get_worker_maintain_time(props);
if(p->maintain_time < 0)
p->maintain_time = 0;
if (JK_IS_DEBUG_LEVEL(l)) {
jk_log(l, JK_LOG_DEBUG,
"(%s) setting endpoint options:",
p->name);
jk_log(l, JK_LOG_DEBUG,
"keepalive: %d",
p->keepalive);
jk_log(l, JK_LOG_DEBUG,
"socket timeout: %d",
p->socket_timeout);
jk_log(l, JK_LOG_DEBUG,
"socket connect timeout: %d",
p->socket_connect_timeout);
jk_log(l, JK_LOG_DEBUG,
"buffer size: %d",
p->socket_buf);
jk_log(l, JK_LOG_DEBUG,
"pool timeout: %d",
p->cache_timeout);
jk_log(l, JK_LOG_DEBUG,
"ping timeout: %d",
p->ping_timeout);
jk_log(l, JK_LOG_DEBUG,
"connect timeout: %d",
p->connect_timeout);
jk_log(l, JK_LOG_DEBUG,
"reply timeout: %d",
p->reply_timeout);
jk_log(l, JK_LOG_DEBUG,
"prepost timeout: %d",
p->prepost_timeout);
jk_log(l, JK_LOG_DEBUG,
"recovery options: %d",
p->recovery_opts);
jk_log(l, JK_LOG_DEBUG,
"retries: %d",
p->retries);
jk_log(l, JK_LOG_DEBUG,
"max packet size: %d",
p->max_packet_size);
jk_log(l, JK_LOG_DEBUG,
"retry interval: %d",
p->retry_interval);
jk_log(l, JK_LOG_DEBUG,
"busy limit: %d",
p->busy_limit);
}
/*
* Need to initialize secret here since we could return from inside
* of the following loop
*/
p->secret = jk_get_worker_secret(props, p->name);
if (!ajp_create_endpoint_cache(p, proto, l)) {
jk_log(l, JK_LOG_ERROR,
"(%s) allocating connection pool of size %u",
p->name, p->ep_cache_sz);
JK_TRACE_EXIT(l);
return JK_FALSE;
}
rc = JK_TRUE;
}
else {
JK_LOG_NULL_PARAMS(l);
}
JK_TRACE_EXIT(l);
return rc;
}