costin 02/03/01 22:13:09 Modified: jk/native2/common jk_workerEnv.c Log: That's a big change - most of the configuration is here. It'll move in its own module, for now this is the right place since it controls the whole thing. Revision Changes Path 1.18 +297 -223 jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c Index: jk_workerEnv.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_workerEnv.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- jk_workerEnv.c 28 Feb 2002 23:28:33 -0000 1.17 +++ jk_workerEnv.c 2 Mar 2002 06:13:09 -0000 1.18 @@ -59,7 +59,7 @@ * Description: Workers controller * * Author: Gal Shachor <[EMAIL PROTECTED]> * * Author: Henri Gomez <[EMAIL PROTECTED]> * - * Version: $Revision: 1.17 $ * + * Version: $Revision: 1.18 $ * ***************************************************************************/ #include "jk_workerEnv.h" @@ -73,22 +73,36 @@ void **result, const char *type, const char *name); -static void jk2_workerEnv_close(jk_env_t *env, jk_workerEnv_t *_this); -static void jk2_workerEnv_initHandlers(jk_env_t *env, jk_workerEnv_t *_this); -static int jk2_workerEnv_init1(jk_env_t *env, jk_workerEnv_t *_this); +static void jk2_workerEnv_close(jk_env_t *env, jk_workerEnv_t *wEnv); +static void jk2_workerEnv_initHandlers(jk_env_t *env, jk_workerEnv_t *wEnv); +static int jk2_workerEnv_init1(jk_env_t *env, jk_workerEnv_t *wEnv); /* ==================== Setup ==================== */ static int jk2_workerEnv_setWorkerFile( struct jk_env *env, - struct jk_workerEnv *workerEnv, + struct jk_workerEnv *wEnv, char *workerFile) { struct stat statbuf; int err; - + jk_map_t *props; + int i; + /* We should make it relative to JK_HOME or absolute path. ap_server_root_relative(cmd->pool,opt); */ + /* Avoid recursivity */ + for( i=0; i<wEnv->initData->size( env, wEnv->initData); i++ ) { + char *name=wEnv->initData->nameAt(env, wEnv->initData, i); + char *val=wEnv->initData->valueAt(env, wEnv->initData, i); + if( strcmp( name, "workerFile" )==0 && + strcmp( val, workerFile ) == 0 ) { + env->l->jkLog(env, env->l, JK_LOG_ERROR, + "Recursive init - already read %s", workerFile ); + return JK_FALSE; + } + } + if (stat(workerFile, &statbuf) == -1) { env->l->jkLog(env, env->l, JK_LOG_ERROR, "Can't find the workers file %s", workerFile ); @@ -99,27 +113,36 @@ */ env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Reading properties %s %d\n", workerFile, - workerEnv->initData->size(env, workerEnv->initData) ); + wEnv->initData->size(env, wEnv->initData) ); + + jk2_map_default_create(env, &props, wEnv->pool); - err=jk2_map_readFileProperties(env, workerEnv->initData, workerFile ); + err=jk2_map_readFileProperties(env, props, workerFile ); if( err==JK_TRUE ) { env->l->jkLog(env, env->l, JK_LOG_INFO, "mod_jk.initJk() Reading worker properties %s %d\n", - workerFile, - workerEnv->initData->size( env, workerEnv->initData ) ); + workerFile, props->size( env, props ) ); } else { env->l->jkLog(env, env->l, JK_LOG_ERROR, - "mod_jk.initJk() Error reading worker properties %s %d\n", - workerFile, - workerEnv->initData->size( env, workerEnv->initData ) ); + "mod_jk.initJk() Error reading worker properties %s\n", + workerFile ); + return JK_FALSE; } + + for( i=0; i<props->size( env, props); i++ ) { + char *name=props->nameAt(env, props, i); + char *val=props->valueAt(env, props, i); + + wEnv->setProperty( env, wEnv, name, val ); + } + return JK_TRUE; } static int jk2_workerEnv_setLogLevel( struct jk_env *env, - struct jk_workerEnv *workerEnv, + struct jk_workerEnv *wEnv, char *level) { if(0 == strcasecmp(level, JK_LOG_INFO_VERB)) { @@ -128,171 +151,204 @@ if(0 == strcasecmp(level, JK_LOG_DEBUG_VERB)) { env->l->level=JK_LOG_DEBUG_LEVEL; } + return JK_TRUE; } -static int jk2_workerEnv_setProperty( struct jk_env *env, - struct jk_workerEnv *_this, - const char *name, char *value) -{ - jk_map_t *initData=_this->initData; - - value = jk2_map_replaceProperties(env, initData, initData->pool, value); - - /** XXX Do we need this ? How about removing/runtime changes/single value ? - */ - initData->add( env, initData, name, value ); - - if( strcmp( name, "workerFile" ) == 0 ) { - return jk2_workerEnv_setWorkerFile(env, _this, value); - } else if( strcmp( name, "logLevel") == 0 ) { - return jk2_workerEnv_setLogLevel( env, _this, value ); +/** XXX make them ssl.property ? + */ +static int jk2_workerEnv_setSSLProperty( struct jk_env *env, + struct jk_workerEnv *wEnv, + char *name, char *opt) +{ + if( strcmp( name, "sslEnable" )==0 ) { + wEnv->ssl_enable = JK_TRUE; + } else if( strcmp( name, "httpsIndicator" )==0 ) { + wEnv->https_indicator = opt; + } else if( strcmp( name, "certsIndicator" )==0 ) { + wEnv->certs_indicator = opt; + } else if( strcmp( name, "cipherIndicator" )==0 ) { + wEnv->cipher_indicator = opt; + } else if( strcmp( name, "sessionIndicator" )==0 ) { + wEnv->session_indicator = opt; + } else if( strcmp( name, "keySizeIndicator" )==0 ) { + wEnv->key_size_indicator = opt; + } else if( strcmp( name, "ForwardKeySize" ) == 0 ) { + /* XXX if( opt == TRUE ) */ + wEnv->options |= JK_OPT_FWDKEYSIZE; + } else { + return JK_FALSE; } + /* One of the options was recognized */ return JK_TRUE; } - - -static char *jk2_workerEnv_getProperty( struct jk_env *env, - struct jk_workerEnv *_this, - const char *name) -{ - - return NULL; -} - -static int jk2_workerEnv_init(jk_env_t *env, jk_workerEnv_t *workerEnv) +/** XXX make them forward.property ? + */ +static int jk2_workerEnv_setForwardProperty( struct jk_env *env, + struct jk_workerEnv *wEnv, + char *name, char *opt) { - int err; - char *opt; - int options; - - env->l->jkLog(env, env->l, JK_LOG_INFO, "mod_jk.init_jk()\n" ); - /** This will eventuall read logFile. - XXX Config per 'component', log.level, log.file, etc - */ - env->l->open( env, env->l, workerEnv->initData ); - - opt=jk2_map_getString( env, workerEnv->initData, "sslEnable", NULL ); - workerEnv->ssl_enable = JK_TRUE; - opt=jk2_map_getString( env, workerEnv->initData, "httpsIndicator", NULL ); - workerEnv->https_indicator = opt; - opt=jk2_map_getString( env, workerEnv->initData, "certsIndicator", NULL ); - workerEnv->certs_indicator = opt; - opt=jk2_map_getString( env, workerEnv->initData, "cipherIndicator", NULL ); - workerEnv->cipher_indicator = opt; - opt=jk2_map_getString( env, workerEnv->initData, "sessionIndicator", NULL ); - workerEnv->session_indicator = opt; - opt=jk2_map_getString( env, workerEnv->initData, "keySizeIndicator", NULL ); - workerEnv->key_size_indicator = opt; - /* Small change in how we treat options: we have a default, and assume that any option declared by user has the intention of overriding the default ( "-Option == no option, leave the default */ - if ( jk2_map_getBool(env, workerEnv->initData, - "ForwardKeySize", NULL)) { - workerEnv->options |= JK_OPT_FWDKEYSIZE; - } else if(jk2_map_getBool(env, workerEnv->initData, - "ForwardURICompat", NULL)) { - workerEnv->options &= ~JK_OPT_FWDURIMASK; - workerEnv->options |=JK_OPT_FWDURICOMPAT; - } else if(jk2_map_getBool(env, workerEnv->initData, - "ForwardURICompatUnparsed", NULL)) { - workerEnv->options &= ~JK_OPT_FWDURIMASK; - workerEnv->options |=JK_OPT_FWDURICOMPATUNPARSED; - } else if (jk2_map_getBool(env, workerEnv->initData, - "ForwardURIEscaped", NULL)) { - workerEnv->options &= ~JK_OPT_FWDURIMASK; - workerEnv->options |= JK_OPT_FWDURIESCAPED; - } - - /* Init() - post-config initialization ( now all options are set ) */ - jk2_workerEnv_init1( env, workerEnv ); - - err=workerEnv->uriMap->init(env, workerEnv->uriMap, - workerEnv, - workerEnv->initData ); + if( strcmp( name, "ForwardURICompat" )==0 ) { + wEnv->options &= ~JK_OPT_FWDURIMASK; + wEnv->options |=JK_OPT_FWDURICOMPAT; + } else if( strcmp( name, "ForwardURICompatUnparsed" )==0 ) { + wEnv->options &= ~JK_OPT_FWDURIMASK; + wEnv->options |=JK_OPT_FWDURICOMPATUNPARSED; + } else if( strcmp( name, "ForwardURIEscaped" )==0 ) { + wEnv->options &= ~JK_OPT_FWDURIMASK; + wEnv->options |= JK_OPT_FWDURIESCAPED; + } else { + return JK_FALSE; + } return JK_TRUE; } -/** - * Init the workers, prepare the we. - * - * Replaces wc_open - */ -static int jk2_workerEnv_init1(jk_env_t *env, jk_workerEnv_t *_this) +static int jk2_workerEnv_setWorkerList( struct jk_env *env, + struct jk_workerEnv *wEnv, + char *wlist) { - jk_map_t *initData=_this->initData; - char **worker_list = NULL; - int i; - int err; - char *tmp; - int declared_workers=0; + wEnv->worker_list=jk2_map_split( env, wEnv->initData, wEnv->pool, + wlist, NULL, & wEnv->declared_workers ); +} - /* _this->initData=initData; */ +static int jk2_workerEnv_setWorkerProperty( struct jk_env *env, + struct jk_workerEnv *wEnv, + char *name, char *val) - tmp = jk2_map_getString(env, initData, "worker.list", - DEFAULT_WORKER ); - worker_list=jk2_map_split( env, initData, initData->pool, - tmp, NULL, & declared_workers ); +{ + jk_worker_t *w = NULL; + char *wname=NULL; + char *pname=NULL; + char *dot=0; + int i; - if(worker_list==NULL || declared_workers <= 0 ) { - /* assert() - we pass default worker, we should get something back */ + if( strncmp( name, "worker.", 7 ) != 0 ) return JK_FALSE; - } - for(i = 0 ; i < declared_workers ; i++) { - jk_worker_t *w = NULL; - jk_worker_t *oldw = NULL; - const char *name=(const char*)worker_list[i]; + wname=wEnv->pool->pstrdup( env, wEnv->pool, name + 7); + /* env->l->jkLog(env, env->l, JK_LOG_ERROR, "wname= %s\n", wname); */ + dot=strchr( wname, '.' ); + if( dot== NULL ) + return JK_FALSE; + *dot='\0'; + pname= dot+1; + /*env->l->jkLog(env, env->l, JK_LOG_ERROR, "wname1= %s pname=%s\n", wname, pname); */ + + w=wEnv->getWorkerForName( env, wEnv, wname ); + + if( w != NULL ) { + /* If we have an object with that name, set the prop */ + return w->setProperty( env, w, pname, val ); + } - w=_this->createWorker(env, _this, name, initData); + /** Unknown worker. It may be the first option, create it + */ + if( strcmp( pname, "type" ) != 0 ) { + env->l->jkLog(env, env->l, JK_LOG_ERROR, + "The first worker property must be type %s %s\n", wname, pname); + return JK_FALSE; + } else { + + /* We know the worker type, create it and set previous props + */ + w=wEnv->createWorker(env, wEnv, wname, val ); + if( w==NULL ) { env->l->jkLog(env, env->l, JK_LOG_ERROR, - "init failed to create worker %s\n", - worker_list[i]); - /* Ignore it, other workers may be ok. - return JK_FALSE; */ - } else { - if( _this->defaultWorker == NULL ) - _this->defaultWorker=w; + "init failed to create worker %s\n", wname); + return JK_FALSE; } + + if( wEnv->defaultWorker == NULL ) + wEnv->defaultWorker=w; } + return JK_TRUE; +} + + +static int jk2_workerEnv_setProperty( struct jk_env *env, + struct jk_workerEnv *wEnv, + const char *name, char *value) +{ + jk_map_t *initData=wEnv->initData; + int status; + + value = jk2_map_replaceProperties(env, initData, initData->pool, value); + + /** XXX Do we need this ? How about removing/runtime changes/single value ? + */ + initData->add( env, initData, name, value ); - jk2_workerEnv_initHandlers( env, _this ); + if( strcmp( name, "workerFile" ) == 0 ) { + return jk2_workerEnv_setWorkerFile(env, wEnv, value); + } else if( strcmp( name, "logLevel") == 0 ) { + return jk2_workerEnv_setLogLevel( env, wEnv, value ); + } else if( strcmp( name, "worker.list") == 0 ) { + /* Note that worker list is what we init at startup + in jk2 all declared workers will be configured and + enabled on demand + */ + return jk2_workerEnv_setWorkerList( env, wEnv, value ); + } else if( strncmp( name, "worker.", 7) == 0 ) { + return jk2_workerEnv_setWorkerProperty( env, wEnv, name, value ); + } else if( strncmp( name, "uriMap.", 7) == 0 || + strncmp( name, "uri.", 4) == 0 || + name[0]=='/' ) { + /** XXX pre-process it ? */ + wEnv->uriMap->setProperty( env, wEnv->uriMap, name, value ); + } + + /* Is it a ssl-related property ? */ + if( jk2_workerEnv_setSSLProperty( env, wEnv, name, value )==JK_TRUE ) { + return JK_TRUE; + } + if( jk2_workerEnv_setForwardProperty( env, wEnv, name, value )==JK_TRUE ) { + return JK_TRUE; + } - env->l->jkLog(env, env->l, JK_LOG_INFO, - "workerEnv.init() %d workers, default %s\n", - declared_workers, worker_list[0]); return JK_TRUE; } -static void jk2_workerEnv_close(jk_env_t *env, jk_workerEnv_t *_this) + +static char *jk2_workerEnv_getProperty( struct jk_env *env, + struct jk_workerEnv *wEnv, + const char *name) +{ + + return NULL; +} + + +static void jk2_workerEnv_close(jk_env_t *env, jk_workerEnv_t *wEnv) { int sz; int i; - sz = _this->worker_map->size(env, _this->worker_map); + sz = wEnv->worker_map->size(env, wEnv->worker_map); for(i = 0 ; i < sz ; i++) { - jk_worker_t *w = _this->worker_map->valueAt(env, _this->worker_map, i); + jk_worker_t *w = wEnv->worker_map->valueAt(env, wEnv->worker_map, i); if(w) { env->l->jkLog(env, env->l, JK_LOG_DEBUG, "destroy worker %s\n", - _this->worker_map->nameAt(env, _this->worker_map, i)); + wEnv->worker_map->nameAt(env, wEnv->worker_map, i)); if( w->destroy !=NULL ) w->destroy(env,w); } } env->l->jkLog(env, env->l, JK_LOG_DEBUG, "workerEnv.close() done %d\n", sz); - _this->worker_map->clear(env, _this->worker_map); + wEnv->worker_map->clear(env, wEnv->worker_map); } static jk_worker_t *jk2_workerEnv_getWorkerForName(jk_env_t *env, - jk_workerEnv_t *_this, + jk_workerEnv_t *wEnv, const char *name ) { jk_worker_t * rc; @@ -303,7 +359,7 @@ return NULL; } - rc = _this->worker_map->get(env, _this->worker_map, name); + rc = wEnv->worker_map->get(env, wEnv->worker_map, name); /* if( rc==NULL ) { */ /* l->jkLog(l, JK_LOG_INFO, */ @@ -329,7 +385,36 @@ *sizeP=newSize; } -static void jk2_workerEnv_initHandlers(jk_env_t *env, jk_workerEnv_t *_this) +static int jk2_workerEnv_initWorkers(jk_env_t *env, + jk_workerEnv_t *wEnv) +{ + int i; + char **wlist=wEnv->worker_list; + + for( i=0; i< wEnv->worker_map->size( env, wEnv->worker_map ); i++ ) { + char *name= wEnv->worker_map->nameAt( env, wEnv->worker_map, i ); + jk_worker_t *w= wEnv->worker_map->valueAt( env, wEnv->worker_map, i ); + int err; + + if( w->init != NULL ) + err=w->init(env, w); + + if(err!=JK_TRUE) { + if( w->destroy != NULL ) + w->destroy(env, w); + env->l->jkLog(env, env->l, JK_LOG_ERROR, + "workerEnv.createWorker() init failed for %s\n", + name); + } + + env->l->jkLog(env, env->l, JK_LOG_INFO, + "workerEnv.createWorker(): init ok %s\n", name); + } + return JK_TRUE; +} + + +static void jk2_workerEnv_initHandlers(jk_env_t *env, jk_workerEnv_t *wEnv) { /* Find the max message id */ /* XXX accessing private data... env most provide some method to get this */ @@ -345,25 +430,45 @@ char *name= registry->nameAt( env, registry, i ); if( strstr( name, "handler" ) == name ) { char *type=name+ strlen( "handler" ) +1; - localHandlers=(jk_map_t *)env->getInstance(env, _this->pool, + localHandlers=(jk_map_t *)env->getInstance(env, wEnv->pool, "handler", type ); if( localHandlers==NULL ) continue; for( j=0; j< localHandlers->size( env, localHandlers ); j++ ) { handler=(jk_handler_t *)localHandlers->valueAt( env, localHandlers, j ); - jk2_workerEnv_checkSpace( env, _this->pool, - (void ***)&_this->handlerTable, - &_this->lastMessageId, + jk2_workerEnv_checkSpace( env, wEnv->pool, + (void ***)&wEnv->handlerTable, + &wEnv->lastMessageId, handler->messageId ); - _this->handlerTable[ handler->messageId ]=handler; - /*_this->l->jkLog( _this->l, JK_LOG_INFO, "Registered %s %d\n",*/ + wEnv->handlerTable[ handler->messageId ]=handler; + /*wEnv->l->jkLog( wEnv->l, JK_LOG_INFO, "Registered %s %d\n",*/ /* handler->name, handler->messageId); */ } } } } -static int jk2_workerEnv_dispatch(jk_env_t *env, jk_workerEnv_t *_this, +static int jk2_workerEnv_init(jk_env_t *env, jk_workerEnv_t *wEnv) +{ + int err; + char *opt; + int options; + + env->l->jkLog(env, env->l, JK_LOG_INFO, "mod_jk.init_jk()\n" ); + + /** This will eventuall read logFile. + XXX Config per 'component', log.level, log.file, etc + */ + env->l->open( env, env->l, wEnv->initData ); + + jk2_workerEnv_initWorkers( env, wEnv ); + jk2_workerEnv_initHandlers( env, wEnv ); + + err=wEnv->uriMap->init(env, wEnv->uriMap ); + return JK_TRUE; +} + +static int jk2_workerEnv_dispatch(jk_env_t *env, jk_workerEnv_t *wEnv, jk_endpoint_t *e, jk_ws_service_t *r) { int code; @@ -411,7 +516,7 @@ * In fact if tomcat link is broken during upload (browser ->apache ->tomcat) * we'll loose data and we'll have to abort the whole request. */ -static int jk2_workerEnv_processCallbacks(jk_env_t *env, jk_workerEnv_t *_this, +static int jk2_workerEnv_processCallbacks(jk_env_t *env, jk_workerEnv_t *wEnv, jk_endpoint_t *e, jk_ws_service_t *r ) { int code; @@ -441,7 +546,7 @@ /* e->reply->dump(env, e->reply, "Received "); */ - rc=jk2_workerEnv_dispatch( env, _this, e, r ); + rc=jk2_workerEnv_dispatch( env, wEnv, e, r ); /* Process the status code returned by handler */ switch( rc ) { @@ -494,7 +599,7 @@ } static jk_worker_t *jk2_workerEnv_releasePool(jk_env_t *env, - jk_workerEnv_t *_this, + jk_workerEnv_t *wEnv, const char *name, jk_map_t *initData) { @@ -503,19 +608,18 @@ static jk_worker_t *jk2_workerEnv_createWorker(jk_env_t *env, - jk_workerEnv_t *_this, + jk_workerEnv_t *wEnv, const char *name, - jk_map_t *initData) + char *type) { int err=JK_TRUE; - char *type; jk_env_objectFactory_t fac; jk_worker_t *w = NULL; jk_worker_t *oldW = NULL; jk_pool_t *workerPool; /* First find if it already exists */ - w=_this->getWorkerForName( env, _this, name ); + w=wEnv->getWorkerForName( env, wEnv, name ); if( w != NULL ) { env->l->jkLog(env, env->l, JK_LOG_INFO, "workerEnv.createWorker(): Using existing worker %s\n", @@ -523,9 +627,7 @@ return w; } - workerPool=_this->pool->create(env, _this->pool, HUGE_POOL_SIZE); - - type=jk2_map_getStrProp( env, initData,"worker",name,"type",NULL ); + workerPool=wEnv->pool->create(env, wEnv->pool, HUGE_POOL_SIZE); /* Each worker has it's own pool */ if( type == NULL ) type="ajp13"; @@ -544,41 +646,12 @@ w->type=type; w->name=(char *)name; w->pool=workerPool; - w->workerEnv=_this; + w->workerEnv=wEnv; w->rPoolCache= jk2_objCache_create( env, workerPool ); err=w->rPoolCache->init( env, w->rPoolCache, 1024 ); /* XXX make it unbound */ - - if( w->validate!=NULL ) - err=w->validate(env, w, initData, _this); - - if( err!=JK_TRUE ) { - env->l->jkLog(env, env->l, JK_LOG_ERROR, - "workerEnv.createWorker(): validate failed for %s:%s\n", - type, name); - if( w->destroy != NULL ) - w->destroy(env, w); - return NULL; - } - - if( w->init != NULL ) - err=w->init(env, w, initData, _this); - - if(err!=JK_TRUE) { - if( w->destroy != NULL ) - w->destroy(env, w); - env->l->jkLog(env, env->l, JK_LOG_ERROR, - "workerEnv.createWorker() init failed for %s\n", - name); - return NULL; - } - - env->l->jkLog(env, env->l, JK_LOG_INFO, - "workerEnv.createWorker(): validate and init %s:%s\n", - type, name); - - _this->worker_map->put(env, _this->worker_map, name, w, (void *)&oldW); + wEnv->worker_map->put(env, wEnv->worker_map, name, w, (void *)&oldW); if(oldW!=NULL) { env->l->jkLog(env, env->l, JK_LOG_ERROR, @@ -591,110 +664,111 @@ return w; } + int JK_METHOD jk2_workerEnv_factory(jk_env_t *env, jk_pool_t *pool, void **result, const char *type, const char *name) { - jk_workerEnv_t *_this; + jk_workerEnv_t *wEnv; int err; jk_pool_t *uriMapPool; env->l->jkLog(env, env->l, JK_LOG_DEBUG, "Creating workerEnv \n"); - _this=(jk_workerEnv_t *)pool->calloc( env, pool, sizeof( jk_workerEnv_t )); - _this->pool=pool; - *result=_this; + wEnv=(jk_workerEnv_t *)pool->calloc( env, pool, sizeof( jk_workerEnv_t )); + wEnv->pool=pool; + *result=wEnv; - _this->initData = NULL; - jk2_map_default_create(env, & _this->initData, pool); + wEnv->initData = NULL; + jk2_map_default_create(env, & wEnv->initData, pool); /* Add 'compile time' settings. Those are defined in jk_global, with the other platform-specific settings. No need to ask the user what we can find ourself */ - _this->initData->put( env, _this->initData, "fs", + wEnv->initData->put( env, wEnv->initData, "fs", FILE_SEPARATOR_STR, NULL ); - _this->initData->put( env, _this->initData, "ps", + wEnv->initData->put( env, wEnv->initData, "ps", PATH_SEPARATOR_STR, NULL ); - _this->initData->put( env, _this->initData, "so", + wEnv->initData->put( env, wEnv->initData, "so", SO_EXTENSION, NULL ); - _this->initData->put( env, _this->initData, "arch", + wEnv->initData->put( env, wEnv->initData, "arch", ARCH, NULL ); - _this->log_file = NULL; - _this->log_level = -1; - _this->mountcopy = JK_FALSE; - _this->was_initialized = JK_FALSE; - _this->options = JK_OPT_FWDURIDEFAULT; + wEnv->log_file = NULL; + wEnv->log_level = -1; + wEnv->mountcopy = JK_FALSE; + wEnv->was_initialized = JK_FALSE; + wEnv->options = JK_OPT_FWDURIDEFAULT; /* * By default we will try to gather SSL info. * Disable this functionality through JkExtractSSL */ - _this->ssl_enable = JK_TRUE; + wEnv->ssl_enable = JK_TRUE; /* * The defaults ssl indicators match those in mod_ssl (seems * to be in more use). */ - _this->https_indicator = "HTTPS"; - _this->certs_indicator = "SSL_CLIENT_CERT"; + wEnv->https_indicator = "HTTPS"; + wEnv->certs_indicator = "SSL_CLIENT_CERT"; /* * The following (comented out) environment variables match apache_ssl! * If you are using apache_sslapache_ssl uncomment them (or use the * configuration directives to set them. * - _this->cipher_indicator = "HTTPS_CIPHER"; - _this->session_indicator = NULL; + wEnv->cipher_indicator = "HTTPS_CIPHER"; + wEnv->session_indicator = NULL; */ /* * The following environment variables match mod_ssl! If you * are using another module (say apache_ssl) comment them out. */ - _this->cipher_indicator = "SSL_CIPHER"; - _this->session_indicator = "SSL_SESSION_ID"; - _this->key_size_indicator = "SSL_CIPHER_USEKEYSIZE"; + wEnv->cipher_indicator = "SSL_CIPHER"; + wEnv->session_indicator = "SSL_SESSION_ID"; + wEnv->key_size_indicator = "SSL_CIPHER_USEKEYSIZE"; - /* if(!map_alloc(&(_this->automount))) { */ + /* if(!map_alloc(&(wEnv->automount))) { */ /* jk_error_exit(APLOG_MARK, APLOG_EMERG, s, p, "Memory error"); */ /* } */ - _this->uriMap = NULL; - _this->secret_key = NULL; + wEnv->uriMap = NULL; + wEnv->secret_key = NULL; - _this->envvars_in_use = JK_FALSE; - jk2_map_default_create(env, &_this->envvars, pool); + wEnv->envvars_in_use = JK_FALSE; + jk2_map_default_create(env, &wEnv->envvars, pool); - jk2_map_default_create(env,&_this->worker_map, _this->pool); + jk2_map_default_create(env,&wEnv->worker_map, wEnv->pool); - uriMapPool = _this->pool->create(env, _this->pool, HUGE_POOL_SIZE); + uriMapPool = wEnv->pool->create(env, wEnv->pool, HUGE_POOL_SIZE); - _this->uriMap=env->getInstance(env, uriMapPool,"uriMap", "default"); + wEnv->uriMap=env->getInstance(env, uriMapPool,"uriMap", "default"); - if( _this->uriMap==NULL ) { + if( wEnv->uriMap==NULL ) { env->l->jkLog(env, env->l, JK_LOG_ERROR, "Error getting uriMap implementation\n"); return JK_FALSE; } - _this->uriMap->workerEnv = _this; - _this->perThreadWorker=0; + wEnv->uriMap->workerEnv = wEnv; + wEnv->perThreadWorker=0; /* methods */ - _this->init=&jk2_workerEnv_init; - _this->getWorkerForName=&jk2_workerEnv_getWorkerForName; - _this->close=&jk2_workerEnv_close; - _this->createWorker=&jk2_workerEnv_createWorker; - _this->processCallbacks=&jk2_workerEnv_processCallbacks; - _this->dispatch=&jk2_workerEnv_dispatch; - _this->setProperty=&jk2_workerEnv_setProperty; - _this->getProperty=&jk2_workerEnv_getProperty; + wEnv->init=&jk2_workerEnv_init; + wEnv->getWorkerForName=&jk2_workerEnv_getWorkerForName; + wEnv->close=&jk2_workerEnv_close; + wEnv->createWorker=&jk2_workerEnv_createWorker; + wEnv->processCallbacks=&jk2_workerEnv_processCallbacks; + wEnv->dispatch=&jk2_workerEnv_dispatch; + wEnv->setProperty=&jk2_workerEnv_setProperty; + wEnv->getProperty=&jk2_workerEnv_getProperty; - _this->rootWebapp=_this->uriMap->createUriEnv( env, _this->uriMap, NULL, "/" ); + wEnv->rootWebapp=wEnv->uriMap->createUriEnv( env, wEnv->uriMap, NULL, "/" ); - _this->globalEnv=env; + wEnv->globalEnv=env; return JK_TRUE; }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>