[prev in list] [next in list] [prev in thread] [next in thread] 

List:       tomcat-dev
Subject:    Re: cvs commit: jakarta-tomcat-connectors/jk/native2/server/apache2
From:       jean-frederic clere <jfrederic.clere () fujitsu-siemens ! com>
Date:       2004-03-31 13:38:16
Message-ID: 406AC9C8.90808 () fujitsu-siemens ! com
[Download RAW message or body]

jfclere@apache.org 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: tomcat-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
> 
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic