You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by rj...@apache.org on 2013/06/26 11:08:54 UTC
svn commit: r1496844 - in /tomcat/jk/trunk/native/common: jk_ajp_common.c
jk_ajp_common.h
Author: rjung
Date: Wed Jun 26 09:08:54 2013
New Revision: 1496844
URL: http://svn.apache.org/r1496844
Log:
- Use defined constants in ping mode config
parsing.
- Fix handling of default values in ping mode
config parsing.
- Provide utility function to map ping mode
numeric value to text representation.
Modified:
tomcat/jk/trunk/native/common/jk_ajp_common.c
tomcat/jk/trunk/native/common/jk_ajp_common.h
Modified: tomcat/jk/trunk/native/common/jk_ajp_common.c
URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_ajp_common.c?rev=1496844&r1=1496843&r2=1496844&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_ajp_common.c (original)
+++ tomcat/jk/trunk/native/common/jk_ajp_common.c Wed Jun 26 09:08:54 2013
@@ -74,6 +74,12 @@ static const char *ajp_state_type[] = {
NULL
};
+static char ajp_cping_mode[] = {
+ AJP_CPING_CONNECT_TEXT,
+ AJP_CPING_PREPOST_TEXT,
+ AJP_CPING_INTERVAL_TEXT,
+};
+
#define UNKNOWN_METHOD (-1)
static int sc_for_req_method(const char *method, size_t len)
@@ -343,25 +349,43 @@ int jk_ajp_get_state_code(const char *v)
return JK_AJP_STATE_DEF;
}
+void jk_ajp_get_cping_text(int mode, char *buf)
+{
+ int bit = 1;
+ int log2 = 0;
+ int pos = 0;
+ while (bit <= mode && bit <= AJP_CPING_MAX) {
+ if (mode & bit) {
+ buf[pos] = ajp_cping_mode[log2];
+ pos +=1;
+ }
+ bit *= 2;
+ log2 += 1;
+ }
+ buf[pos] = '\0';
+}
+
int jk_ajp_get_cping_mode(const char *m, int def)
{
- int mv = def;
+ int mv = 0;
if (!m)
- return mv;
+ return def;
while (*m != '\0') {
- if (*m == 'C' || *m == 'c')
+ if (*m == AJP_CPING_CONNECT_TEXT || *m == tolower(AJP_CPING_CONNECT_TEXT))
mv |= AJP_CPING_CONNECT;
- if (*m == 'P' || *m == 'p')
+ if (*m == AJP_CPING_PREPOST_TEXT || *m == tolower(AJP_CPING_PREPOST_TEXT))
mv |= AJP_CPING_PREPOST;
- if (*m == 'I' || *m == 'i')
+ if (*m == AJP_CPING_INTERVAL_TEXT || *m == tolower(AJP_CPING_INTERVAL_TEXT))
mv |= AJP_CPING_INTERVAL;
- if (*m == 'A' || *m == 'a') {
+ if (*m == AJP_CPING_ALL_TEXT || *m == tolower(AJP_CPING_ALL_TEXT)) {
mv = AJP_CPING_CONNECT | AJP_CPING_PREPOST | AJP_CPING_INTERVAL;
break;
}
m++;
}
- return mv;
+ if (mv)
+ return mv;
+ return def;
}
/*
Modified: tomcat/jk/trunk/native/common/jk_ajp_common.h
URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_ajp_common.h?rev=1496844&r1=1496843&r2=1496844&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_ajp_common.h (original)
+++ tomcat/jk/trunk/native/common/jk_ajp_common.h Wed Jun 26 09:08:54 2013
@@ -236,6 +236,12 @@ extern "C"
#define AJP_CPING_CONNECT (1) /* Send cping on fresh connection */
#define AJP_CPING_PREPOST (2) /* Send cping before sending request */
#define AJP_CPING_INTERVAL (4) /* Send cping on regular intervals */
+#define AJP_CPING_MAX (AJP_CPING_INTERVAL)
+
+#define AJP_CPING_CONNECT_TEXT ('C') /* Send cping on fresh connection */
+#define AJP_CPING_PREPOST_TEXT ('P') /* Send cping before sending request */
+#define AJP_CPING_INTERVAL_TEXT ('I') /* Send cping on regular intervals */
+#define AJP_CPING_ALL_TEXT ('A') /* Send cping on regular intervals */
#define RECOVER_ABORT_IF_TCGETREQUEST 0x0001 /* DON'T RECOVER IF TOMCAT FAILS AFTER RECEIVING REQUEST */
@@ -456,6 +462,7 @@ int ajp_connection_tcp_get_message(ajp_e
int JK_METHOD ajp_maintain(jk_worker_t *pThis, time_t now, jk_logger_t *l);
+void jk_ajp_get_cping_text(int mode, char *buf);
int jk_ajp_get_cping_mode(const char *m, int def);
int ajp_has_endpoint(jk_worker_t *pThis, jk_logger_t *l);
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org