Author: jfclere Date: Sat Feb 24 11:02:40 2007 New Revision: 511326 URL: http://svn.apache.org/viewvc?view=rev&rev=511326 Log: Check the worker parameters.
Modified: tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c tomcat/connectors/trunk/jk/native/common/jk_map.c tomcat/connectors/trunk/jk/native/common/jk_util.c Modified: tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c?view=diff&rev=511326&r1=511325&r2=511326 ============================================================================== --- tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c (original) +++ tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c Sat Feb 24 11:02:40 2007 @@ -1744,9 +1744,9 @@ jk_server_conf_t *conf = (jk_server_conf_t *) ap_get_module_config(s->module_config, &jk_module); - + if (jk_map_read_property(conf->worker_properties, line, 1, conf->log) == JK_FALSE) - return ap_pstrcat(cmd->temp_pool, "Invalid JkWorkerProperty ", line); + return ap_pstrcat(cmd->temp_pool, "Invalid JkWorkerProperty ", line, NULL); return NULL; } @@ -2543,8 +2543,9 @@ ap_log_error(APLOG_MARK, APLOG_EMERG, s, "No worker file and no worker options in httpd.conf " "use JkWorkerFile to set workers"); - return; } + ap_log_error(APLOG_MARK, APLOG_EMERG | APLOG_NOERRNO, 0, NULL, "Error in reading worker properties"); + return !OK; } #if MODULE_MAGIC_NUMBER >= 19980527 Modified: tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c?view=diff&rev=511326&r1=511325&r2=511326 ============================================================================== --- tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c (original) +++ tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c Sat Feb 24 11:02:40 2007 @@ -250,7 +250,7 @@ static int JK_METHOD ws_read(jk_ws_service_t *s, void *b, unsigned len, unsigned *actually_read); -static void init_jk(apr_pool_t * pconf, jk_server_conf_t * conf, +static int init_jk(apr_pool_t * pconf, jk_server_conf_t * conf, server_rec * s); static int JK_METHOD ws_write(jk_ws_service_t *s, const void *b, unsigned l); @@ -1788,7 +1788,7 @@ } if (jk_map_read_property(conf->worker_properties, line, 1, conf->log) == JK_FALSE) - return apr_pstrcat(cmd->temp_pool, "Invalid JkWorkerProperty ", line); + return apr_pstrcat(cmd->temp_pool, "Invalid JkWorkerProperty ", line, NULL); return NULL; } @@ -2608,7 +2608,7 @@ SetHandler and normal apache directives ( but minimal jk-specific stuff ) */ -static void init_jk(apr_pool_t * pconf, jk_server_conf_t * conf, +static int init_jk(apr_pool_t * pconf, jk_server_conf_t * conf, server_rec * s) { int rc; @@ -2664,12 +2664,14 @@ 0, NULL, "No worker file and no worker options in httpd.conf" "use JkWorkerFile to set workers"); - return; } + ap_log_error(APLOG_MARK, APLOG_EMERG | APLOG_NOERRNO, 0, NULL, "Error in reading worker properties"); + return !OK; } if (jk_map_resolve_references(init_map, "worker.", 1, 1, conf->log) == JK_FALSE) { - jk_error_exit(APLOG_MARK, APLOG_EMERG, s, pconf, "Error in resolving configuration references"); + ap_log_error(APLOG_MARK, APLOG_EMERG | APLOG_NOERRNO, 0, NULL, "Error in resolving configuration references"); + return !OK; } /* we add the URI->WORKER MAP since workers using AJP14 @@ -2684,6 +2686,7 @@ if (wc_open(init_map, &worker_env, conf->log)) { ap_add_version_component(pconf, JK_EXPOSED_VERSION); } + return OK; } static int jk_post_config(apr_pool_t * pconf, @@ -2701,7 +2704,7 @@ pconf)) != APR_SUCCESS) { ap_log_error(APLOG_MARK, APLOG_CRIT, rv, s, "mod_jk: could not create jk_log_lock"); - return HTTP_INTERNAL_SERVER_ERROR; + return !OK; } #if JK_NEED_SET_MUTEX_PERMS @@ -2710,7 +2713,7 @@ ap_log_error(APLOG_MARK, APLOG_CRIT, rv, s, "mod_jk: Could not set permissions on " "jk_log_lock; check User and Group directives"); - return HTTP_INTERNAL_SERVER_ERROR; + return !OK; } #endif @@ -2728,7 +2731,7 @@ jk_server_conf_t *sconf = (jk_server_conf_t *)ap_get_module_config(srv->module_config, &jk_module); if (open_jklog(srv, pconf)) - return HTTP_INTERNAL_SERVER_ERROR; + return !OK; if (sconf) { if (!uri_worker_map_alloc(&(sconf->uw_map), sconf->uri_to_context, sconf->log)) @@ -2776,7 +2779,8 @@ } } } - init_jk(pconf, conf, s); + if (init_jk(pconf, conf, s)) + return !OK; } } Modified: tomcat/connectors/trunk/jk/native/common/jk_map.c URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_map.c?view=diff&rev=511326&r1=511325&r2=511326 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_map.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_map.c Sat Feb 24 11:02:40 2007 @@ -365,6 +365,14 @@ trim(v); if (strlen(v) && strlen(prp)) { const char *oldv = jk_map_get_string(m, prp, NULL); + /* check the worker properties */ + if (!jk_is_valid_property(prp)) { + jk_log(l, JK_LOG_ERROR, + "The attribute '%s' is not supported - please check" + " the documentation for the supported attributes.", + prp); + return JK_FALSE; + } if (jk_is_deprecated_property(prp)) { jk_log(l, JK_LOG_WARNING, "The attribute '%s' is deprecated - please check" 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?view=diff&rev=511326&r1=511325&r2=511326 ============================================================================== --- tomcat/connectors/trunk/jk/native/common/jk_util.c (original) +++ tomcat/connectors/trunk/jk/native/common/jk_util.c Sat Feb 24 11:02:40 2007 @@ -96,7 +96,9 @@ #define DEFAULT_WORKER JK_AJP13_WORKER_NAME #define WORKER_LIST_PROPERTY_NAME ("worker.list") +#define LIST_PROPERTY_NAME ("list") #define WORKER_MAINTAIN_PROPERTY_NAME ("worker.maintain") +#define MAINTAIN_PROPERTY_NAME ("maintain") #define DEFAULT_MAINTAIN_TIME (60) #define DEFAULT_LB_FACTOR (1) #define DEFAULT_DISTANCE (0) @@ -209,6 +211,70 @@ NULL }; +static const char *supported_properties[] = { + SYSPROPS_OF_WORKER, + STDERR_OF_WORKER, + STDOUT_OF_WORKER, + SECRET_OF_WORKER, + MX_OF_WORKER, + MS_OF_WORKER, + CP_OF_WORKER, + BRIDGE_OF_WORKER, + JVM_OF_WORKER, + LIBPATH_OF_WORKER, + CMD_LINE_OF_WORKER, + NATIVE_LIB_OF_WORKER, + HOST_OF_WORKER, + PORT_OF_WORKER, + TYPE_OF_WORKER, + CACHE_OF_WORKER_DEPRECATED, + CACHE_OF_WORKER, + CACHE_OF_WORKER_MIN, + CACHE_TIMEOUT_DEPRECATED, + CACHE_TIMEOUT_OF_WORKER, + RECOVERY_OPTS_OF_WORKER, + CONNECT_TIMEOUT_OF_WORKER, + PREPOST_TIMEOUT_OF_WORKER, + REPLY_TIMEOUT_OF_WORKER, + SOCKET_TIMEOUT_OF_WORKER, + SOCKET_BUFFER_OF_WORKER, + SOCKET_KEEPALIVE_OF_WORKER, + RECYCLE_TIMEOUT_DEPRECATED, + LOAD_FACTOR_OF_WORKER, + DISTANCE_OF_WORKER, + BALANCED_WORKERS_DEPRECATED, + BALANCE_WORKERS, + STICKY_SESSION, + STICKY_SESSION_FORCE, + JVM_ROUTE_OF_WORKER_DEPRECATED, + ROUTE_OF_WORKER, + DOMAIN_OF_WORKER, + REDIRECT_OF_WORKER, + MOUNT_OF_WORKER, + METHOD_OF_WORKER, + LOCK_OF_WORKER, + IS_WORKER_DISABLED_DEPRECATED, + IS_WORKER_STOPPED_DEPRECATED, + ACTIVATION_OF_WORKER, + WORKER_RECOVER_TIME, + WORKER_MAX_PACKET_SIZE, + STYLE_SHEET_OF_WORKER, + NAMESPACE_OF_WORKER, + XML_NAMESPACE_OF_WORKER, + XML_DOCTYPE_OF_WORKER, + PROP_PREFIX_OF_WORKER, + READ_ONLY_OF_WORKER, + USER_OF_WORKER, + USER_CASE_OF_WORKER, + GOOD_RATING_OF_WORKER, + BAD_RATING_OF_WORKER, + SECRET_KEY_OF_WORKER, + RETRIES_OF_WORKER, + STATUS_FAIL_OF_WORKER, + LIST_PROPERTY_NAME, + MAINTAIN_PROPERTY_NAME +}; + /* All entries need to have fixed length 8 chars! */ static const char *jk_level_verbs[] = { "[" JK_LOG_TRACE_VERB "] ", @@ -1447,6 +1513,24 @@ int jk_is_deprecated_property(const char *prp_name) { const char **props = &deprecated_properties[0]; + while (*props) { + if (jk_is_some_property(prp_name, *props, ".")) + return JK_TRUE; + props++; + } + return JK_FALSE; +} +/* + * Check that property is a valid one (to prevent user typos). + * Only property starting with worker. + */ +int jk_is_valid_property(const char *prp_name) +{ + const char **props; + if (memcmp(prp_name, "worker.", 7)) + return JK_TRUE; + + props = &supported_properties[0]; while (*props) { if (jk_is_some_property(prp_name, *props, ".")) return JK_TRUE; --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]