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]

Reply via email to