Hi,

If I'm not mistaken, the default for 3.3 should be JK_OPT_FWDURICOMPAT
with re-escaping the URI for getRequestURI() being done in the facade.
Consistent with
this, I updated jk_isapi_plugin.c to un-escape the URI.

Is this still the plan?

Larry

-----Original Message-----
From: [EMAIL PROTECTED]
To: [EMAIL PROTECTED]
Sent: 10/1/01 5:27 PM
Subject: cvs commit: jakarta-tomcat/src/native/mod_jk/common jk_global.h

hgomez      01/10/01 14:27:29

  Modified:    src/native/mod_jk/apache1.3 mod_jk.c
               src/native/mod_jk/common jk_global.h
  Log:
  Updated code to handle getRequestURI()
  with compatibility mode for old TC and
  new schema (by default) for TC 3.3

  Revision  Changes    Path
  1.20      +70 -5
jakarta-tomcat/src/native/mod_jk/apache1.3/mod_jk.c

  Index: mod_jk.c
  ===================================================================
  RCS file:
/home/cvs/jakarta-tomcat/src/native/mod_jk/apache1.3/mod_jk.c,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- mod_jk.c 2001/09/28 09:55:14 1.19
  +++ mod_jk.c 2001/10/01 21:27:29 1.20
  @@ -443,9 +443,42 @@
        * HttpServletRequest.getRequestURI() should remain encoded.
        * [http://java.sun.com/products/servlet/errata_042700.html]
        *
  +     * We use JkOptions to determine which method to be used
  +     *
  +     * ap_escape_uri is the latest recommanded but require
  +     *               some java decoding (in TC 3.3 rc2)
  +     *
  +     * unparsed_uri is used for strict compliance with spec and
  +     *              old Tomcat (3.2.3 for example)
  +     *
  +     * uri is use for compatibilty with mod_rewrite with old Tomcats
        */
  -    s->req_uri      = ap_escape_uri(r->pool, r->uri);

  +    switch (conf->options & JK_OPT_FWDURIMASK) {
  +
  +        case JK_OPT_FWDURICOMPATUNPARSED :
  +            s->req_uri      = r->unparsed_uri;
  +            if (s->req_uri != NULL) {
  +                char *query_str = strchr(s->req_uri, '?');
  +                if (query_str != NULL) {
  +                    *query_str = 0;
  +                }
  +            }
  +
  +        break;
  +
  +        case JK_OPT_FWDURICOMPAT :
  +            s->req_uri = r->uri;
  +        break;
  +
  +        case JK_OPT_FWDURIESCAPED :
  +            s->req_uri      = ap_escape_uri(r->pool, r->uri);
  +        break;
  +
  +        default :
  +            return JK_FALSE;
  +    }
  +
       s->is_ssl       = JK_FALSE;
       s->ssl_cert     = NULL;
       s->ssl_cert_len = 0;
  @@ -735,11 +768,23 @@
   }


  +/*
  + * JkOptions Directive Handling
  + *
  + *
  + * +ForwardSSLKeySize        => Forward SSL Key Size, to follow 2.3
specs but may broke old TC 3.2
  + * -ForwardSSLKeySize        => Don't Forward SSL Key Size, will make
mod_jk works with all TC release
  + *  ForwardURICompat         => Forward URI normally, less spec
compliant but mod_rewrite compatible (old TC)
  + *  ForwardURICompatUnparsed => Forward URI as unparsed, spec
compliant but broke mod_rewrite (old TC)
  + *  ForwardURIEscaped        => Forward URI escaped and Tomcat (3.3
rc2) stuff will do the decoding part
  + */
  +
   const char *jk_set_options(cmd_parms *cmd,
                              void *dummy,
                              const char *line)
   {
       int  opt = 0;
  +    int  mask = 0;
       char action;
       char *w;

  @@ -754,12 +799,29 @@
           if (*w == '+' || *w == '-') {
               action = *(w++);
           }
  +
  +        mask = 0;

  -        if (!strcasecmp(w, "ForwardKeySize"))
  +        if (!strcasecmp(w, "ForwardKeySize")) {
               opt = JK_OPT_FWDKEYSIZE;
  +        }
  +        else if (!strcasecmp(w, "ForwardURICompat")) {
  +            opt = JK_OPT_FWDURICOMPAT;
  +            mask = JK_OPT_FWDURIMASK;
  +        }
  +        else if (!strcasecmp(w, "ForwardURICompatUnparsed")) {
  +            opt = JK_OPT_FWDURICOMPATUNPARSED;
  +            mask = JK_OPT_FWDURIMASK;
  +        }
  +        else if (!strcasecmp(w, "ForwardURIEscaped")) {
  +            opt = JK_OPT_FWDURIESCAPED;
  +            mask = JK_OPT_FWDURIMASK;
  +        }
           else
               return ap_pstrcat(cmd->pool, "JkOptions: Illegal option
'", w, "'", NULL);

  +        conf->options &= ~mask;
  +
           if (action == '-') {
               conf->options &= ~opt;
           }
  @@ -858,8 +920,11 @@
       /*
        * Options to tune mod_jk configuration
        * for now we understand :
  -     * +ForwardSSLKeySize => Forward SSL Key Size, to follow 2.3
specs but may broke old TC 3.2
  -     * -ForwardSSLKeySize => Don't Forward SSL Key Size, will make
mod_jk works with all TC release
  +     * +ForwardSSLKeySize        => Forward SSL Key Size, to follow
2.3 specs but may broke old TC 3.2
  +     * -ForwardSSLKeySize        => Don't Forward SSL Key Size, will
make mod_jk works with all TC release
  +     *  ForwardURICompat         => Forward URI normally, less spec
compliant but mod_rewrite compatible (old TC)
  +     *  ForwardURICompatUnparsed => Forward URI as unparsed, spec
compliant but broke mod_rewrite (old TC)
  +     *  ForwardURIEscaped        => Forward URI escaped and Tomcat
(3.3 rc2) stuff will do the decoding part
        */
       {"JkOptions", jk_set_options, NULL, RSRC_CONF, RAW_ARGS,
        "Set one of more options to configure the mod_jk module"},
  @@ -970,7 +1035,7 @@
       /*
        * No options by default
        */
  -    c->options     = 0;
  +    c->options     = JK_OPT_FWDURIDEFAULT;

       /*
        * By default we will try to gather SSL info.



  1.7       +10 -2
jakarta-tomcat/src/native/mod_jk/common/jk_global.h

  Index: jk_global.h
  ===================================================================
  RCS file:
/home/cvs/jakarta-tomcat/src/native/mod_jk/common/jk_global.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- jk_global.h 2001/09/28 09:55:14 1.6
  +++ jk_global.h 2001/10/01 21:27:29 1.7
  @@ -57,7 +57,7 @@
    * Description: Global definitions and include files that should
exist     *
    *              anywhere
*
    * Author:      Gal Shachor <[EMAIL PROTECTED]>
*
  - * Version:     $Revision: 1.6 $
*
  + * Version:     $Revision: 1.7 $
*

************************************************************************
***/

   #ifndef JK_GLOBAL_H
  @@ -151,7 +151,15 @@
    * JK options
    */

  -#define JK_OPT_FWDKEYSIZE  0x0002
  +#define JK_OPT_FWDURIMASK           0x0003
  +
  +#define JK_OPT_FWDURICOMPAT         0x0001
  +#define JK_OPT_FWDURICOMPATUNPARSED 0x0002
  +#define JK_OPT_FWDURIESCAPED        0x0003
  +
  +#define JK_OPT_FWDURIDEFAULT        JK_OPT_FWDURIESCAPED
  +
  +#define JK_OPT_FWDKEYSIZE           0x0004

   #ifdef __cplusplus
   }





Reply via email to