diff options
Diffstat (limited to 'rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_ajp_common.h')
-rw-r--r-- | rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_ajp_common.h | 467 |
1 files changed, 0 insertions, 467 deletions
diff --git a/rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_ajp_common.h b/rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_ajp_common.h deleted file mode 100644 index 09940fd9..00000000 --- a/rubbos/app/tomcat-connectors-1.2.32-src/native/common/jk_ajp_common.h +++ /dev/null @@ -1,467 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/*************************************************************************** - * Description: common stuff for bi-directional protocol ajp13/ajp14. * - * Author: Gal Shachor <shachor@il.ibm.com> * - * Author: Henri Gomez <hgomez@apache.org> * - * Version: $Revision: 1137200 $ * - ***************************************************************************/ - -#ifndef JK_AJP_COMMON_H -#define JK_AJP_COMMON_H - -#include "jk_service.h" -#include "jk_msg_buff.h" -#include "jk_shm.h" -#include "jk_mt.h" - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#define JK_AJP_STATE_IDLE (0) -#define JK_AJP_STATE_OK (1) -#define JK_AJP_STATE_ERROR (2) -#define JK_AJP_STATE_PROBE (3) -#define JK_AJP_STATE_DEF (JK_AJP_STATE_IDLE) -#define JK_AJP_STATE_TEXT_IDLE ("OK/IDLE") -#define JK_AJP_STATE_TEXT_OK ("OK") -#define JK_AJP_STATE_TEXT_ERROR ("ERR") -#define JK_AJP_STATE_TEXT_PROBE ("ERR/PRB") -#define JK_AJP_STATE_TEXT_MAX (JK_AJP_STATE_PROBE) -#define JK_AJP_STATE_TEXT_DEF (JK_AJP_STATE_TEXT_IDLE) - -/* We accept doing global maintenance if we are */ -/* JK_AJP_MAINTAIN_TOLERANCE seconds early. */ -#define JK_AJP_MAINTAIN_TOLERANCE (2) - -/* - * Conditional request attributes - * - */ -#define SC_A_CONTEXT (unsigned char)1 -#define SC_A_SERVLET_PATH (unsigned char)2 -#define SC_A_REMOTE_USER (unsigned char)3 -#define SC_A_AUTH_TYPE (unsigned char)4 -#define SC_A_QUERY_STRING (unsigned char)5 -#define SC_A_ROUTE (unsigned char)6 -#define SC_A_SSL_CERT (unsigned char)7 -#define SC_A_SSL_CIPHER (unsigned char)8 -#define SC_A_SSL_SESSION (unsigned char)9 -#define SC_A_REQ_ATTRIBUTE (unsigned char)10 -#define SC_A_SSL_KEY_SIZE (unsigned char)11 /* only in if JkOptions +ForwardKeySize */ -#define SC_A_SECRET (unsigned char)12 -#define SC_A_STORED_METHOD (unsigned char)13 -#define SC_A_ARE_DONE (unsigned char)0xFF - -/* - * AJP private request attributes - * - * The following request attribute is recognized by Tomcat - * to contain the forwarded remote port. - */ -#define SC_A_REQ_REMOTE_PORT ("AJP_REMOTE_PORT") - -/* - * JK public request attributes - * - * Activation state of the worker in the load balancer. - * Can be any of the JK_LB_ACTIVATION_TEXT_* strings - * from jk_lb_worker.h. - */ -#define SC_A_JK_LB_ACTIVATION ("JK_LB_ACTIVATION") - -/* - * Request methods, coded as numbers instead of strings. - * The list of methods was taken from Section 5.1.1 of RFC 2616, - * RFC 2518, the ACL IETF draft, and the DeltaV IESG Proposed Standard. - * Method = "OPTIONS" - * | "GET" - * | "HEAD" - * | "POST" - * | "PUT" - * | "DELETE" - * | "TRACE" - * | "PROPFIND" - * | "PROPPATCH" - * | "MKCOL" - * | "COPY" - * | "MOVE" - * | "LOCK" - * | "UNLOCK" - * | "ACL" - * | "REPORT" - * | "VERSION-CONTROL" - * | "CHECKIN" - * | "CHECKOUT" - * | "UNCHECKOUT" - * | "SEARCH" - * | "MKWORKSPACE" - * | "UPDATE" - * | "LABEL" - * | "MERGE" - * | "BASELINE-CONTROL" - * | "MKACTIVITY" - * - */ -#define SC_M_OPTIONS (unsigned char)1 -#define SC_M_GET (unsigned char)2 -#define SC_M_HEAD (unsigned char)3 -#define SC_M_POST (unsigned char)4 -#define SC_M_PUT (unsigned char)5 -#define SC_M_DELETE (unsigned char)6 -#define SC_M_TRACE (unsigned char)7 -#define SC_M_PROPFIND (unsigned char)8 -#define SC_M_PROPPATCH (unsigned char)9 -#define SC_M_MKCOL (unsigned char)10 -#define SC_M_COPY (unsigned char)11 -#define SC_M_MOVE (unsigned char)12 -#define SC_M_LOCK (unsigned char)13 -#define SC_M_UNLOCK (unsigned char)14 -#define SC_M_ACL (unsigned char)15 -#define SC_M_REPORT (unsigned char)16 -#define SC_M_VERSION_CONTROL (unsigned char)17 -#define SC_M_CHECKIN (unsigned char)18 -#define SC_M_CHECKOUT (unsigned char)19 -#define SC_M_UNCHECKOUT (unsigned char)20 -#define SC_M_SEARCH (unsigned char)21 -#define SC_M_MKWORKSPACE (unsigned char)22 -#define SC_M_UPDATE (unsigned char)23 -#define SC_M_LABEL (unsigned char)24 -#define SC_M_MERGE (unsigned char)25 -#define SC_M_BASELINE_CONTROL (unsigned char)26 -#define SC_M_MKACTIVITY (unsigned char)27 -#define SC_M_JK_STORED (unsigned char)0xFF - -/* - * Frequent request headers, these headers are coded as numbers - * instead of strings. - * - * Accept - * Accept-Charset - * Accept-Encoding - * Accept-Language - * Authorization - * Connection - * Content-Type - * Content-Length - * Cookie - * Cookie2 - * Host - * Pragma - * Referer - * User-Agent - * - */ - -#define SC_ACCEPT (unsigned short)0xA001 -#define SC_ACCEPT_CHARSET (unsigned short)0xA002 -#define SC_ACCEPT_ENCODING (unsigned short)0xA003 -#define SC_ACCEPT_LANGUAGE (unsigned short)0xA004 -#define SC_AUTHORIZATION (unsigned short)0xA005 -#define SC_CONNECTION (unsigned short)0xA006 -#define SC_CONTENT_TYPE (unsigned short)0xA007 -#define SC_CONTENT_LENGTH (unsigned short)0xA008 -#define SC_COOKIE (unsigned short)0xA009 -#define SC_COOKIE2 (unsigned short)0xA00A -#define SC_HOST (unsigned short)0xA00B -#define SC_PRAGMA (unsigned short)0xA00C -#define SC_REFERER (unsigned short)0xA00D -#define SC_USER_AGENT (unsigned short)0xA00E - -/* - * Frequent response headers, these headers are coded as numbers - * instead of strings. - * - * Content-Type - * Content-Language - * Content-Length - * Date - * Last-Modified - * Location - * Set-Cookie - * Servlet-Engine - * Status - * WWW-Authenticate - * - */ - -#define SC_RESP_CONTENT_TYPE (unsigned short)0xA001 -#define SC_RESP_CONTENT_LANGUAGE (unsigned short)0xA002 -#define SC_RESP_CONTENT_LENGTH (unsigned short)0xA003 -#define SC_RESP_DATE (unsigned short)0xA004 -#define SC_RESP_LAST_MODIFIED (unsigned short)0xA005 -#define SC_RESP_LOCATION (unsigned short)0xA006 -#define SC_RESP_SET_COOKIE (unsigned short)0xA007 -#define SC_RESP_SET_COOKIE2 (unsigned short)0xA008 -#define SC_RESP_SERVLET_ENGINE (unsigned short)0xA009 -#define SC_RESP_STATUS (unsigned short)0xA00A -#define SC_RESP_WWW_AUTHENTICATE (unsigned short)0xA00B -#define SC_RES_HEADERS_NUM 11 - -/* - * AJP13/AJP14 use same message structure - */ - -#define AJP_DEF_RETRY_ATTEMPTS (1) - -#define AJP_HEADER_LEN (4) -#define AJP_HEADER_SZ_LEN (2) -#define CHUNK_BUFFER_PAD (12) -#define AJP_DEF_CACHE_TIMEOUT (0) -#define AJP_DEF_CONNECT_TIMEOUT (0) /* NO CONNECTION TIMEOUT => NO CPING/CPONG */ -#define AJP_DEF_REPLY_TIMEOUT (0) /* NO REPLY TIMEOUT */ -#define AJP_DEF_PREPOST_TIMEOUT (0) /* NO PREPOST TIMEOUT => NO CPING/CPONG */ -#define AJP_DEF_RECOVERY_OPTS (0) /* NO RECOVERY / NO */ -#define AJP_DEF_SOCKET_TIMEOUT (0) /* No timeout */ -#define AJP_DEF_PING_TIMEOUT (10000) /* Default CPING/CPONG timeout (10 seconds) */ - -#define AJP_CPING_NONE (0) /* Do not send cping packets */ -#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 RECOVER_ABORT_IF_TCGETREQUEST 0x0001 /* DON'T RECOVER IF TOMCAT FAILS AFTER RECEIVING REQUEST */ -#define RECOVER_ABORT_IF_TCSENDHEADER 0x0002 /* DON'T RECOVER IF TOMCAT FAILS AFTER SENDING HEADERS */ -#define RECOVER_ABORT_IF_CLIENTERROR 0x0004 /* CLOSE THE SOCKET IN CASE OF CLIENT ERROR */ -#define RECOVER_ALWAYS_HTTP_HEAD 0x0008 /* RECOVER HTTP HEAD REQUESTS, EVEN IF ABORT OPTIONS ARE SET */ -#define RECOVER_ALWAYS_HTTP_GET 0x0010 /* RECOVER HTTP GET REQUESTS, EVEN IF ABORT OPTIONS ARE SET */ - -#define JK_MAX_HTTP_STATUS_FAILS 32 /* Should be enough for most 400 and 500 statuses */ - -struct jk_res_data -{ - int status; -#ifdef AS400 - char *msg; -#else - const char *msg; -#endif - unsigned num_headers; - char **header_names; - char **header_values; -}; -typedef struct jk_res_data jk_res_data_t; - -#include "jk_ajp14.h" - -struct ajp_operation; -typedef struct ajp_operation ajp_operation_t; - -struct ajp_endpoint; -typedef struct ajp_endpoint ajp_endpoint_t; - -struct ajp_worker; -typedef struct ajp_worker ajp_worker_t; - -struct ajp_worker -{ - jk_worker_t worker; - /* Shared memory worker data */ - jk_shm_ajp_worker_t *s; - - char name[JK_SHM_STR_SIZ+1]; - /* Sequence counter starting at 0 and increasing - * every time we change the config - */ - volatile unsigned int sequence; - - jk_pool_t p; - jk_pool_atom_t buf[TINY_POOL_SIZE]; - - JK_CRIT_SEC cs; - - struct sockaddr_in worker_inet_addr; /* Contains host and port */ - unsigned connect_retry_attempts; - char host[JK_SHM_STR_SIZ+1]; - int port; - int addr_sequence; /* Whether the address is resolved */ - int maintain_time; - /* - * Open connections cache... - * - * 1. Critical section object to protect the cache. - * 2. Cache size. - * 3. An array of "open" endpoints. - */ - unsigned int ep_cache_sz; - unsigned int ep_mincache_sz; - unsigned int ep_maxcache_sz; - int cache_acquire_timeout; - ajp_endpoint_t **ep_cache; - - int proto; /* PROTOCOL USED AJP13/AJP14 */ - - jk_login_service_t *login; - - /* Weak secret similar with ajp12, used in ajp13 */ - const char *secret; - - /* - * Post physical connect handler. - * AJP14 will set here its login handler - */ - int (*logon) (ajp_endpoint_t * ae, jk_logger_t *l); - - /* - * Handle Socket Timeouts - */ - int socket_timeout; - int socket_connect_timeout; - int keepalive; - int socket_buf; - /* - * Handle Cache Timeouts - */ - int cache_timeout; - - /* - * Handle Connection/Reply Timeouts - */ - int connect_timeout; /* connect cping/cpong delay in ms (0 means disabled) */ - int reply_timeout; /* reply timeout delay in ms (0 means disabled) */ - int prepost_timeout; /* before sending a request cping/cpong timeout delay in ms (0 means disabled) */ - int conn_ping_interval; /* interval for sending keepalive cping packets on - * unused connection */ - int ping_timeout; /* generic cping/cpong timeout. Used for keepalive packets or - * as default for boolean valued connect and prepost timeouts. - */ - unsigned int ping_mode; /* Ping mode flags (which types of cpings should be used) */ - /* - * Recovery options - */ - unsigned int recovery_opts; - - /* - * Public property to enable the number of retry attempts - * on this worker. - */ - int retries; - - unsigned int max_packet_size; /* Maximum AJP Packet size */ - - int retry_interval; /* Number of milliseconds to sleep before doing a retry */ - - /* - * HTTP status that will cause failover (0 means disabled) - */ - unsigned int http_status_fail_num; - int http_status_fail[JK_MAX_HTTP_STATUS_FAILS]; -}; - - -/* - * endpoint, the remote connector which does the work - */ -struct ajp_endpoint -{ - ajp_worker_t *worker; - - jk_pool_t pool; - jk_pool_atom_t buf[BIG_POOL_SIZE]; - - int proto; /* PROTOCOL USED AJP13/AJP14 */ - - jk_sock_t sd; - int reuse; - - /* Used with RECOVER_ABORT_IF_CLIENTERROR to hard abort - write of AJP response on client write errors */ - int hard_close; - - jk_endpoint_t endpoint; - - jk_uint64_t left_bytes_to_send; - - /* time of the last request - handled by this endpoint */ - time_t last_access; - int last_errno; - /* Last operation performed via this endpoint */ - int last_op; - int addr_sequence; /* Whether the address is resolved */ -}; - -/* - * little struct to avoid multiples ptr passing - * this struct is ready to hold upload file fd - * to add upload persistant storage - */ -struct ajp_operation -{ - jk_msg_buf_t *request; /* original request storage */ - jk_msg_buf_t *reply; /* reply storage (chuncked by ajp13 */ - jk_msg_buf_t *post; /* small post data storage area */ - int uploadfd; /* future persistant storage id */ - int recoverable; /* if exchange could be conducted on another TC */ -}; - -/* - * Functions - */ - - -const char *jk_ajp_get_state(ajp_worker_t *aw, jk_logger_t *l); - -int jk_ajp_get_state_code(const char *v); - -int ajp_validate(jk_worker_t *pThis, - jk_map_t *props, - jk_worker_env_t *we, jk_logger_t *l, int proto); - -int ajp_init(jk_worker_t *pThis, - jk_map_t *props, - jk_worker_env_t *we, jk_logger_t *l, int proto); - -int JK_METHOD ajp_worker_factory(jk_worker_t **w, - const char *name, jk_logger_t *l); - -int ajp_destroy(jk_worker_t **pThis, jk_logger_t *l, int proto); - -int JK_METHOD ajp_done(jk_endpoint_t **e, jk_logger_t *l); - -int ajp_get_endpoint(jk_worker_t *pThis, - jk_endpoint_t **pend, jk_logger_t *l, int proto); - -int ajp_connect_to_endpoint(ajp_endpoint_t * ae, jk_logger_t *l); - -void ajp_close_endpoint(ajp_endpoint_t * ae, jk_logger_t *l); - -void jk_ajp_pull(ajp_worker_t * aw, int locked, jk_logger_t *l); - -void jk_ajp_push(ajp_worker_t * aw, int locked, jk_logger_t *l); - -int ajp_connection_tcp_send_message(ajp_endpoint_t * ae, - jk_msg_buf_t *msg, jk_logger_t *l); - -int ajp_connection_tcp_get_message(ajp_endpoint_t * ae, - jk_msg_buf_t *msg, jk_logger_t *l); - -int JK_METHOD ajp_maintain(jk_worker_t *pThis, time_t now, jk_logger_t *l); - -int jk_ajp_get_cping_mode(const char *m, int def); - -int ajp_has_endpoint(jk_worker_t *pThis, jk_logger_t *l); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#endif /* JK_AJP_COMMON_H */ - |