fielding 97/05/12 20:44:25
Modified: src CHANGES http_main.c
Log:
If a soft_timeout occurs after keepalive is set, then the main child
loop would try to read another request even though the connection
has been aborted.
Reviewed by: Randy Terbush, Dean Gaudet, Chuck Murcko
Revision Changes Path
1.273 +5 -1 apache/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apache/src/CHANGES,v
retrieving revision 1.272
retrieving revision 1.273
diff -C3 -r1.272 -r1.273
*** CHANGES 1997/05/13 00:20:29 1.272
--- CHANGES 1997/05/13 03:44:22 1.273
***************
*** 1,11 ****
Changes with Apache 1.2
*) Configure changes: Allow for whitespace at the start of a
Module declaration. Also, be more understanding about the
CC=/OPTIM= format in Configuration. Finally, fix compiler
flags if using HP-UX's cc compiler. [Jim Jagielski]
! *) Subrequests and internal redirect now inherit the_request from the
original request-line. [Roy Fielding]
*) Test for error conditions before creating output header fields, since
--- 1,15 ----
Changes with Apache 1.2
+ *) If a soft_timeout occurs after keepalive is set, then the main child
+ loop would try to read another request even though the connection
+ has been aborted. [Roy Fielding]
+
*) Configure changes: Allow for whitespace at the start of a
Module declaration. Also, be more understanding about the
CC=/OPTIM= format in Configuration. Finally, fix compiler
flags if using HP-UX's cc compiler. [Jim Jagielski]
! *) Subrequests and internal redirects now inherit the_request from the
original request-line. [Roy Fielding]
*) Test for error conditions before creating output header fields, since
1.144 +5 -6 apache/src/http_main.c
Index: http_main.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_main.c,v
retrieving revision 1.143
retrieving revision 1.144
diff -C3 -r1.143 -r1.144
*** http_main.c 1997/05/08 07:57:44 1.143
--- http_main.c 1997/05/13 03:44:23 1.144
***************
*** 1861,1868 ****
* until no requests are left or we decide to close.
*/
! for (;;) {
! r = read_request(current_conn);
/* ok we've read the request... it's a little too late
* to do a graceful restart, so ignore them for now.
--- 1861,1867 ----
* until no requests are left or we decide to close.
*/
! while ((r = read_request(current_conn)) != NULL) {
/* ok we've read the request... it's a little too late
* to do a graceful restart, so ignore them for now.
***************
*** 1871,1881 ****
(void)update_child_status(child_num, SERVER_BUSY_WRITE, r);
! if (r) process_request(r); /* else premature EOF --- ignore */
#if defined(STATUS)
! if (r) increment_counts(child_num, r);
#endif
! if (!r || !current_conn->keepalive)
break;
destroy_pool(r->pool);
--- 1870,1880 ----
(void)update_child_status(child_num, SERVER_BUSY_WRITE, r);
! process_request(r);
#if defined(STATUS)
! increment_counts(child_num, r);
#endif
! if (!current_conn->keepalive || current_conn->aborted)
break;
destroy_pool(r->pool);
***************
*** 2468,2474 ****
r = read_request (conn);
if (r) process_request (r); /* else premature EOF (ignore) */
! while (r && conn->keepalive) {
destroy_pool(r->pool);
r = read_request (conn);
if (r) process_request (r);
--- 2467,2473 ----
r = read_request (conn);
if (r) process_request (r); /* else premature EOF (ignore) */
! while (r && conn->keepalive && !conn->aborted) {
destroy_pool(r->pool);
r = read_request (conn);
if (r) process_request (r);