diff options
author | Glenn Strauss <gstrauss@gluelogic.com> | 2021-07-29 02:32:08 -0400 |
---|---|---|
committer | Glenn Strauss <gstrauss@gluelogic.com> | 2021-09-08 15:06:06 -0400 |
commit | 62a9d5b78fa84c56397b673b5cf42abaf78ba6c8 (patch) | |
tree | 60b3d977954350ccd433474814164d1da00aa9d5 /src/reqpool.c | |
parent | 323e03fb2d0016d2ecf52d51ac7eb21f16f9e222 (diff) | |
download | lighttpd-git-62a9d5b78fa84c56397b673b5cf42abaf78ba6c8.tar.gz |
[core] clear request,connection pools every 64 sec (#3084)
x-ref:
"Memory fragmentation with HTTP/2 enabled"
https://redmine.lighttpd.net/issues/3084
Diffstat (limited to 'src/reqpool.c')
-rw-r--r-- | src/reqpool.c | 28 |
1 files changed, 2 insertions, 26 deletions
diff --git a/src/reqpool.c b/src/reqpool.c index b634edeb..4c76bf97 100644 --- a/src/reqpool.c +++ b/src/reqpool.c @@ -232,21 +232,6 @@ request_free_data (request_st * const r) /* linked list of (request_st *) cached for reuse */ static request_st *reqpool; -/* max num of (request_st *) to cache */ -static uint32_t reqspace; - - -void -request_pool_extend (server *srv, const uint32_t sz) -{ - for (uint32_t i = 0; i < sz; ++i) { - request_st * const x = calloc(1, sizeof(request_st)); - force_assert(x); - request_init_data(x, NULL, srv); - x->con = (connection *)reqpool; /*(reuse r->con as next ptr)*/ - reqpool = x; - } -} void @@ -257,7 +242,6 @@ request_pool_free (void) reqpool = (request_st *)r->con; /*(reuse r->con as next ptr)*/ request_free_data(r); free(r); - ++reqspace; } } @@ -279,15 +263,8 @@ request_release (request_st * const r) request_reset_ex(r); r->state = CON_STATE_CONNECT; - if (reqspace) { - --reqspace; - r->con = (connection *)reqpool; /*(reuse r->con as next ptr)*/ - reqpool = r; - } - else { - request_free_data(r); - free(r); - } + r->con = (connection *)reqpool; /*(reuse r->con as next ptr)*/ + reqpool = r; } @@ -297,7 +274,6 @@ request_acquire (connection * const con) request_st *r = reqpool; if (r) { reqpool = (request_st *)r->con; /*(reuse r->con as next ptr)*/ - ++reqspace; } else { r = calloc(1, sizeof(request_st)); |