Good morning All.
>From my source, a 302 code is "Found - the requested resource lies
temporarily under a different URI", which doesn't seem to match very closely
the text of the default noWorkerMsg.
Speaking of which, the word 'temporary' in the #define noWorkerMsg should be
'temporarily'.
Norm



> hgomez      2004/02/27 00:34:18
>
>   Modified:    jk/native2/server/apache2 mod_jk2.c
>                jk/native2/common jk_worker_lb.c
>                jk/native2/include jk_worker.h
>   Log:
>   Fix problem with ErrorDocument and Apache 2.0.
>
>   By default now, WE DON'T touch the headers
>
>   Revision  Changes    Path
>   1.68      +12 -5
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.67
>   retrieving revision 1.68
>   diff -u -r1.67 -r1.68
>   --- mod_jk2.c 24 Feb 2004 08:44:42 -0000 1.67
>   +++ mod_jk2.c 27 Feb 2004 08:34:18 -0000 1.68
>   @@ -22,7 +22,7 @@
>
***************************************************************************/
>
>    /*
>   - * mod_jk: keeps all servlet/jakarta related ramblings together.
>   + * mod_jk2: keeps all servlet/jakarta related ramblings together.
>     */
>
>
>   @@ -697,7 +697,7 @@
>            env->l->jkLog(env, env->l, JK_LOG_ERROR,
>                          "mod_jk.handle() No worker for %s\n", r->uri);
>            workerEnv->globalEnv->releaseEnv( workerEnv->globalEnv, env );
>   -        return 500;
>   +        return HTTP_INTERNAL_SERVER_ERROR;
>        }
>
>        if( uriEnv->mbean->debug > 0 )
>   @@ -752,9 +752,16 @@
>        }
>
>        env->l->jkLog(env, env->l, JK_LOG_ERROR,
>   -                  "mod_jk.handler() Error connecting to tomcat %d\n",
rc);
>   +                  "mod_jk.handler() Error connecting to tomcat %d,
status %d\n", rc, s->status);
>   +
>        workerEnv->globalEnv->releaseEnv( workerEnv->globalEnv, env );
>   -    return 500;
>   +
>   +    /* In case of error, if service() set a status code, send it back
*/
>   +    /* Else fallback to HTTP_INTERNAL_SERVER_ERROR (500). */
>   +    if (s->status != 0)
>   +        return s->status;
>   +    else
>   +        return HTTP_INTERNAL_SERVER_ERROR;
>    }
>
>    /** Use the internal mod_jk mappings to find if this is a request for
>
>
>
>   1.37      +24 -16
jakarta-tomcat-connectors/jk/native2/common/jk_worker_lb.c
>
>   Index: jk_worker_lb.c
>   ===================================================================
>   RCS file:
/home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_worker_lb.c,v
>   retrieving revision 1.36
>   retrieving revision 1.37
>   diff -u -r1.36 -r1.37
>   --- jk_worker_lb.c 24 Feb 2004 08:44:40 -0000 1.36
>   +++ jk_worker_lb.c 27 Feb 2004 08:34:18 -0000 1.37
>   @@ -326,7 +326,7 @@
>        }
>
>        /* Initialize here the recovery POST buffer */
>   - s->reco_buf = jk2_msg_ajp_create( env, s->pool, 0);
>   +    s->reco_buf = jk2_msg_ajp_create( env, s->pool, 0);
>        s->reco_status = RECO_INITED;
>
>        while(1) {
>   @@ -356,17 +356,21 @@
>                    s->status=lb->noWorkerCode; /* SERVICE_UNAVAILABLE is
the default */
>                }
>
>   -            if( s->status == 302 ) {
>   -                s->headers_out->put(env, s->headers_out,
>   -                                    "Location", lb->noWorkerMsg, NULL);
>   -                s->head(env, s );
>   -            } else {
>   -                s->headers_out->put(env, s->headers_out,
>   -                                    "Content-Type", "text/html", NULL);
>   -                s->head(env, s );
>   -                s->jkprintf(env, s, lb->noWorkerMsg );
>   -            }
>   -
>   +            /* Don't touch headers if noErrorHeader set to TRUE, ie
ErrorDocument in Apache via mod_alias */
>   +            if (! lb->noErrorHeader) {
>   +                /* XXX: I didn't understand the 302, since s->status is
lb->hwBalanceErr or lb->noWorkerCode */
>   +                /* Both could be set in workers2.properties so ..... */
>   +                if( s->status == 302 ) {
>   +                    s->headers_out->put(env, s->headers_out,
>   +                                        "Location", lb->noWorkerMsg,
NULL);
>   +                    s->head(env, s );
>   +                } else {
>   +                    s->headers_out->put(env, s->headers_out,
>   +                                        "Content-Type", "text/html",
NULL);
>   +                    s->head(env, s );
>   +                    s->jkprintf(env, s, lb->noWorkerMsg );
>   +                }
>   +            }
>                s->afterRequest( env, s);
>                lb_priv->error_time = time(NULL);
>                return JK_ERR;
>   @@ -473,10 +477,10 @@
>
>    static char *jk2_worker_lb_multiValueInfo[]={"worker", NULL };
>    static char *jk2_worker_lb_setAttributeInfo[]={"attempts",
"stickySession", "recovery", "timeout",
>   -                                               "hwBalanceErr",
"noWorkerMsg", "noWorkerCode", "worker", NULL };
>   +                                               "hwBalanceErr",
"noErrorHeader", "noWorkerMsg", "noWorkerCode", "worker", NULL };
>
>    static char *jk2_worker_lb_getAttributeInfo[]={"attempts",
"stickySession", "recovery", "timeout",
>   -                                               "hwBalanceErr",
"noWorkerMsg", "noWorkerCode", "workers", NULL };
>   +                                               "hwBalanceErr",
"noErrorHeader", "noWorkerMsg", "noWorkerCode", "workers", NULL };
>
>
>    static void * JK_METHOD jk2_lb_getAttribute(jk_env_t *env, jk_bean_t
*mbean,
>   @@ -494,6 +498,8 @@
>            return jk2_env_itoa( env, lb->noWorkerCode);
>        } else if( strcmp( name, "hwBalanceErr") == 0 ) {
>            return jk2_env_itoa( env, lb->hwBalanceErr);
>   +    } else if( strcmp( name, "noErrorHeader") == 0 ) {
>   +        return jk2_env_itoa( env, lb->noErrorHeader);
>        } else if( strcmp( name, "timeout") == 0 ) {
>            return jk2_env_itoa( env, lb_priv->timeout);
>        } else if( strcmp( name, "recovery") == 0 ) {
>   @@ -534,6 +540,8 @@
>            lb->noWorkerCode=atoi( value );
>        } else if( strcmp( name, "hwBalanceErr") == 0 ) {
>            lb->hwBalanceErr=atoi( value );
>   +    } else if( strcmp( name, "noErrorHeader") == 0 ) {
>   +        lb->noErrorHeader=atoi( value );
>        } else if( strcmp( name, "timeout") == 0 ) {
>            lb_priv->timeout=atoi( value );
>        } else if( strcmp( name, "recovery") == 0 ) {
>   @@ -637,10 +645,10 @@
>        w->hwBalanceErr=0;
>        w->noWorkerCode=503;
>        w->noWorkerMsg=NO_WORKER_MSG;
>   -
>   +    /* Let Apache handle the error via ErrorDocument and mod_alias */
>   +    w->noErrorHeader=1;
>        w->workerEnv=env->getByName( env, "workerEnv" );
>        w->workerEnv->addWorker( env, w->workerEnv, w );
>
>        return JK_OK;
>    }
>   -
>
>
>
>   1.35      +6 -2
jakarta-tomcat-connectors/jk/native2/include/jk_worker.h
>
>   Index: jk_worker.h
>   ===================================================================
>   RCS file:
/home/cvs/jakarta-tomcat-connectors/jk/native2/include/jk_worker.h,v
>   retrieving revision 1.34
>   retrieving revision 1.35
>   diff -u -r1.34 -r1.35
>   --- jk_worker.h 24 Feb 2004 08:44:39 -0000 1.34
>   +++ jk_worker.h 27 Feb 2004 08:34:18 -0000 1.35
>   @@ -50,7 +50,6 @@
>       in error state, we move to the next leve.
>    */
>    #define JK_LB_LEVELS 4
>   -#define JK_LB_MAX_WORKERS 256
>
>    /* XXX Separate this in 2 structures: jk_lb.h and jk_ajp.h.
>       Using 'worker' as a generic term is confusing, the objects are very
different.
>   @@ -222,6 +221,11 @@
>         */
>        char *noWorkerMsg;
>        int  noWorkerCode;
>   +
>   +    /* jk2 shouldn't set headers if noErrorHeader (true by default)
>   +     * It will allow Apache 2.0 to handle correctly ErrorDocument
>   +     */
>   +    int  noErrorHeader;
>
>        int workerCnt[JK_LB_LEVELS];
>        jk_worker_t *workerTables[JK_LB_LEVELS][JK_LB_MAX_WORKERS];
>
>
>
>
> ---------------------------------------------------------------------
> 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