[EMAIL PROTECTED] wrote:
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().

Please review I spent time to find why we added the id to "path" and "uri" but now I do not understand why we added it.


  I do not see why we need this id... May because jk2_merge_dir_config()
  was buggy.

Now it uses the virtualhost length to decide between parent and child when the two uris have the same length.


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]



Reply via email to