diff --git a/include/proto/applet.h b/include/proto/applet.h
index 62612b5..b4e9396 100644
--- a/include/proto/applet.h
+++ b/include/proto/applet.h
@@ -25,12 +25,13 @@
 #include <stdlib.h>
 
 #include <common/config.h>
+#include <common/memory.h>
 #include <common/mini-clist.h>
 #include <types/applet.h>
-#include <proto/connection.h>
 #include <proto/task.h>
 
 extern unsigned int nb_applets;
+extern struct pool_head *pool_head_appctx;
 
 struct task *task_run_applet(struct task *t, void *context, unsigned short state);
 
@@ -56,21 +57,20 @@
 
 /* Tries to allocate a new appctx and initialize its main fields. The appctx
  * is returned on success, NULL on failure. The appctx must be released using
- * pool_free(connection) or appctx_free(), since it's allocated from the
- * connection pool. <applet> is assigned as the applet, but it can be NULL.
+ * appctx_free(). <applet> is assigned as the applet, but it can be NULL.
  */
 static inline struct appctx *appctx_new(struct applet *applet, unsigned long thread_mask)
 {
 	struct appctx *appctx;
 
-	appctx = pool_alloc(pool_head_connection);
+	appctx = pool_alloc(pool_head_appctx);
 	if (likely(appctx != NULL)) {
 		appctx->obj_type = OBJ_TYPE_APPCTX;
 		appctx->applet = applet;
 		appctx_init(appctx, thread_mask);
 		appctx->t = task_new(thread_mask);
 		if (unlikely(appctx->t == NULL)) {
-			pool_free(pool_head_connection, appctx);
+			pool_free(pool_head_appctx, appctx);
 			return NULL;
 		}
 		appctx->t->process = task_run_applet;
@@ -83,9 +83,7 @@
 	return appctx;
 }
 
-/* Releases an appctx previously allocated by appctx_new(). Note that
- * we share the connection pool.
- */
+/* Releases an appctx previously allocated by appctx_new(). */
 static inline void __appctx_free(struct appctx *appctx)
 {
 	task_destroy(appctx->t);
@@ -96,7 +94,7 @@
 		HA_SPIN_UNLOCK(BUF_WQ_LOCK, &buffer_wq_lock);
 	}
 
-	pool_free(pool_head_connection, appctx);
+	pool_free(pool_head_appctx, appctx);
 	_HA_ATOMIC_SUB(&nb_applets, 1);
 }
 
diff --git a/include/proto/stream_interface.h b/include/proto/stream_interface.h
index 63f1738..6727921 100644
--- a/include/proto/stream_interface.h
+++ b/include/proto/stream_interface.h
@@ -188,7 +188,7 @@
 	else if ((appctx = objt_appctx(si->end))) {
 		if (appctx->applet->release && !si_state_in(si->state, SI_SB_DIS|SI_SB_CLO))
 			appctx->applet->release(appctx);
-		appctx_free(appctx); /* we share the connection pool */
+		appctx_free(appctx);
 	} else if ((conn = objt_conn(si->end))) {
 		conn_stop_tracking(conn);
 		conn_full_close(conn);
diff --git a/src/applet.c b/src/applet.c
index 4832a74..f6cc088 100644
--- a/src/applet.c
+++ b/src/applet.c
@@ -23,6 +23,8 @@
 
 unsigned int nb_applets = 0;
 
+DECLARE_POOL(pool_head_appctx,  "appctx",  sizeof(struct appctx));
+
 /* Callback used to wake up an applet when a buffer is available. The applet
  * <appctx> is woken up if an input buffer was requested for the associated
  * stream interface. In this case the buffer is immediately allocated and the
