summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/connections.c2
-rw-r--r--src/reqpool.c28
-rw-r--r--src/reqpool.h3
-rw-r--r--src/server.c3
4 files changed, 5 insertions, 31 deletions
diff --git a/src/connections.c b/src/connections.c
index 39e5aa53..a551b8e9 100644
--- a/src/connections.c
+++ b/src/connections.c
@@ -57,8 +57,6 @@ static connection *connections_get_new_connection(server *srv) {
else {
con = connection_init(srv);
connection_reset(con);
- if (srv->srvconf.h2proto)
- request_pool_extend(srv, 8);
}
/*con->prev = NULL;*//*(already set)*/
if ((con->next = srv->conns))
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));
diff --git a/src/reqpool.h b/src/reqpool.h
index ac2e83b8..ef1d395f 100644
--- a/src/reqpool.h
+++ b/src/reqpool.h
@@ -23,9 +23,6 @@ __attribute_cold__
void request_free_data (request_st *r);
__attribute_cold__
-void request_pool_extend (server *srv, uint32_t sz);
-
-__attribute_cold__
void request_pool_free (void);
#endif
diff --git a/src/server.c b/src/server.c
index bcdc3545..4174ce77 100644
--- a/src/server.c
+++ b/src/server.c
@@ -1882,6 +1882,9 @@ static void server_handle_sigalrm (server * const srv, unix_time64_t mono_ts, un
if (0 == (mono_ts & 0x3f)) { /*(once every 64 secs)*/
/* free excess chunkqueue buffers every 64 secs */
chunkqueue_chunk_pool_clear();
+ /* clear request and connection pools every 64 secs */
+ request_pool_free();
+ connections_pool_clear(srv);
/* attempt to restart dead piped loggers every 64 secs */
if (0 == srv->srvconf.max_worker)
fdevent_restart_logger_pipes(mono_ts);