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]
