As I mentioned, I prefer doing this _after_ jk2.0 ( i.e. the first milestone), possibly in a branch.
Alternatively, you can use ifdefs - but please keep the old code at least for a while. When we decide to require apr, all the old code can/should be removed - the pools, socket, etc. We keep it for a single reason - to support the possible cases when apr can't be used and build problems on those platforms. I'm -1 on making such a big change ( requiring apr/aprutil ) right now, and not only because of compilation issues with apache1.3 - when we do it we should go all the way. Costin [EMAIL PROTECTED] wrote: > mturk 2002/09/23 10:39:24 > > Modified: jk/native2/common jk_uriEnv.c > Log: > Rewrite the uriEnv using the apr_uri_t. > > Revision Changes Path > 1.27 +105 -83 > jakarta-tomcat-connectors/jk/native2/common/jk_uriEnv.c > > Index: jk_uriEnv.c > =================================================================== > RCS file: > /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_uriEnv.c,v > retrieving revision 1.26 retrieving revision 1.27 > diff -u -r1.26 -r1.27 > --- jk_uriEnv.c 22 Sep 2002 02:50:42 -0000 1.26 > +++ jk_uriEnv.c 23 Sep 2002 17:39:24 -0000 1.27 > @@ -69,6 +69,7 @@ > #include "jk_uriMap.h" > #include "jk_registry.h" > > +#include "apr_uri.h" > /** Parse the name: > VHOST/PATH > > @@ -80,35 +81,41 @@ > static int jk2_uriEnv_parseName( jk_env_t *env, jk_uriEnv_t *uriEnv, > char *name) > { > - char *n=name; > - char *slash=strchr( name, '/' ); > - > - /* fprintf( stderr, "XXX parseURI %s\n", name ); */ > + > + apr_uri_t uri; > + char s[1024]; > + > + /* If it uri starts with / then it is simple > + * default host uri > + */ > + if (*name == '/') > + strcpy(s, name); > + else { > + strcpy(s, "http://"); > + strcat(s, name); > + } > + env->l->jkLog(env, env->l, JK_LOG_DEBUG, > + "uriEnv.parseName() uri %s name %s real %s\n", > + uriEnv->name, name, s); > > - if( slash==NULL ) { > - /* That's a virtual host definition ( no actual mapping, just > global > - * settings like aliases, etc > - */ > - uriEnv->match_type= MATCH_TYPE_HOST; > - if( name[0]=='\0' ) { > - uriEnv->virtual=NULL; /* "" for the default host */ > - } else { > - uriEnv->virtual=name; > + if (apr_uri_parse(uriEnv->pool->_private, s, &uri) == APR_SUCCESS) > { + > + uriEnv->port = uri.port; > + if (uri.hostname) { > + if (!uriEnv->port) > + uriEnv->virtual = uri.hostname; > + else > + uriEnv->virtual = apr_pstrcat(uriEnv->pool->_private, > + uri.hostname, ":", uri.port_str, > NULL); > } > + else > + uriEnv->virtual = "*"; > + uriEnv->uri = uri.path; > + if (!uri.path) > + uriEnv->match_type = MATCH_TYPE_HOST; > return JK_OK; > } > - > - /* If it doesn't start with /, it must have a vhost */ > - if( *name != '/' ) { > - uriEnv->virtual=uriEnv->pool->calloc( env, uriEnv->pool, slash > - name + 2 ); > - strncpy( uriEnv->virtual, name, slash-name ); > - } > - > - n=slash; > - > - uriEnv->uri=uriEnv->pool->pstrdup(env, uriEnv->pool, n); > - > - return JK_OK; > + return JK_ERR; > } > > static void * JK_METHOD jk2_uriEnv_getAttribute(jk_env_t *env, > jk_bean_t *bean, > @@ -134,59 +141,71 @@ > jk_uriEnv_t *uriEnv=mbean->object; > char *valueParam=valueP; > > - char *name=uriEnv->pool->pstrdup(env,uriEnv->pool, nameParam); > - char *val=uriEnv->pool->pstrdup(env,uriEnv->pool, valueParam); > + char *name = uriEnv->pool->pstrdup(env,uriEnv->pool, nameParam); > + char *val = uriEnv->pool->pstrdup(env,uriEnv->pool, valueParam); > > - uriEnv->properties->add( env ,uriEnv->properties, > - name, val ); > + uriEnv->properties->add(env ,uriEnv->properties, > + name, val); > > - if( strcmp("group", name) == 0 ) { > - uriEnv->workerName=val; > + if (strcmp("group", name) == 0) { > + uriEnv->workerName = val; > return JK_OK; > - } else if( strcmp("context", name) == 0 ) { > - > + } > + else if (strcmp("context", name) == 0) { > uriEnv->contextPath=val; > - uriEnv->ctxt_len=strlen( val ); > + uriEnv->ctxt_len = strlen(val); > > - if( strcmp( val, uriEnv->uri ) == 0 ) { > - uriEnv->match_type= MATCH_TYPE_CONTEXT; > + if (strcmp(val, uriEnv->uri) == 0) { > + uriEnv->match_type = MATCH_TYPE_CONTEXT; > } > return JK_OK; > - } else if( strcmp("servlet", name) == 0 ) { > + } > + else if (strcmp("servlet", name) == 0) { > uriEnv->servlet=val; > - } else if( strcmp("timing", name) == 0 ) { > - uriEnv->timing=atoi( val ); > - } else if( strcmp("reverse", name) == 0 ) { > - uriEnv->reverse=atoi( val ); > - } else if( strcmp("alias", name) == 0 ) { > - if( uriEnv->match_type == MATCH_TYPE_HOST ) { > - if( uriEnv->aliases==NULL ) { > - jk2_map_default_create( env, &uriEnv->aliases, > mbean->pool ); > + } > + else if (strcmp("timing", name) == 0) { > + uriEnv->timing = atoi(val); > + } > + else if (strcmp("alias", name) == 0) { > + if (uriEnv->match_type == MATCH_TYPE_HOST) { > + if (uriEnv->aliases == NULL) { > + jk2_map_default_create(env, &uriEnv->aliases, > mbean->pool); > } > - uriEnv->aliases->put( env, uriEnv->aliases, val, uriEnv, > NULL ); > + uriEnv->aliases->put(env, uriEnv->aliases, val, uriEnv, > NULL); > } > } > - > - /* OLD - DEPRECATED */ > - if( strcmp("worker", name) == 0 ) { > - uriEnv->workerName=val; > - } else if( strcmp("path", name) == 0 ) { > - if( val==NULL ) > - uriEnv->uri=NULL; > - else > - uriEnv->uri=uriEnv->pool->pstrdup(env, uriEnv->pool, val); > - } > - if( strcmp("uri", name) == 0 ) { > - jk2_uriEnv_parseName( env, uriEnv, val); > - } > - if( strcmp("name", name) == 0 ) { > - jk2_uriEnv_parseName( env, uriEnv, val); > - } > - if( strcmp("vhost", name) == 0 ) { > - if( val==NULL ) > - uriEnv->virtual=NULL; > + else { > + /* OLD - DEPRECATED */ > + int d = 1; > + if (strcmp("worker", name) == 0) { > + d = 1; > + uriEnv->workerName = val; > + } > + else if (strcmp("path", name) == 0) { > + if (val == NULL) > + uriEnv->uri = NULL; > + else > + uriEnv->uri = uriEnv->pool->pstrdup(env, uriEnv->pool, > val); > + } > + else if (strcmp("uri", name) == 0) { > + jk2_uriEnv_parseName(env, uriEnv, val); > + } > + else if (strcmp("name", name) == 0) { > + jk2_uriEnv_parseName(env, uriEnv, val); > + } > + else if (strcmp("vhost", name) == 0) { > + if (val == NULL) > + uriEnv->virtual = NULL; > + else > + uriEnv->virtual = uriEnv->pool->pstrdup(env, > uriEnv->pool, val); > + } > else > - uriEnv->virtual=uriEnv->pool->pstrdup(env, uriEnv->pool, > val); > + d = 0; > + if (d) > + env->l->jkLog(env, env->l, JK_LOG_INFO, > + "uriEnv.setAttribute() the %s directive is > depriciated\n", > + name); > + > } > return JK_OK; > } > @@ -379,26 +398,29 @@ > uriEnv=(jk_uriEnv_t *)pool->calloc(env, uriPool, > sizeof(jk_uriEnv_t)); > > - uriEnv->pool=uriPool; > + uriEnv->pool = uriPool; > > - jk2_map_default_create( env, &uriEnv->properties, uriPool ); > + jk2_map_default_create(env, &uriEnv->properties, uriPool); > + > + uriEnv->init = jk2_uriEnv_init; > > - uriEnv->init=jk2_uriEnv_init; > + result->setAttribute = jk2_uriEnv_setAttribute; > + result->getAttribute = jk2_uriEnv_getAttribute; > + uriEnv->mbean = result; > + result->object = uriEnv; > + result->getAttributeInfo = myAttInfo; > > - result->setAttribute=jk2_uriEnv_setAttribute; > - result->getAttribute=jk2_uriEnv_getAttribute; > - uriEnv->mbean=result; > - result->object=uriEnv; > - result->getAttributeInfo=myAttInfo; > - > - uriEnv->name=result->localName; > - jk2_uriEnv_parseName( env, uriEnv, result->localName); > - > - uriEnv->workerEnv=env->getByName( env, "workerEnv" ); > - uriEnv->workerEnv->uriMap->addUriEnv( env, > uriEnv->workerEnv->uriMap, > - uriEnv ); > - uriEnv->uriMap=uriEnv->workerEnv->uriMap; > + uriEnv->name = result->localName; > + if (jk2_uriEnv_parseName(env, uriEnv, result->localName) != JK_OK) > { > + env->l->jkLog(env, env->l, JK_LOG_ERROR, > + "uriEnv.factory() error parsing %s\n", > + uriEnv->name); > + return JK_ERR; > + } > + uriEnv->workerEnv = env->getByName(env, "workerEnv"); > + uriEnv->workerEnv->uriMap->addUriEnv(env, > uriEnv->workerEnv->uriMap, > + uriEnv); > + uriEnv->uriMap = uriEnv->workerEnv->uriMap; > > return JK_OK; > } > - -- Costin -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>