Author: rjung
Date: Fri Jun 22 09:00:23 2007
New Revision: 549857

URL: http://svn.apache.org/viewvc?view=rev&rev=549857
Log:
Update jk_canonenc and add it to IIS and Netscape.

- Remove unnecessary parts from the Apache reencoding port.
  Those parts will become outdated and keeping them in the source
  suggests they are well maintained.
  Streamline jk_canonenc, in contrary to it's httpd origins,
  we only use it in the reverse proxy case.

- Change the contract for jk_canonenc to make it better suited to
  be used by all web servers:
  - the length parameter now gives the maximum length to use
    for the encoded URL
  - the original URL needs to be '\0'-terminated.
  - We now set a return value, indicating if the new URL got to large

- Add proxy encoding to IIS (new default)
  and netscape (no choice).
- Add jk_url to the IIS build files

- Add forwarding debug logging to IIS and Netscape,
  to make checking the URL reencoding easier.

Modified:
    tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c
    tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c
    tomcat/connectors/trunk/jk/native/common/jk_url.c
    tomcat/connectors/trunk/jk/native/common/jk_url.h
    tomcat/connectors/trunk/jk/native/iis/Makefile.amd64
    tomcat/connectors/trunk/jk/native/iis/Makefile.ia64
    tomcat/connectors/trunk/jk/native/iis/Makefile.x86
    tomcat/connectors/trunk/jk/native/iis/isapi.dsp
    tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c
    tomcat/connectors/trunk/jk/native/netscape/jk_nsapi_plugin.c

Modified: tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c?view=diff&rev=549857&r1=549856&r2=549857
==============================================================================
--- tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c (original)
+++ tomcat/connectors/trunk/jk/native/apache-1.3/mod_jk.c Fri Jun 22 09:00:23 
2007
@@ -612,10 +612,9 @@
         break;
 
     case JK_OPT_FWDURIPROXY:
-        size = strlen(r->uri);
-        s->req_uri = ap_palloc(r->pool, size * 3 + 1);
-        jk_canonenc(s->req_uri, r->uri, size, enc_path, 0,
-                    JK_PROXYREQ_REVERSE);
+        size = 3 * strlen(r->uri) + 1;
+        s->req_uri = ap_palloc(r->pool, size);
+        jk_canonenc(r->uri, s->req_uri, size);
         break;
 
     case JK_OPT_FWDURIESCAPED:

Modified: tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c?view=diff&rev=549857&r1=549856&r2=549857
==============================================================================
--- tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c (original)
+++ tomcat/connectors/trunk/jk/native/apache-2.0/mod_jk.c Fri Jun 22 09:00:23 
2007
@@ -640,10 +640,9 @@
         break;
 
     case JK_OPT_FWDURIPROXY:
-        size = strlen(r->uri);
-        s->req_uri = apr_palloc(r->pool, size * 3 + 1);
-        jk_canonenc(s->req_uri, r->uri, size, enc_path, 0, 
-                    JK_PROXYREQ_REVERSE);
+        size = 3 * strlen(r->uri) + 1;
+        s->req_uri = apr_palloc(r->pool, size);
+        jk_canonenc(r->uri, s->req_uri, size);
         break;
 
     case JK_OPT_FWDURIESCAPED:

Modified: tomcat/connectors/trunk/jk/native/common/jk_url.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_url.c?view=diff&rev=549857&r1=549856&r2=549857
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_url.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_url.c Fri Jun 22 09:00:23 2007
@@ -16,7 +16,7 @@
  */
 
 /***************************************************************************
- * Description: URL manupilation subroutines. (ported from mod_proxy).     *
+ * Description: URL manipulation subroutines. (ported from mod_proxy).     *
  * Version:     $Revision: 531816 $                                        *
  ***************************************************************************/
 
@@ -35,61 +35,6 @@
 #define JK_ISALNUM(x)  isalnum((int)(unsigned char)((x)))
 #endif
 
-/* already called in the knowledge that the characters are hex digits */
-static  int jk_hex2c(const char *x)
-{
-    int i, ch;
-
-#if !CHARSET_EBCDIC
-    ch = x[0];
-    if (JK_ISDIGIT(ch)) {
-        i = ch - '0';
-    }
-    else if (JK_ISUPPER(ch)) {
-        i = ch - ('A' - 10);
-    }
-    else {
-        i = ch - ('a' - 10);
-    }
-    i <<= 4;
-
-    ch = x[1];
-    if (JK_ISDIGIT(ch)) {
-        i += ch - '0';
-    }
-    else if (JK_ISUPPER(ch)) {
-        i += ch - ('A' - 10);
-    }
-    else {
-        i += ch - ('a' - 10);
-    }
-    return i;
-#else /*CHARSET_EBCDIC*/
-    /*
-     * we assume that the hex value refers to an ASCII character
-     * so convert to EBCDIC so that it makes sense locally;
-     *
-     * example:
-     *
-     * client specifies %20 in URL to refer to a space char;
-     * at this point we're called with EBCDIC "20"; after turning
-     * EBCDIC "20" into binary 0x20, we then need to assume that 0x20
-     * represents an ASCII char and convert 0x20 to EBCDIC, yielding
-     * 0x40
-     */
-    char buf[1];
-
-    if (1 == sscanf(x, "%2x", &i)) {
-        buf[0] = i & 0xFF;
-        jk_xlate_from_ascii(buf, 1);
-        return buf[0];
-    }
-    else {
-        return 0;
-    }
-#endif /*CHARSET_EBCDIC*/
-}
-
 static void jk_c2hex(int ch, char *x)
 {
 #if !CHARSET_EBCDIC
@@ -128,91 +73,52 @@
 }
 
 /*
- * canonicalise a URL-encoded string
- */
-
-/*
  * Convert a URL-encoded string to canonical form.
- * It decodes characters which need not be encoded,
- * and encodes those which must be encoded, and does not touch
+ * It encodes those which must be encoded, and does not touch
  * those which must not be touched.
+ * String x must be '\0'-terminated.
+ * String y must be pre-allocated with len maxlen
+ * (including the terminating '\0').
  */
-char * jk_canonenc(char *y, const char *x, int len,
-                                       enum enctype t, int forcedec,
-                                       int proxyreq)
+int jk_canonenc(const char *x, char *y, int maxlen)
 {
-    int i, j, ch;
+    int i, j;
+    int ch = x[0];
     char *allowed;  /* characters which should not be encoded */
     char *reserved; /* characters which much not be en/de-coded */
 
 /*
  * N.B. in addition to :@&=, this allows ';' in an http path
  * and '?' in an ftp path -- this may be revised
- *
- * Also, it makes a '+' character in a search string reserved, as
- * it may be form-encoded. (Although RFC 1738 doesn't allow this -
- * it only permits ; / ? : @ = & as reserved chars.)
  */
-    if (t == enc_path) {
-        allowed = "~$-_.+!*'(),;:@&=";
-    }
-    else if (t == enc_search) {
-        allowed = "$-_.!*'(),;:@&=";
-    }
-    else if (t == enc_user) {
-        allowed = "$-_.+!*'(),;@&=";
-    }
-    else if (t == enc_fpath) {
-        allowed = "$-_.+!*'(),?:@&=";
-    }
-    else {            /* if (t == enc_parm) */
-        allowed = "$-_.+!*'(),?/:@&=";
-    }
-
-    if (t == enc_path) {
-        reserved = "/";
-    }
-    else if (t == enc_search) {
-        reserved = "+";
-    }
-    else {
-        reserved = "";
-    }
-
-    /* y = apr_palloc(p, 3 * len + 1); */
+    allowed = "~$-_.+!*'(),;:@&=";
+    reserved = "/";
 
-    for (i = 0, j = 0; i < len; i++, j++) {
+    for (i = 0, j = 0; ch != '\0' && j < maxlen; i++, j++, ch=x[i]) {
 /* always handle '/' first */
-        ch = x[i];
         if (strchr(reserved, ch)) {
             y[j] = ch;
             continue;
         }
-/*
- * decode it if not already done. do not decode reverse proxied URLs
- * unless specifically forced
- */
-        if ((forcedec || (proxyreq && proxyreq != JK_PROXYREQ_REVERSE)) && ch 
== '%') {
-            if (!JK_ISXDIGIT(x[i + 1]) || !JK_ISXDIGIT(x[i + 2])) {
-                return NULL;
-            }
-            ch = jk_hex2c(&x[i + 1]);
-            i += 2;
-            if (ch != 0 && strchr(reserved, ch)) {  /* keep it encoded */
+/* recode it, if necessary */
+        if (!JK_ISALNUM(ch) && !strchr(allowed, ch)) {
+            if (j+2<maxlen) {
                 jk_c2hex(ch, &y[j]);
                 j += 2;
-                continue;
             }
-        }
-/* recode it, if necessary */
-        if (!JK_ISALNUM(ch) && !strchr(allowed, ch)) {
-            jk_c2hex(ch, &y[j]);
-            j += 2;
+            else {
+                return JK_FALSE;
+            }
         }
         else {
             y[j] = ch;
         }
     }
-    y[j] = '\0';
-    return y;
+    if (j<maxlen) {
+        y[j] = '\0';
+        return JK_TRUE;
+    }
+    else {
+        return JK_FALSE;
+    }
 }

Modified: tomcat/connectors/trunk/jk/native/common/jk_url.h
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_url.h?view=diff&rev=549857&r1=549856&r2=549857
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_url.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_url.h Fri Jun 22 09:00:23 2007
@@ -16,7 +16,7 @@
  */
 
 /***************************************************************************
- * Description: URL manupilation subroutines header file. (mod_proxy)      *
+ * Description: URL manipulation subroutines header file. (mod_proxy)      *
  * Version:     $Revision: 500534 $                                        *
  ***************************************************************************/
 #ifndef _JK_URL_H
@@ -31,22 +31,12 @@
 {
 #endif                          /* __cplusplus */
 
-/* for proxy_canonenc() */
-enum enctype {
-    enc_path, enc_search, enc_user, enc_fpath, enc_parm
-};
-
-#define JK_PROXYREQ_NONE 0         /**< No proxy */
-#define JK_PROXYREQ_PROXY 1        /**< Standard proxy */
-#define JK_PROXYREQ_REVERSE 2      /**< Reverse proxy */
-#define JK_PROXYREQ_RESPONSE 3     /**< Origin response */
-
 /*
- * Do a canonical encoding of the x url y contains the result
- * and should have a size of at least 3 * len + 1 bytes.
+ * Do a canonical encoding of the url x.
+ * String y contains the result and is pre-allocated
+ * for at least maxlen bytes, including a '\0' terminator.
  */
-char * jk_canonenc(char *y, const char *x, int len,
-                   enum enctype t, int forcedec, int proxyreq);
+int jk_canonenc(const char *x, char *y, int maxlen);
 
 #ifdef __cplusplus
 }

Modified: tomcat/connectors/trunk/jk/native/iis/Makefile.amd64
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/Makefile.amd64?view=diff&rev=549857&r1=549856&r2=549857
==============================================================================
--- tomcat/connectors/trunk/jk/native/iis/Makefile.amd64 (original)
+++ tomcat/connectors/trunk/jk/native/iis/Makefile.amd64 Fri Jun 22 09:00:23 
2007
@@ -50,6 +50,7 @@
        [EMAIL PROTECTED] "$(INTDIR)\jk_sockbuf.obj"
        [EMAIL PROTECTED] "$(INTDIR)\jk_status.obj"
        [EMAIL PROTECTED] "$(INTDIR)\jk_uri_worker_map.obj"
+       [EMAIL PROTECTED] "$(INTDIR)\jk_url.obj"
        [EMAIL PROTECTED] "$(INTDIR)\jk_util.obj"
        [EMAIL PROTECTED] "$(INTDIR)\jk_worker.obj"
        [EMAIL PROTECTED] "$(OUTDIR)\isapi_redirect.dll"
@@ -89,6 +90,7 @@
        "$(INTDIR)\jk_sockbuf.obj" \
        "$(INTDIR)\jk_status.obj" \
        "$(INTDIR)\jk_uri_worker_map.obj" \
+       "$(INTDIR)\jk_url.obj" \
        "$(INTDIR)\jk_util.obj" \
        "$(INTDIR)\jk_worker.obj" \
        "$(INTDIR)\isapi_redirect.res" \
@@ -258,6 +260,12 @@
 SOURCE=..\common\jk_uri_worker_map.c
 
 "$(INTDIR)\jk_uri_worker_map.obj" : $(SOURCE) "$(INTDIR)"
+       $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\common\jk_url.c
+
+"$(INTDIR)\jk_url.obj" : $(SOURCE) "$(INTDIR)"
        $(CPP) $(CPP_PROJ) $(SOURCE)
 
 

Modified: tomcat/connectors/trunk/jk/native/iis/Makefile.ia64
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/Makefile.ia64?view=diff&rev=549857&r1=549856&r2=549857
==============================================================================
--- tomcat/connectors/trunk/jk/native/iis/Makefile.ia64 (original)
+++ tomcat/connectors/trunk/jk/native/iis/Makefile.ia64 Fri Jun 22 09:00:23 2007
@@ -50,6 +50,7 @@
        [EMAIL PROTECTED] "$(INTDIR)\jk_sockbuf.obj"
        [EMAIL PROTECTED] "$(INTDIR)\jk_status.obj"
        [EMAIL PROTECTED] "$(INTDIR)\jk_uri_worker_map.obj"
+       [EMAIL PROTECTED] "$(INTDIR)\jk_url.obj"
        [EMAIL PROTECTED] "$(INTDIR)\jk_util.obj"
        [EMAIL PROTECTED] "$(INTDIR)\jk_worker.obj"
        [EMAIL PROTECTED] "$(OUTDIR)\isapi_redirect.dll"
@@ -89,6 +90,7 @@
        "$(INTDIR)\jk_sockbuf.obj" \
        "$(INTDIR)\jk_status.obj" \
        "$(INTDIR)\jk_uri_worker_map.obj" \
+       "$(INTDIR)\jk_url.obj" \
        "$(INTDIR)\jk_util.obj" \
        "$(INTDIR)\jk_worker.obj" \
        "$(INTDIR)\isapi_redirect.res" \
@@ -258,6 +260,12 @@
 SOURCE=..\common\jk_uri_worker_map.c
 
 "$(INTDIR)\jk_uri_worker_map.obj" : $(SOURCE) "$(INTDIR)"
+       $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\common\jk_url.c
+
+"$(INTDIR)\jk_url.obj" : $(SOURCE) "$(INTDIR)"
        $(CPP) $(CPP_PROJ) $(SOURCE)
 
 

Modified: tomcat/connectors/trunk/jk/native/iis/Makefile.x86
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/Makefile.x86?view=diff&rev=549857&r1=549856&r2=549857
==============================================================================
--- tomcat/connectors/trunk/jk/native/iis/Makefile.x86 (original)
+++ tomcat/connectors/trunk/jk/native/iis/Makefile.x86 Fri Jun 22 09:00:23 2007
@@ -45,6 +45,7 @@
        [EMAIL PROTECTED] "$(INTDIR)\jk_sockbuf.obj"
        [EMAIL PROTECTED] "$(INTDIR)\jk_status.obj"
        [EMAIL PROTECTED] "$(INTDIR)\jk_uri_worker_map.obj"
+       [EMAIL PROTECTED] "$(INTDIR)\jk_url.obj"
        [EMAIL PROTECTED] "$(INTDIR)\jk_util.obj"
        [EMAIL PROTECTED] "$(INTDIR)\jk_worker.obj"
        [EMAIL PROTECTED] "$(OUTDIR)\isapi_redirect.dll"
@@ -84,6 +85,7 @@
        "$(INTDIR)\jk_sockbuf.obj" \
        "$(INTDIR)\jk_status.obj" \
        "$(INTDIR)\jk_uri_worker_map.obj" \
+       "$(INTDIR)\jk_url.obj" \
        "$(INTDIR)\jk_util.obj" \
        "$(INTDIR)\jk_worker.obj" \
        "$(INTDIR)\isapi_redirect.res" \
@@ -251,6 +253,12 @@
 SOURCE=..\common\jk_uri_worker_map.c
 
 "$(INTDIR)\jk_uri_worker_map.obj" : $(SOURCE) "$(INTDIR)"
+       $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+SOURCE=..\common\jk_url.c
+
+"$(INTDIR)\jk_url.obj" : $(SOURCE) "$(INTDIR)"
        $(CPP) $(CPP_PROJ) $(SOURCE)
 
 

Modified: tomcat/connectors/trunk/jk/native/iis/isapi.dsp
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/isapi.dsp?view=diff&rev=549857&r1=549856&r2=549857
==============================================================================
--- tomcat/connectors/trunk/jk/native/iis/isapi.dsp (original)
+++ tomcat/connectors/trunk/jk/native/iis/isapi.dsp Fri Jun 22 09:00:23 2007
@@ -176,6 +176,10 @@
 # End Source File
 # Begin Source File
 
+SOURCE=..\common\jk_url.c
+# End Source File
+# Begin Source File
+
 SOURCE=..\common\jk_util.c
 # End Source File
 # Begin Source File
@@ -273,6 +277,10 @@
 # Begin Source File
 
 SOURCE=..\common\jk_uri_worker_map.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\common\jk_url.h
 # End Source File
 # Begin Source File
 

Modified: tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c?view=diff&rev=549857&r1=549856&r2=549857
==============================================================================
--- tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c (original)
+++ tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c Fri Jun 22 09:00:23 
2007
@@ -32,6 +32,7 @@
 #include <wininet.h>
 
 #include "jk_global.h"
+#include "jk_url.h"
 #include "jk_util.h"
 #include "jk_map.h"
 #include "jk_pool.h"
@@ -94,6 +95,7 @@
 #define URI_SELECT_PARSED_VERB      ("parsed")
 #define URI_SELECT_UNPARSED_VERB    ("unparsed")
 #define URI_SELECT_ESCAPED_VERB     ("escaped")
+#define URI_SELECT_PROXY_VERB       ("proxy")
 #define URI_REWRITE_TAG             ("rewrite_rule_file")
 #define SHM_SIZE_TAG                ("shm_size")
 #define WORKER_MOUNT_RELOAD_TAG     ("worker_mount_reload")
@@ -135,6 +137,7 @@
                                 "Please try again later.</P></BODY></HTML>";
 
 
+#define STRNULL_FOR_NULL(x) ((x) ? (x) : "(null)")
 #define JK_TOLOWER(x)   ((char)tolower((BYTE)(x)))
 
 #define GET_SERVER_VARIABLE_VALUE(name, place)          \
@@ -195,8 +198,9 @@
 #define URI_SELECT_OPT_PARSED       0
 #define URI_SELECT_OPT_UNPARSED     1
 #define URI_SELECT_OPT_ESCAPED      2
+#define URI_SELECT_OPT_PROXY        3
 
-static int uri_select_option = URI_SELECT_OPT_PARSED;
+static int uri_select_option = URI_SELECT_OPT_PROXY;
 
 static jk_worker_env_t worker_env;
 
@@ -1316,6 +1320,21 @@
                                snuri);
                     forwardURI = snuri;
                 }
+                else if (uri_select_option == URI_SELECT_OPT_PROXY) {
+                    if (!jk_canonenc(uri, snuri, INTERNET_MAX_URL_LENGTH)) {
+                        jk_log(logger, JK_LOG_ERROR,
+                               "[%s] re-encoding request exceeds maximum 
buffer size.",
+                               uri);
+                        write_error_response(pfc, "400 Bad Request",
+                                             HTML_ERROR_400);
+                        return SF_STATUS_REQ_FINISHED;
+                    }
+                    if (JK_IS_DEBUG_LEVEL(logger))
+                        jk_log(logger, JK_LOG_DEBUG,
+                               "fowarding escaped URI [%s]",
+                               snuri);
+                    forwardURI = snuri;
+                }
                 else {
                     forwardURI = uri;
                 }
@@ -1775,6 +1794,10 @@
         return URI_SELECT_OPT_ESCAPED;
     }
 
+    if (0 == strcasecmp(uri_select, URI_SELECT_PROXY_VERB)) {
+        return URI_SELECT_OPT_PROXY;
+    }
+
     return -1;
 }
 
@@ -2180,6 +2203,23 @@
     }
     else {
         return JK_FALSE;
+    }
+
+    /* Dump all connection param so we can trace what's going to
+     * the remote tomcat
+     */
+    if (JK_IS_DEBUG_LEVEL(logger)) {
+        jk_log(logger, JK_LOG_DEBUG,
+               "Service protocol=%s method=%s host=%s addr=%s name=%s port=%d 
auth=%s user=%s uri=%s",
+               STRNULL_FOR_NULL(s->protocol),
+               STRNULL_FOR_NULL(s->method),
+               STRNULL_FOR_NULL(s->remote_host),
+               STRNULL_FOR_NULL(s->remote_addr),
+               STRNULL_FOR_NULL(s->server_name),
+               s->server_port,
+               STRNULL_FOR_NULL(s->auth_type),
+               STRNULL_FOR_NULL(s->remote_user),
+               STRNULL_FOR_NULL(s->req_uri));
     }
 
     return JK_TRUE;

Modified: tomcat/connectors/trunk/jk/native/netscape/jk_nsapi_plugin.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/netscape/jk_nsapi_plugin.c?view=diff&rev=549857&r1=549856&r2=549857
==============================================================================
--- tomcat/connectors/trunk/jk/native/netscape/jk_nsapi_plugin.c (original)
+++ tomcat/connectors/trunk/jk/native/netscape/jk_nsapi_plugin.c Fri Jun 22 
09:00:23 2007
@@ -34,6 +34,8 @@
 #define URI_PATTERN "path"
 #define DEFAULT_WORKER_NAME ("ajp13")
 
+#define STRNULL_FOR_NULL(x) ((x) ? (x) : "(null)")
+
 struct nsapi_private_data
 {
     jk_pool_t p;
@@ -410,7 +412,11 @@
     s->remote_host = session_dns(private_data->sn);
     s->remote_addr = pblock_findval("ip", private_data->sn->client);
 
-    s->req_uri = pblock_findval("uri", private_data->rq->reqpb);
+    tmp = pblock_findval("uri", private_data->rq->reqpb);
+    size = 3 * strlen(tmp) + 1;
+    s->req_uri = jk_pool_alloc(s->pool, size);
+    jk_canonenc(tmp, s->req_uri, size);
+
     s->query_string = pblock_findval("query", private_data->rq->reqpb);
 
     s->server_name = server_hostname;
@@ -466,7 +472,27 @@
         s->ssl_session = NULL;
     }
 
-    return setup_http_headers(private_data, s);
+    rc = setup_http_headers(private_data, s);
+
+    /* Dump all connection param so we can trace what's going to
+     * the remote tomcat
+     */
+    if (JK_IS_DEBUG_LEVEL(logger)) {
+        jk_log(logger, JK_LOG_DEBUG,
+               "Service protocol=%s method=%s host=%s addr=%s name=%s port=%d 
auth=%s user=%s uri=%s",
+               STRNULL_FOR_NULL(s->protocol),
+               STRNULL_FOR_NULL(s->method),
+               STRNULL_FOR_NULL(s->remote_host),
+               STRNULL_FOR_NULL(s->remote_addr),
+               STRNULL_FOR_NULL(s->server_name),
+               s->server_port,
+               STRNULL_FOR_NULL(s->auth_type),
+               STRNULL_FOR_NULL(s->remote_user),
+               STRNULL_FOR_NULL(s->req_uri));
+    }
+
+    return rc;
+
 }
 
 static int setup_http_headers(nsapi_private_data_t * private_data,



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to