You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Randy Terbush <ra...@zyzzyva.com> on 1997/03/07 01:02:54 UTC
resources not getting freed
In http_main.c:1775
In the child_main() loop:
Why do we break if the connection is !current_conn->keepalive?
destroy_pool() does not seem to get called in this case.
/*
* Read and process each request found on our connection
* until no requests are left or we decide to close.
*/
for (;;) {
r = read_request(current_conn);
(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,1);
#endif
if (!r || !current_conn->keepalive)
break;
destroy_pool(r->pool);
(void)update_child_status(child_num, SERVER_BUSY_KEEPALIVE,
(request_rec*)NULL);
sync_scoreboard_image();
if (scoreboard_image->global.exit_generation >= generation) {
bclose(conn_io);
bclose(conn_io);
exit(0);
}
}
Re: resources not getting freed
Posted by Dean Gaudet <dg...@arctic.org>.
Yeah but a clear_pool() is performed on the parent of the r->pool next
time through at the top of the child_main loop.
Dean
On Thu, 6 Mar 1997, Randy Terbush wrote:
> In http_main.c:1775
>
> In the child_main() loop:
>
> Why do we break if the connection is !current_conn->keepalive?
>
> destroy_pool() does not seem to get called in this case.
>
>
> /*
> * Read and process each request found on our connection
> * until no requests are left or we decide to close.
> */
>
> for (;;) {
> r = read_request(current_conn);
> (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,1);
> #endif
> if (!r || !current_conn->keepalive)
> break;
>
> destroy_pool(r->pool);
> (void)update_child_status(child_num, SERVER_BUSY_KEEPALIVE,
> (request_rec*)NULL);
>
> sync_scoreboard_image();
> if (scoreboard_image->global.exit_generation >= generation) {
> bclose(conn_io);
> bclose(conn_io);
> exit(0);
> }
> }
>
>
>