Author: mturk
Date: Sat Aug 26 02:32:06 2006
New Revision: 437133

URL: http://svn.apache.org/viewvc?rev=437133&view=rev
Log:
Fix simple_rewrite for the cases where the
rewritten url is larger then the original one.

Modified:
    tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c

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?rev=437133&r1=437132&r2=437133&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c (original)
+++ tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c Sat Aug 26 02:32:06 
2006
@@ -685,7 +685,7 @@
     return TRUE;
 }
 
-static void simple_rewrite(char *uri)
+static int simple_rewrite(char *uri)
 {
     if (rewrite_map) {
         int i;
@@ -696,9 +696,11 @@
                 strcpy(buf, jk_map_value_at(rewrite_map, i));
                 strcat(buf, uri + strlen(src));
                 strcpy(uri, buf);
+                return 1;
             }
         }
     }
+    return 0;
 }
 
 DWORD WINAPI HttpFilterProc(PHTTP_FILTER_CONTEXT pfc,
@@ -746,6 +748,7 @@
         char Host[INTERNET_MAX_URL_LENGTH] = "";
         char Port[INTERNET_MAX_URL_LENGTH] = "";
         char Translate[INTERNET_MAX_URL_LENGTH];
+        char squery[INTERNET_MAX_URL_LENGTH] = "";
         BOOL(WINAPI * GetHeader)
             (struct _HTTP_FILTER_CONTEXT * pfc, LPSTR lpszName,
              LPVOID lpvBuffer, LPDWORD lpdwSize);
@@ -801,6 +804,7 @@
             query = strchr(uri, '?');
             if (query) {
                 *query++ = '\0';
+                strcpy(squery, query);
             }
 
             rc = unescape_url(uri);
@@ -921,15 +925,22 @@
                  *
                  * TODO: Add more advanced regexp rewrite.
                  */
-                simple_rewrite(forwardURI);
-                if (JK_IS_DEBUG_LEVEL(logger))
-                    jk_log(logger, JK_LOG_DEBUG,
-                           "rewriten URI [%s]",
-                           forwardURI);
+                if (JK_IS_DEBUG_LEVEL(logger)) {
+                    char duri[INTERNET_MAX_URL_LENGTH];
+                    strcpy(duri, forwardURI);
+                    if (simple_rewrite(forwardURI)) {
+                        jk_log(logger, JK_LOG_DEBUG,
+                               "rewriten URI [%s]->[%s]",
+                               duri, forwardURI);
+                    }
+                }
+                else {
+                    simple_rewrite(forwardURI);
+                }
 
                 if (!AddHeader(pfc, URI_HEADER_NAME, forwardURI) ||
-                    ((query != NULL && strlen(query) > 0)
-                     ? !AddHeader(pfc, QUERY_HEADER_NAME, query) : FALSE) ||
+                    ((strlen(squery) > 0)
+                     ? !AddHeader(pfc, QUERY_HEADER_NAME, squery) : FALSE) ||
                     !AddHeader(pfc, WORKER_HEADER_NAME, (LPSTR)worker) ||
                     !SetHeader(pfc, "url", extension_uri)) {
                     jk_log(logger, JK_LOG_ERROR,
@@ -963,15 +974,13 @@
                     }
                     memset(ld, 0, sizeof(isapi_log_data_t));
                     strcpy(ld->uri, forwardURI);
-                    if (query && strlen(query) > 0)
-                        strcpy(ld->query, query);
+                    strcpy(ld->query, squery);
                     pfc->pFilterContext = ld;
                 } else {
                     isapi_log_data_t *ld = (isapi_log_data_t 
*)pfc->pFilterContext;
                     memset(ld, 0, sizeof(isapi_log_data_t));
                     strcpy(ld->uri, forwardURI);
-                    if (query && strlen(query) > 0)
-                        strcpy(ld->query, query);
+                    strcpy(ld->query, squery);
                 }
             }
             else {



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

Reply via email to