You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by ma...@apache.org on 2004/03/09 18:33:15 UTC

cvs commit: httpd-2.0/modules/mappers mod_rewrite.c

madhum      2004/03/09 09:33:15

  Modified:    modules/mappers mod_rewrite.c
  Log:
  Enable mod_rewrite to recognize SSL variables (using ssl_var_lookup)
  
  Submitted by: Joe Orton
  Reviewed by: Madhusudan Mathihalli
  
  Revision  Changes    Path
  1.253     +19 -0     httpd-2.0/modules/mappers/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===================================================================
  RCS file: /home/cvs/httpd-2.0/modules/mappers/mod_rewrite.c,v
  retrieving revision 1.252
  retrieving revision 1.253
  diff -u -r1.252 -r1.253
  --- mod_rewrite.c	9 Feb 2004 20:29:20 -0000	1.252
  +++ mod_rewrite.c	9 Mar 2004 17:33:15 -0000	1.253
  @@ -89,6 +89,8 @@
   #include "http_protocol.h"
   #include "http_vhost.h"
   
  +#include "mod_ssl.h"
  +
   #include "mod_rewrite.h"
   
   #if !defined(OS2) && !defined(WIN32) && !defined(BEOS)  && !defined(NETWARE)
  @@ -380,6 +382,9 @@
   static apr_global_mutex_t *rewrite_log_lock = NULL;
   #endif
   
  +/* Optional functions imported from mod_ssl when loaded: */
  +static APR_OPTIONAL_FN_TYPE(ssl_var_lookup) *rewrite_ssl_lookup = NULL;
  +static APR_OPTIONAL_FN_TYPE(ssl_is_https) *rewrite_is_https = NULL;
   
   /*
    * +-------------------------------------------------------+
  @@ -1610,6 +1615,10 @@
                   result = getenv(var);
               }
           }
  +        else if (var[4] && !strncasecmp(var, "SSL", 3) && rewrite_ssl_lookup) {
  +            result = rewrite_ssl_lookup(r->pool, r->server, r->connection, r,
  +                                        var + 4);
  +        }
       }
       else if (var[4] == ':') {
           if (var[5]) {
  @@ -1693,6 +1702,13 @@
                   return (char *)result;
               }
               break;
  +            
  +        case  5:
  +            if (!strcmp(var, "HTTPS")) {
  +                int flag = rewrite_is_https && rewrite_is_https(r->connection);
  +                return apr_pstrdup(r->pool, flag ? "on" : "off");
  +            }
  +            break;
   
           case  8:
               switch (var[6]) {
  @@ -3995,6 +4011,9 @@
               }
           }
       }
  +
  +    rewrite_ssl_lookup = APR_RETRIEVE_OPTIONAL_FN(ssl_var_lookup);
  +    rewrite_is_https = APR_RETRIEVE_OPTIONAL_FN(ssl_is_https);
   
       return OK;
   }