httpd-bugs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 13274] New: - Subsequent requests are destroyed by the request exceeding 2048 bytes
Date Fri, 04 Oct 2002 04:57:47 GMT
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: bugs@httpd.apache.org
        ReportedBy: ikeno@infoscience.co.jp


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: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


Mime
View raw message