mturk
Mon, 13 Oct 2008 04:31:57 -0700
Author: mturk Date: Mon Oct 13 04:31:00 2008 New Revision: 704015 URL: http://svn.apache.org/viewvc?rev=704015&view=rev Log: Add socket_connect_timeout, as per mod_proxy Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp12_worker.c tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h tomcat/connectors/trunk/jk/native/common/jk_connect.c tomcat/connectors/trunk/jk/native/common/jk_connect.h tomcat/connectors/trunk/jk/native/common/jk_util.c tomcat/connectors/trunk/jk/native/common/jk_util.h tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml tomcat/connectors/trunk/jk/xdocs/reference/workers.xml Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp12_worker.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp12_worker.c?rev=704015&r1=704014&r2=704015&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_ajp12_worker.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_ajp12_worker.c Mon Oct 13 04:31:00 2008 @@ -127,7 +127,7 @@ attempt++) { p->sd = jk_open_socket(&p->worker->worker_inet_addr, - JK_FALSE, 0, 0, l); + JK_FALSE, 0, 0, 0, l); jk_log(l, JK_LOG_DEBUG, "In jk_endpoint_t::service, sd = %d", p->sd); Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c?rev=704015&r1=704014&r2=704015&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c Mon Oct 13 04:31:00 2008 @@ -913,6 +913,7 @@ ae->sd = jk_open_socket(&ae->worker->worker_inet_addr, ae->worker->keepalive, ae->worker->socket_timeout, + ae->worker->socket_connect_timeout, ae->worker->socket_buf, l); if (!IS_VALID_SOCKET(ae->sd)) { @@ -2509,6 +2510,10 @@ 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); @@ -2591,51 +2596,55 @@ "setting endpoint options:", p->keepalive); jk_log(l, JK_LOG_DEBUG, - "keepalive: %d", + "keepalive: %d", p->keepalive); jk_log(l, JK_LOG_DEBUG, - "timeout: %d", + "socket timeout: %d", p->socket_timeout); jk_log(l, JK_LOG_DEBUG, - "buffer size: %d", + "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", + "pool timeout: %d", p->cache_timeout); jk_log(l, JK_LOG_DEBUG, - "ping timeout: %d", + "ping timeout: %d", p->ping_timeout); jk_log(l, JK_LOG_DEBUG, - "connect timeout: %d", + "connect timeout: %d", p->connect_timeout); jk_log(l, JK_LOG_DEBUG, - "reply timeout: %d", + "reply timeout: %d", p->reply_timeout); jk_log(l, JK_LOG_DEBUG, - "prepost timeout: %d", + "prepost timeout: %d", p->prepost_timeout); jk_log(l, JK_LOG_DEBUG, - "recovery options: %d", + "recovery options: %d", p->recovery_opts); jk_log(l, JK_LOG_DEBUG, - "retries: %d", + "retries: %d", p->retries); jk_log(l, JK_LOG_DEBUG, - "max packet size: %d", + "max packet size: %d", p->max_packet_size); jk_log(l, JK_LOG_DEBUG, - "retry interval: %d", + "retry interval: %d", p->retry_interval); } /* Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h?rev=704015&r1=704014&r2=704015&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h (original) +++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h Mon Oct 13 04:31:00 2008 @@ -306,6 +306,7 @@ * Handle Socket Timeouts */ int socket_timeout; + int socket_connect_timeout; int keepalive; int socket_buf; /* Modified: tomcat/connectors/trunk/jk/native/common/jk_connect.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_connect.c?rev=704015&r1=704014&r2=704015&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_connect.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_connect.c Mon Oct 13 04:31:00 2008 @@ -172,8 +172,9 @@ FD_ZERO(&efdset); FD_SET(sd, &efdset); - tv.tv_sec = timeout; - tv.tv_usec = 0; + tv.tv_sec = timeout / 1000; + tv.tv_usec = (timeout % 1000) * 1000; + rc = select((int)sd + 1, NULL, &wfdset, &efdset, &tv); if (JK_IS_SOCKET_ERROR(rc) || rc == 0) { rc = WSAGetLastError(); @@ -235,8 +236,8 @@ FD_ZERO(&wfdset); FD_SET(sd, &wfdset); - tv.tv_sec = timeout; - tv.tv_usec = 0; + tv.tv_sec = timeout / 1000; + tv.tv_usec = (timeout % 1000) * 1000; rc = select(sd + 1, NULL, &wfdset, NULL, &tv); if (rc <= 0) { /* Save errno */ @@ -413,7 +414,8 @@ * @remark Cares about errno */ jk_sock_t jk_open_socket(struct sockaddr_in *addr, int keepalive, - int timeout, int sock_buf, jk_logger_t *l) + int timeout, int connect_timeout, + int sock_buf, jk_logger_t *l) { char buf[32]; jk_sock_t sd; @@ -578,7 +580,7 @@ #if (_XOPEN_SOURCE >= 520) && defined(AS400) ((struct sockaddr *)addr)->sa_len = sizeof(struct sockaddr_in); #endif - ret = nb_connect(sd, (struct sockaddr *)addr, timeout, l); + ret = nb_connect(sd, (struct sockaddr *)addr, connect_timeout, l); #if defined(WIN32) || (defined(NETWARE) && defined(__NOVELL_LIBC__)) if (JK_IS_SOCKET_ERROR(ret)) { JK_GET_SOCKET_ERRNO(); Modified: tomcat/connectors/trunk/jk/native/common/jk_connect.h URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_connect.h?rev=704015&r1=704014&r2=704015&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_connect.h (original) +++ tomcat/connectors/trunk/jk/native/common/jk_connect.h Mon Oct 13 04:31:00 2008 @@ -41,7 +41,8 @@ int jk_resolve(const char *host, int port, struct sockaddr_in *rc, jk_logger_t *l); jk_sock_t jk_open_socket(struct sockaddr_in *addr, int keepalive, - int timeout, int sock_buf, jk_logger_t *l); + int timeout, int connect_timeout, + int sock_buf, jk_logger_t *l); int jk_close_socket(jk_sock_t sd, jk_logger_t *l); Modified: tomcat/connectors/trunk/jk/native/common/jk_util.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_util.c?rev=704015&r1=704014&r2=704015&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_util.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_util.c Mon Oct 13 04:31:00 2008 @@ -58,6 +58,7 @@ #define PREPOST_TIMEOUT_OF_WORKER ("prepost_timeout") #define REPLY_TIMEOUT_OF_WORKER ("reply_timeout") #define SOCKET_TIMEOUT_OF_WORKER ("socket_timeout") +#define SOCKET_CONNECT_TIMEOUT_OF_WORKER ("socket_connect_timeout") #define PING_TIMEOUT_OF_WORKER ("ping_timeout") #define PING_MODE_OF_WORKER ("ping_mode") #define SOCKET_BUFFER_OF_WORKER ("socket_buffer") @@ -182,6 +183,7 @@ PING_MODE_OF_WORKER, REPLY_TIMEOUT_OF_WORKER, SOCKET_TIMEOUT_OF_WORKER, + SOCKET_CONNECT_TIMEOUT_OF_WORKER, SOCKET_BUFFER_OF_WORKER, SOCKET_KEEPALIVE_OF_WORKER, CONN_PING_INTERVAL_OF_WORKER, @@ -272,6 +274,7 @@ PING_MODE_OF_WORKER, REPLY_TIMEOUT_OF_WORKER, SOCKET_TIMEOUT_OF_WORKER, + SOCKET_CONNECT_TIMEOUT_OF_WORKER, SOCKET_BUFFER_OF_WORKER, SOCKET_KEEPALIVE_OF_WORKER, CONN_PING_INTERVAL_OF_WORKER, @@ -959,6 +962,19 @@ return jk_map_get_int(m, buf, def); } +int jk_get_worker_socket_connect_timeout(jk_map_t *m, const char *wname, int def) +{ + char buf[1024]; + + if (!m || !wname) { + return -1; + } + + MAKE_WORKER_PARAM(SOCKET_CONNECT_TIMEOUT_OF_WORKER); + + return jk_map_get_int(m, buf, def); +} + int jk_get_worker_recover_timeout(jk_map_t *m, const char *wname, int def) { char buf[1024]; Modified: tomcat/connectors/trunk/jk/native/common/jk_util.h URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_util.h?rev=704015&r1=704014&r2=704015&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_util.h (original) +++ tomcat/connectors/trunk/jk/native/common/jk_util.h Mon Oct 13 04:31:00 2008 @@ -74,6 +74,8 @@ int jk_get_worker_socket_timeout(jk_map_t *m, const char *wname, int def); +int jk_get_worker_socket_connect_timeout(jk_map_t *m, const char *wname, int def); + int jk_get_worker_socket_buffer(jk_map_t *m, const char *wname, int def); int jk_get_worker_socket_keepalive(jk_map_t *m, const char *wname, int def); Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml?rev=704015&r1=704014&r2=704015&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml (original) +++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Mon Oct 13 04:31:00 2008 @@ -43,6 +43,11 @@ <br /> <subsection name="Native"> <changelog> + <update> + Added socket_connect_timeout directive for setting the + connect timeout for the socket. This enables to have low + connection timeout but higher operational timeouts. (mturk) + </update> <fix>Always send initial POST packet even if the client disconnected after sending request but before providing POST data. In that case or in case the client broke the Modified: tomcat/connectors/trunk/jk/xdocs/reference/workers.xml URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/reference/workers.xml?rev=704015&r1=704014&r2=704015&view=diff ============================================================================== --- tomcat/connectors/trunk/jk/xdocs/reference/workers.xml (original) +++ tomcat/connectors/trunk/jk/xdocs/reference/workers.xml Mon Oct 13 04:31:00 2008 @@ -248,6 +248,15 @@ on all socket operations. </directive> +<directive name="socket_connect_timeout" default="socket_timeout" required="false"> +Socket connect timeout in milliseconds used for the communication channel between JK and remote host. +If the remote host does not respond inside the timeout specified, JK will generate an error, +and retry again. +<p> +This feature has been added in <b>jk 1.2.27</b>. +</p> +</directive> + <directive name="socket_keepalive" default="False" required="false"> This directive should be used when you have a firewall between your webserver and the Tomcat engine, who tend to drop inactive connections. This flag will tell the Operating System --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]