costin 02/04/18 20:31:05 Modified: jk/native2/server/isapi jk_isapi_plugin.c Log: Few more changes. I would brake the FilterProc in fewer smaller methods - and maybe move some code into jk_uriMap.c ( if it's general-purpose ) or remove it ( if it's already done in jk_uriMap.c. In the end, FilterProc should only call the uriMap - everything else should be shared. Revision Changes Path 1.4 +75 -78 jakarta-tomcat-connectors/jk/native2/server/isapi/jk_isapi_plugin.c Index: jk_isapi_plugin.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/server/isapi/jk_isapi_plugin.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- jk_isapi_plugin.c 19 Apr 2002 00:23:45 -0000 1.3 +++ jk_isapi_plugin.c 19 Apr 2002 03:31:05 -0000 1.4 @@ -60,7 +60,7 @@ * Author: Gal Shachor <[EMAIL PROTECTED]> * * Author: Larry Isaacs <[EMAIL PROTECTED]> * * Author: Ignacio J. Ortega <[EMAIL PROTECTED]> * - * Version: $Revision: 1.3 $ * + * Version: $Revision: 1.4 $ * ***************************************************************************/ // This define is needed to include wincrypt,h, needed to get client certificates @@ -91,7 +91,6 @@ static int iis5 = -1; static jk_workerEnv_t *workerEnv; -static jk_logger_t *logger = NULL; static char extension_uri[INTERNET_MAX_URL_LENGTH] = "/jakarta/isapi_redirector2.dll"; @@ -185,6 +184,8 @@ DWORD dwNotificationType, LPVOID pvNotification) { + jk_env_t *env = workerEnv->globalEnv->getEnv( workerEnv->globalEnv ); + /* Initialise jk */ if (is_inited && !is_mapread) { char serverName[MAX_SERVERNAME]; @@ -207,9 +208,9 @@ if (pfc->GetServerVariable(pfc,SERVER_SOFTWARE, serverSoftware, &dwLen)){ iis5=(atof(serverSoftware + 14) >= 5.0); if (iis5) { - jk_log(logger, JK_LOG_INFO,"Detected IIS >= 5.0\n"); + env->l->jkLog(env, env->l, JK_LOG_INFO,"Detected IIS >= 5.0\n"); } else { - jk_log(logger, JK_LOG_INFO,"Detected IIS < 5.0\n"); + env->l->jkLog(env, env->l, JK_LOG_INFO,"Detected IIS < 5.0\n"); } } } @@ -246,7 +247,7 @@ } - jk_log(logger, JK_LOG_DEBUG, + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "HttpFilterProc started\n"); @@ -259,7 +260,7 @@ SetHeader(pfc, TOMCAT_TRANSLATE_HEADER_NAME, NULL); if (!GetHeader(pfc, "url", (LPVOID)uri, (LPDWORD)&sz)) { - jk_log(logger, JK_LOG_ERROR, + env->l->jkLog(env, env->l, JK_LOG_ERROR, "HttpFilterProc error while getting the url\n"); return SF_STATUS_REQ_ERROR; } @@ -274,7 +275,7 @@ rc = unescape_url(uri); if (rc == BAD_REQUEST) { - jk_log(logger, JK_LOG_ERROR, + env->l->jkLog(env, env->l, JK_LOG_ERROR, "HttpFilterProc [%s] contains one or more invalid escape sequences.\n", uri); write_error_response(pfc,"400 Bad Request", @@ -282,7 +283,7 @@ return SF_STATUS_REQ_FINISHED; } else if(rc == BAD_PATH) { - jk_log(logger, JK_LOG_EMERG, + env->l->jkLog(env, env->l, JK_LOG_EMERG, "HttpFilterProc [%s] contains forbidden escape sequences.\n", uri); write_error_response(pfc,"403 Forbidden", @@ -294,13 +295,13 @@ if(GetHeader(pfc, "Host:", (LPVOID)Host, (LPDWORD)&szHost)) { strcat(snuri,Host); strcat(snuri,uri); - jk_log(logger, JK_LOG_DEBUG, + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "In HttpFilterProc Virtual Host redirection of %s\n", snuri); // worker = map_uri_to_worker(uw_map, snuri, logger); } if (!worker) { - jk_log(logger, JK_LOG_DEBUG, + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "In HttpFilterProc test Default redirection of %s\n", uri); // worker = map_uri_to_worker(uw_map, uri, logger); @@ -310,7 +311,7 @@ char *forwardURI; /* This is a servlet, should redirect ... */ - jk_log(logger, JK_LOG_DEBUG, + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "HttpFilterProc [%s] is a servlet url - should redirect to %s\n", uri, worker); @@ -321,19 +322,19 @@ /* restore terminator for uri portion */ if (query) *(query - 1) = '\0'; - jk_log(logger, JK_LOG_DEBUG, + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "HttpFilterProc fowarding original URI [%s]\n",uri); forwardURI = uri; } else if (uri_select_option == URI_SELECT_OPT_ESCAPED) { if (!escape_url(uri,snuri,INTERNET_MAX_URL_LENGTH)) { - jk_log(logger, JK_LOG_ERROR, + env->l->jkLog(env, env->l, JK_LOG_ERROR, "HttpFilterProc [%s] re-encoding request exceeds maximum buffer size.\n", uri); write_error_response(pfc,"400 Bad Request", "<HTML><BODY><H1>Request contains too many characters that need to be encoded.</H1></BODY></HTML>"); return SF_STATUS_REQ_FINISHED; } - jk_log(logger, JK_LOG_DEBUG, + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "HttpFilterProc fowarding escaped URI [%s]\n",snuri); forwardURI = snuri; } else { @@ -345,7 +346,7 @@ ? !AddHeader(pfc, QUERY_HEADER_NAME, query) : FALSE ) || !AddHeader(pfc, WORKER_HEADER_NAME, worker) || !SetHeader(pfc, "url", extension_uri)) { - jk_log(logger, JK_LOG_ERROR, + env->l->jkLog(env, env->l, JK_LOG_ERROR, "HttpFilterProc error while adding request headers\n"); return SF_STATUS_REQ_ERROR; } @@ -357,14 +358,14 @@ if(GetHeader(pfc, "Translate:", (LPVOID)Translate, (LPDWORD)&szTranslate) && Translate != NULL && szTranslate > 0) { if (!AddHeader(pfc, TOMCAT_TRANSLATE_HEADER_NAME, Translate)) { - jk_log(logger, JK_LOG_ERROR, + env->l->jkLog(env, env->l, JK_LOG_ERROR, "HttpFilterProc error while adding Tomcat-Translate headers\n"); return SF_STATUS_REQ_ERROR; } SetHeader(pfc, "Translate:", NULL); } } else { - jk_log(logger, JK_LOG_DEBUG, + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "HttpFilterProc [%s] is not a servlet url\n", uri); } @@ -373,12 +374,12 @@ * Check if somebody is feading us with his own TOMCAT data headers. * We reject such postings ! */ - jk_log(logger, JK_LOG_DEBUG, + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "HttpFilterProc check if [%s] is points to the web-inf directory\n", uri); if(uri_is_web_inf(uri)) { - jk_log(logger, JK_LOG_EMERG, + env->l->jkLog(env, env->l, JK_LOG_EMERG, "HttpFilterProc [%s] points to the web-inf or meta-inf directory.\nSomebody try to hack into the site!!!\n", uri); @@ -410,10 +411,10 @@ DWORD WINAPI HttpExtensionProc(LPEXTENSION_CONTROL_BLOCK lpEcb) { DWORD rc = HSE_STATUS_ERROR; - struct jk_env *env; lpEcb->dwHttpStatusCode = HTTP_STATUS_SERVER_ERROR; + jk_env_t *env = workerEnv->globalEnv->getEnv( workerEnv->globalEnv ); - jk_log(logger, JK_LOG_DEBUG, + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "HttpExtensionProc started\n"); /* Initialise jk */ @@ -430,54 +431,50 @@ } if (is_inited) { - isapi_private_data_t private_data; - jk_ws_service_t s; - jk_pool_atom_t buf[SMALL_POOL_SIZE]; - char *worker_name; - -// jk_init_ws_service(&s); -// jk_open_pool(&private_data.p, buf, sizeof(buf)); - - private_data.request_started = JK_FALSE; - private_data.bytes_read_so_far = 0; - private_data.lpEcb = lpEcb; + jk_ws_service_t sOnStack; + jk_ws_service_t *s=&sOnStack; - s.ws_private = &private_data; - s.pool = &private_data.p; -/* - if (init_ws_service(env,&private_data, &s, &worker_name)) { - jk_worker_t *worker = wc_get_worker_for_name(worker_name, logger); + jk_worker_t *worker=workerEnv->defaultWorker; + jk_pool_t *rPool=NULL; + int rc1; + + /* Get a pool for the request XXX move it in workerEnv to + be shared with other server adapters */ + rPool= worker->rPoolCache->get( env, worker->rPoolCache ); + if( rPool == NULL ) { + rPool=worker->pool->create( env, worker->pool, HUGE_POOL_SIZE ); + env->l->jkLog(env, env->l, JK_LOG_INFO, + "mod_jk.handler(): new rpool\n"); + } - jk_log(logger, JK_LOG_DEBUG, + jk2_service_iis_init( env, s ); + s->pool = rPool; + s->is_recoverable_error = JK_FALSE; + s->response_started = JK_FALSE; + s->content_read = 0; + s->ws_private = lpEcb; + + /* Initialize the ws_service structure */ + s->init( env, s, worker, r ); + + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "HttpExtensionProc %s a worker for name %s\n", worker ? "got" : "could not get", worker_name); - - if (worker) { - jk_endpoint_t *e = NULL; - if (e=(jk_endpoint_t*)worker->endpointCache->get(env,worker->endpointCache)) { - int recover = JK_FALSE; - if (e->service(e, &s, logger, &recover)) { - rc = HSE_STATUS_SUCCESS_AND_KEEP_CONN; - lpEcb->dwHttpStatusCode = HTTP_STATUS_OK; - jk_log(logger, JK_LOG_DEBUG, - "HttpExtensionProc service() returned OK\n"); - } else { - jk_log(logger, JK_LOG_ERROR, - "HttpExtensionProc error, service() failed\n"); - } - e->done(&e, logger); - } - } else { - jk_log(logger, JK_LOG_ERROR, - "HttpExtensionProc error, could not get a worker for name %s\n", - worker_name); - } - } - jk_close_pool(&private_data.p); -*/ + + rc = worker->service(env, worker, s); + + s->afterRequest(env, s); + + rPool->reset(env, rPool); + + rc1=worker->rPoolCache->put( env, worker->rPoolCache, rPool ); + + lpEcb->dwHttpStatusCode = HTTP_STATUS_OK; + env->l->jkLog(env, env->l, JK_LOG_DEBUG, + "HttpExtensionProc service() returned OK\n"); } else { - jk_log(logger, JK_LOG_ERROR, + env->l->jkLog(env, env->l, JK_LOG_ERROR, "HttpExtensionProc error, not initialized\n"); } return rc; @@ -546,23 +543,23 @@ { int rc = JK_FALSE; jk_map_t *map; - - if (!jk_open_file_logger(&logger, log_file, log_level)) { - logger = NULL; - } + jk_env_t *env; + + /* XXX Copy jk init code from apache2 */ + /* Logging the initialization type: registry or properties file in virtual dir */ if (using_ini_file) { - jk_log(logger, JK_LOG_DEBUG, "Using ini file %s.\n", ini_file_name); + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using ini file %s.\n", ini_file_name); } else { - jk_log(logger, JK_LOG_DEBUG, "Using registry.\n"); + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using registry.\n"); } - jk_log(logger, JK_LOG_DEBUG, "Using log file %s.\n", log_file); - jk_log(logger, JK_LOG_DEBUG, "Using log level %d.\n", log_level); - jk_log(logger, JK_LOG_DEBUG, "Using extension uri %s.\n", extension_uri); - jk_log(logger, JK_LOG_DEBUG, "Using worker file %s.\n", worker_file); - jk_log(logger, JK_LOG_DEBUG, "Using worker mount file %s.\n", worker_mount_file); - jk_log(logger, JK_LOG_DEBUG, "Using uri select %d.\n", uri_select_option); + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using log file %s.\n", log_file); + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using log level %d.\n", log_level); + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using extension uri %s.\n", extension_uri); + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using worker file %s.\n", worker_file); + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using worker mount file %s.\n", worker_mount_file); + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Using uri select %d.\n", uri_select_option); /* if (map_alloc(&map)) { if (map_read_properties(map, worker_mount_file)) { @@ -577,7 +574,7 @@ if ('/' == *name) { map_put(map2, name, map_value_at(map, i), &old); } else { - jk_log(logger, JK_LOG_DEBUG, + env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Ignoring worker mount file entry %s=%s.\n", name, map_value_at(map, i)); } @@ -590,7 +587,7 @@ map_free(&map2); } } else { - jk_log(logger, JK_LOG_EMERG, + env->l->jkLog(env, env->l, JK_LOG_EMERG, "Unable to read worker mount file %s.\n", worker_mount_file); } @@ -608,7 +605,7 @@ rc = JK_TRUE; } } else { - jk_log(logger, JK_LOG_EMERG, + env->l->jkLog(env, env->l, JK_LOG_EMERG, "Unable to read worker file %s.\n", worker_file); }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>