DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13274>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13274

Subsequent requests are destroyed by the request exceeding 2048 bytes

           Summary: Subsequent requests are destroyed by the request
                    exceeding 2048 bytes
           Product: Apache httpd-1.3
           Version: HEAD
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Critical
          Priority: Other
         Component: mod_rewrite
        AssignedTo: [email protected]
        ReportedBy: [EMAIL PROTECTED]


I am sorry to be poor English.

In the site which used external rewrite_map,
subsequent requests are destroyed by the request exceeding 2048 bytes.

URL-A : http://foo/...exceed..2048bytes/ (length: 2056bytes)
URL-A1: http://foo/...exceed..20 (length: 2048bytes)
URL-A2: 48bytes/ (length: 8bytes)
URL-B : http://bar/cgi-bin/bar.cgi (length: 26bytes)
URL-C : http://foobar/cgi-bin/barf.cgi (length: 30bytes)

client                httpd              rewrite_map
  |                     |                     |
  |One client           |                     |
  |access URL-A         |                     |
  |--------------->     |                     |
  |                     |send URL-A by pipe   |
  |                     |------------------>  |
  |                     |                     |
  |                     | return URL-A by pipe|
  |                     |  <------------------|
  |               read from pipe              |
  |               maximum 2048 bytes          |
  |                     |                     |
  |  return URL-A1      |                     |
  |  <------------------|                     |
  |                     |                     |
  |Another client1      |                     |
  |access URL-B         |                     |
  |--------------->     |                     |
  |                     |send URL-B by pipe   |
  |                     |------------------>  |
  |                     |                     |
  |                     | return URL-B by pipe|
  |                     |  <------------------|
  |                     |                     |
  |               read from pipe              |
  |               maximum 2048 bytes          |
  |                     |                     |
  |  !!!return URL-A2   |                     |
  |  <------------------|                     |
  |                     |                     |
  |                     |                     |
  |Another client2      |                     |
  |access URL-C         |                     |
  |--------------->     |                     |
  |                     |                     |
  |                 -- SNIP --                |
  |                     |                     |
  |  !!!return URL-B    |                     |
  |  <------------------|                     |
  |                     |                     |

======================================================================
A easy patch for Apache 1.3.26 is appended to the following.
======================================================================
*** mod_rewrite.c.org   Thu May 30 02:39:23 2002
--- mod_rewrite.c       Fri Oct  4 12:28:44 2002
***************
*** 2896,2901 ****
--- 2896,2902 ----
      char buf[LONG_STRING_LEN];
      char c;
      int i;
+       int found_lf = 0;
  #ifndef NO_WRITEV
      struct iovec iov[2];
  #endif
***************
*** 2928,2938 ****
--- 2929,2950 ----
      i = 0;
      while (read(fpout, &c, 1) == 1 && (i < LONG_STRING_LEN-1)) {
          if (c == '\n') {
+                       found_lf = 1;
              break;
          }
          buf[i++] = c;
      }
      buf[i] = '\0';
+ 
+       /* skip next lf */
+       if( found_lf == 0 ){
+               rewritelog(r, 5, "this request exceeded %ld bytes: cut[%s]", 
LONG_STRING_LEN, buf );
+               while (read(fpout, &c, 1) == 1) {
+                       if (c == '\n') {
+                               break;
+                       }
+               }
+       }
  
      /* give the lock back */
      rewritelock_free(r);
======================================================================

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

Reply via email to