Good morning All.
In considering the duplication issue mentioned previously, it would seem
entirely possible that a specific uri could be given in both
workers2.properties and via a JkUriSet entry... therefore shouldn't the
JkUriSet function resolve the name to be used for a uri object and first
check for a matching object before creating another one? If the object
already exists then only 'non-key' properties such as 'info', 'servlet',
'worker' and so on, should be updated by JkUriSet on the existing obect.
Thinking out loud.
Norm
> Good morning All.
> Just tried Jean's recent change to mod_jk2.c and _pleased_ to say JkUriSet
> now registers correctly the same as a [uri] section, and can access /admin
> with only a <Location> in the httpd.conf. I did note there were duplicate
> uri objects created (based on their name) if the same uri spec was in both
> files, but in any case this is a lot closer to theory than in the past.
> Thanks Jean.
>
> Norm
>
> ----- Original Message -----
> From: <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Thursday, April 01, 2004 12:22 AM
> Subject: cvs commit: jakarta-tomcat-connectors/jk/native2/server/apache2
> mod_jk2.c
>
>
> > jfclere 2004/03/31 06:22:04
> >
> > Modified: jk/native2/server/apache2 mod_jk2.c
> > Log:
> > Fix handling of id added in jk2_create_dir_config().
> > I do not see why we need this id... May because jk2_merge_dir_config()
> > was buggy.
> > That fixes PR 18472 and 28916.
> >
> > Revision Changes Path
> > 1.82 +33 -16
> jakarta-tomcat-connectors/jk/native2/server/apache2/mod_jk2.c
> >
> > Index: mod_jk2.c
> > ===================================================================
> > RCS file:
> /home/cvs/jakarta-tomcat-connectors/jk/native2/server/apache2/mod_jk2.c,v
> > retrieving revision 1.81
> > retrieving revision 1.82
> > diff -u -r1.81 -r1.82
> > --- mod_jk2.c 21 Mar 2004 09:44:30 -0000 1.81
> > +++ mod_jk2.c 31 Mar 2004 14:22:04 -0000 1.82
> > @@ -221,14 +221,25 @@
> > strcpy(tmp_full_url, s->server_hostname);
> > strcat(tmp_full_url, uriEnv->uri);
> > }
> > +
> > uriEnv->mbean->setAttribute(workerEnv->globalEnv,
> uriEnv->mbean,
> > "uri", tmp_full_url);
> > uriEnv->mbean->setAttribute(workerEnv->globalEnv,
> uriEnv->mbean,
> > "path", cmd->path);
> > +
> > uriEnv->name = tmp_virtual;
> > uriEnv->virtual = tmp_virtual;
> >
> > + } else {
> > + /*
> > + * The jk2_create_dir_config added an id to uri and path
> > + * we have to correct it here.
> > + */
> > +
> > + uriEnv->mbean->setAttribute(workerEnv->globalEnv,
> uriEnv->mbean,
> > + "uri", cmd->path);
> > }
> > +
> > /* now lets actually add the parameter set in the <Location>
block
> */
> > uriEnv->mbean->setAttribute(workerEnv->globalEnv, uriEnv->mbean,
> > (char *)name, (void *)val);
> > @@ -293,40 +304,46 @@
> > jk_uriEnv_t *child = (jk_uriEnv_t *)childv;
> > jk_uriEnv_t *parent = (jk_uriEnv_t *)parentv;
> > jk_uriEnv_t *winner = NULL;
> > - jk_uriEnv_t *loser = NULL;
> > + char *hostchild;
> > + char *hostparent;
> >
> > if (child == NULL || child->uri == NULL || child->workerName ==
> NULL) {
> > winner = parent;
> > - loser = child;
> > }
> > else if (parent == NULL || parent->uri == NULL
> > || parent->workerName == NULL) {
> > winner = child;
> > - loser = parent;
> > /* interresting bit... so far they are equal ... */
> > }
> > else if (strlen(parent->uri) > strlen(child->uri)) {
> > winner = parent;
> > - loser = child;
> > + }
> > + else if (strlen(parent->uri) == strlen(child->uri)) {
> > + /* Try the virtual host to decide */
> > + hostchild = child->mbean->getAttribute(workerEnv->globalEnv,
> child->mbean,"host");
> > + hostparent =
parent->mbean->getAttribute(workerEnv->globalEnv,
> parent->mbean,"host");
> > + if (hostchild == NULL)
> > + winner = parent;
> > + if (hostparent == NULL)
> > + winner = child;
> > + if (winner == NULL) {
> > + if (strlen(hostchild) > strlen(hostparent))
> > + winner = child;
> > + else
> > + winner = parent;
> > + }
> > }
> > else {
> > winner = child;
> > - loser = parent;
> > }
> >
> > /* Do we merge loser into winner - i.e. inherit properties ? */
> >
> > - /*if ( winner == child )
> > - fprintf(stderr, "Going with the child\n");
> > - else if ( winner == parent )
> > - fprintf(stderr, "Going with the parent\n");
> > - else
> > - fprintf(stderr, "Going with NULL\n");
> > - */
> > - fprintf(stderr, "Merging %s %s %s\n",
> > - (winner == NULL || winner->uri == NULL) ? "" :
winner->uri,
> > + ap_log_perror(APLOG_MARK, APLOG_DEBUG, 0, NULL,
> > + "mod_jk2 Merging %s %s winner: %s\n",
> > (child == NULL || child->uri == NULL) ? "" : child->uri,
> > - (parent == NULL || parent->uri == NULL) ? "" :
> parent->uri);
> > + (parent == NULL || parent->uri == NULL) ? "" :
parent->uri,
> > + (winner == child) ? "parent" : "child" );
> >
> >
> > return (void *)winner;
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]