I sent a patch in last night that I don't think would have been accepted for the 
simple reason I have not followed the patch guidelines.

I apologize for that.

I'm currently looking at mod_webapp as I'm trying to write a JSP application with 
Tomcat under Debian Linux (i386 - bleeding edge unstable).

The problem appears to be that there are atleast two different options for 
SSL..ApacheSSL and mod_ssl.  Unfortunately, mod_webapp seems to have been developed 
using mod_ssl as the reference.  Essentially there are settings that mod_ssl makes in 
the r->ctx when it sets up for handling the request.

The only way that I've successfully been able to get mod_webapp to pass the correct 
scheme and SSL values is to do the following:

cvs server: Diffing .
Index: mod_webapp.c
===================================================================
RCS file: /home/cvspublic/jakarta-tomcat-connectors/webapp/apache-1.3/mod_webapp.c,v
retrieving revision 1.29
diff -u -r1.29 mod_webapp.c
--- mod_webapp.c        1 Nov 2001 22:20:51 -0000       1.29
+++ mod_webapp.c        3 Jan 2002 16:56:33 -0000
@@ -439,6 +439,9 @@
         return(HTTP_INTERNAL_SERVER_ERROR);
     }
 
+    ap_add_cgi_vars(r);
+    ap_add_common_vars(r);
+
     /* Set up the WebApp Library request structure client and server host
        data (from the connection */
     stmp=(char *)r->hostname;
@@ -457,7 +460,6 @@
     req->ruri=apr_pstrdup(req->pool,r->uri);
     req->args=apr_pstrdup(req->pool,r->args);
     req->prot=apr_pstrdup(req->pool,r->protocol);
-    req->schm=apr_pstrdup(req->pool,ap_http_method(r));
     req->user=apr_pstrdup(req->pool,con->user);
     req->auth=apr_pstrdup(req->pool,con->ap_auth_type);
     req->clen=0;
@@ -467,6 +469,7 @@
     /* SSL logic */
     ssl_temp = (char *)ap_table_get(r->subprocess_env,"HTTPS");
     if ( ssl_temp && !strcasecmp(ssl_temp, "on")) {
+        req->schm=apr_pstrdup(req->pool,"https");
         req->ssld=(wa_ssldata *) apr_palloc(req->pool,sizeof(wa_ssldata));
 
         req->ssld->ciph = (char *)ap_table_get(
@@ -484,6 +487,7 @@
         req->ssld->cert = (char *)ap_table_get(
             r->subprocess_env,"SSL_CLIENT_CERT");
     } else {
+        req->schm=apr_pstrdup(req->pool,"http");
         req->ssld=NULL;
     }
 
==============================================================================================
if someone could please do a code review on this for me and tell me if this is the 
correct way to perform this operation I would really appreciate it.

This could looks like it would also have to be added to the apache-2.0 module as well.

Reply via email to