MINOR: stream-int: rename ->applet to ->appctx

Since this is the applet context, call it ->appctx to avoid the confusion
with the pointer to the applet. Many places were changed but it's only a
renaming.
diff --git a/include/types/stream_interface.h b/include/types/stream_interface.h
index 1af5be5..b7f1a5a 100644
--- a/include/types/stream_interface.h
+++ b/include/types/stream_interface.h
@@ -169,7 +169,7 @@
 	/* struct members below are the "remote" part, as seen from the buffer side */
 	int conn_retries;	/* number of connect retries left */
 	int send_proxy_ofs;	/* <0 = offset to (re)send from the end, >0 = send all */
-	struct appctx applet;   /* context of the running applet if any */
+	struct appctx appctx;   /* context of the running applet if any */
 };
 
 /* An applet designed to run in a stream interface */
diff --git a/src/dumpstats.c b/src/dumpstats.c
index 2332379..5e54d5d 100644
--- a/src/dumpstats.c
+++ b/src/dumpstats.c
@@ -159,8 +159,8 @@
 	/* we have a dedicated I/O handler for the stats */
 	stream_int_register_handler(&s->si[1], &cli_applet);
 	s->target = s->si[1].conn->target; // for logging only
-	s->si[1].applet.st1 = 0;
-	s->si[1].applet.st0 = STAT_CLI_INIT;
+	s->si[1].appctx.st1 = 0;
+	s->si[1].appctx.st0 = STAT_CLI_INIT;
 
 	tv_zero(&s->logs.tv_request);
 	s->logs.t_queue = 0;
@@ -583,7 +583,7 @@
 static void stats_sock_table_key_request(struct stream_interface *si, char **args, int action)
 {
 	struct session *s = session_from_task(si->owner);
-	struct proxy *px = si->applet.ctx.table.target;
+	struct proxy *px = si->appctx.ctx.table.target;
 	struct stksess *ts;
 	uint32_t uint32_key;
 	unsigned char ip6_key[sizeof(struct in6_addr)];
@@ -593,11 +593,11 @@
 	void *ptr;
 	struct freq_ctr_period *frqp;
 
-	si->applet.st0 = STAT_CLI_OUTPUT;
+	si->appctx.st0 = STAT_CLI_OUTPUT;
 
 	if (!*args[4]) {
-		si->applet.ctx.cli.msg = "Key value expected\n";
-		si->applet.st0 = STAT_CLI_PRINT;
+		si->appctx.ctx.cli.msg = "Key value expected\n";
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return;
 	}
 
@@ -619,8 +619,8 @@
 			if ((errno == ERANGE && val == ULONG_MAX) ||
 			    (errno != 0 && val == 0) || endptr == args[4] ||
 			    val > 0xffffffff) {
-				si->applet.ctx.cli.msg = "Invalid key\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Invalid key\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return;
 			}
 			uint32_key = (uint32_t) val;
@@ -635,23 +635,23 @@
 	default:
 		switch (action) {
 		case STAT_CLI_O_TAB:
-			si->applet.ctx.cli.msg = "Showing keys from tables of type other than ip, ipv6, string and integer is not supported\n";
+			si->appctx.ctx.cli.msg = "Showing keys from tables of type other than ip, ipv6, string and integer is not supported\n";
 			break;
 		case STAT_CLI_O_CLR:
-			si->applet.ctx.cli.msg = "Removing keys from ip tables of type other than ip, ipv6, string and integer is not supported\n";
+			si->appctx.ctx.cli.msg = "Removing keys from ip tables of type other than ip, ipv6, string and integer is not supported\n";
 			break;
 		default:
-			si->applet.ctx.cli.msg = "Unknown action\n";
+			si->appctx.ctx.cli.msg = "Unknown action\n";
 			break;
 		}
-		si->applet.st0 = STAT_CLI_PRINT;
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return;
 	}
 
 	/* check permissions */
 	if (s->listener->bind_conf->level < ACCESS_LVL_OPER) {
-		si->applet.ctx.cli.msg = stats_permission_denied_msg;
-		si->applet.st0 = STAT_CLI_PRINT;
+		si->appctx.ctx.cli.msg = stats_permission_denied_msg;
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return;
 	}
 
@@ -672,8 +672,8 @@
 			return;
 		if (ts->ref_cnt) {
 			/* don't delete an entry which is currently referenced */
-			si->applet.ctx.cli.msg = "Entry currently in use, cannot remove\n";
-			si->applet.st0 = STAT_CLI_PRINT;
+			si->appctx.ctx.cli.msg = "Entry currently in use, cannot remove\n";
+			si->appctx.st0 = STAT_CLI_PRINT;
 			return;
 		}
 		stksess_kill(&px->table, ts);
@@ -686,8 +686,8 @@
 			ts = stksess_new(&px->table, static_table_key);
 			if (!ts) {
 				/* don't delete an entry which is currently referenced */
-				si->applet.ctx.cli.msg = "Unable to allocate a new entry\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Unable to allocate a new entry\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return;
 			}
 			stktable_store(&px->table, ts, 1);
@@ -695,27 +695,27 @@
 
 		for (cur_arg = 5; *args[cur_arg]; cur_arg += 2) {
 			if (strncmp(args[cur_arg], "data.", 5) != 0) {
-				si->applet.ctx.cli.msg = "\"data.<type>\" followed by a value expected\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "\"data.<type>\" followed by a value expected\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return;
 			}
 
 			data_type = stktable_get_data_type(args[cur_arg] + 5);
 			if (data_type < 0) {
-				si->applet.ctx.cli.msg = "Unknown data type\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Unknown data type\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return;
 			}
 
 			if (!px->table.data_ofs[data_type]) {
-				si->applet.ctx.cli.msg = "Data type not stored in this table\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Data type not stored in this table\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return;
 			}
 
 			if (!*args[cur_arg+1] || strl2llrc(args[cur_arg+1], strlen(args[cur_arg+1]), &value) != 0) {
-				si->applet.ctx.cli.msg = "Require a valid integer value to store\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Require a valid integer value to store\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return;
 			}
 
@@ -747,8 +747,8 @@
 		break;
 
 	default:
-		si->applet.ctx.cli.msg = "Unknown action\n";
-		si->applet.st0 = STAT_CLI_PRINT;
+		si->appctx.ctx.cli.msg = "Unknown action\n";
+		si->appctx.st0 = STAT_CLI_PRINT;
 		break;
 	}
 }
@@ -756,53 +756,53 @@
 static void stats_sock_table_data_request(struct stream_interface *si, char **args, int action)
 {
 	if (action != STAT_CLI_O_TAB && action != STAT_CLI_O_CLR) {
-		si->applet.ctx.cli.msg = "content-based lookup is only supported with the \"show\" and \"clear\" actions";
-		si->applet.st0 = STAT_CLI_PRINT;
+		si->appctx.ctx.cli.msg = "content-based lookup is only supported with the \"show\" and \"clear\" actions";
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return;
 	}
 
 	/* condition on stored data value */
-	si->applet.ctx.table.data_type = stktable_get_data_type(args[3] + 5);
-	if (si->applet.ctx.table.data_type < 0) {
-		si->applet.ctx.cli.msg = "Unknown data type\n";
-		si->applet.st0 = STAT_CLI_PRINT;
+	si->appctx.ctx.table.data_type = stktable_get_data_type(args[3] + 5);
+	if (si->appctx.ctx.table.data_type < 0) {
+		si->appctx.ctx.cli.msg = "Unknown data type\n";
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return;
 	}
 
-	if (!((struct proxy *)si->applet.ctx.table.target)->table.data_ofs[si->applet.ctx.table.data_type]) {
-		si->applet.ctx.cli.msg = "Data type not stored in this table\n";
-		si->applet.st0 = STAT_CLI_PRINT;
+	if (!((struct proxy *)si->appctx.ctx.table.target)->table.data_ofs[si->appctx.ctx.table.data_type]) {
+		si->appctx.ctx.cli.msg = "Data type not stored in this table\n";
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return;
 	}
 
-	si->applet.ctx.table.data_op = get_std_op(args[4]);
-	if (si->applet.ctx.table.data_op < 0) {
-		si->applet.ctx.cli.msg = "Require and operator among \"eq\", \"ne\", \"le\", \"ge\", \"lt\", \"gt\"\n";
-		si->applet.st0 = STAT_CLI_PRINT;
+	si->appctx.ctx.table.data_op = get_std_op(args[4]);
+	if (si->appctx.ctx.table.data_op < 0) {
+		si->appctx.ctx.cli.msg = "Require and operator among \"eq\", \"ne\", \"le\", \"ge\", \"lt\", \"gt\"\n";
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return;
 	}
 
-	if (!*args[5] || strl2llrc(args[5], strlen(args[5]), &si->applet.ctx.table.value) != 0) {
-		si->applet.ctx.cli.msg = "Require a valid integer value to compare against\n";
-		si->applet.st0 = STAT_CLI_PRINT;
+	if (!*args[5] || strl2llrc(args[5], strlen(args[5]), &si->appctx.ctx.table.value) != 0) {
+		si->appctx.ctx.cli.msg = "Require a valid integer value to compare against\n";
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return;
 	}
 }
 
 static void stats_sock_table_request(struct stream_interface *si, char **args, int action)
 {
-	si->applet.ctx.table.data_type = -1;
-	si->applet.st2 = STAT_ST_INIT;
-	si->applet.ctx.table.target = NULL;
-	si->applet.ctx.table.proxy = NULL;
-	si->applet.ctx.table.entry = NULL;
-	si->applet.st0 = action;
+	si->appctx.ctx.table.data_type = -1;
+	si->appctx.st2 = STAT_ST_INIT;
+	si->appctx.ctx.table.target = NULL;
+	si->appctx.ctx.table.proxy = NULL;
+	si->appctx.ctx.table.entry = NULL;
+	si->appctx.st0 = action;
 
 	if (*args[2]) {
-		si->applet.ctx.table.target = find_stktable(args[2]);
-		if (!si->applet.ctx.table.target) {
-			si->applet.ctx.cli.msg = "No such table\n";
-			si->applet.st0 = STAT_CLI_PRINT;
+		si->appctx.ctx.table.target = find_stktable(args[2]);
+		if (!si->appctx.ctx.table.target) {
+			si->appctx.ctx.cli.msg = "No such table\n";
+			si->appctx.st0 = STAT_CLI_PRINT;
 			return;
 		}
 	}
@@ -824,16 +824,16 @@
 err_args:
 	switch (action) {
 	case STAT_CLI_O_TAB:
-		si->applet.ctx.cli.msg = "Optional argument only supports \"data.<store_data_type>\" <operator> <value> and key <key>\n";
+		si->appctx.ctx.cli.msg = "Optional argument only supports \"data.<store_data_type>\" <operator> <value> and key <key>\n";
 		break;
 	case STAT_CLI_O_CLR:
-		si->applet.ctx.cli.msg = "Required arguments: <table> \"data.<store_data_type>\" <operator> <value> or <table> key <key>\n";
+		si->appctx.ctx.cli.msg = "Required arguments: <table> \"data.<store_data_type>\" <operator> <value> or <table> key <key>\n";
 		break;
 	default:
-		si->applet.ctx.cli.msg = "Unknown action\n";
+		si->appctx.ctx.cli.msg = "Unknown action\n";
 		break;
 	}
-	si->applet.st0 = STAT_CLI_PRINT;
+	si->appctx.st0 = STAT_CLI_PRINT;
 }
 
 /* Expects to find a frontend named <arg> and returns it, otherwise displays various
@@ -845,21 +845,21 @@
 	struct proxy *px;
 
 	if (s->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
-		si->applet.ctx.cli.msg = stats_permission_denied_msg;
-		si->applet.st0 = STAT_CLI_PRINT;
+		si->appctx.ctx.cli.msg = stats_permission_denied_msg;
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return NULL;
 	}
 
 	if (!*arg) {
-		si->applet.ctx.cli.msg = "A frontend name is expected.\n";
-		si->applet.st0 = STAT_CLI_PRINT;
+		si->appctx.ctx.cli.msg = "A frontend name is expected.\n";
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return NULL;
 	}
 
 	px = findproxy(arg, PR_CAP_FE);
 	if (!px) {
-		si->applet.ctx.cli.msg = "No such frontend.\n";
-		si->applet.st0 = STAT_CLI_PRINT;
+		si->appctx.ctx.cli.msg = "No such frontend.\n";
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return NULL;
 	}
 	return px;
@@ -877,8 +877,8 @@
 	char *line;
 
 	if (s->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
-		si->applet.ctx.cli.msg = stats_permission_denied_msg;
-		si->applet.st0 = STAT_CLI_PRINT;
+		si->appctx.ctx.cli.msg = stats_permission_denied_msg;
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return NULL;
 	}
 
@@ -890,20 +890,20 @@
 		}
 
 	if (!*line || !*arg) {
-		si->applet.ctx.cli.msg = "Require 'backend/server'.\n";
-		si->applet.st0 = STAT_CLI_PRINT;
+		si->appctx.ctx.cli.msg = "Require 'backend/server'.\n";
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return NULL;
 	}
 
 	if (!get_backend_server(arg, line, &px, &sv)) {
-		si->applet.ctx.cli.msg = px ? "No such server.\n" : "No such backend.\n";
-		si->applet.st0 = STAT_CLI_PRINT;
+		si->appctx.ctx.cli.msg = px ? "No such server.\n" : "No such backend.\n";
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return NULL;
 	}
 
 	if (px->state == PR_STSTOPPED) {
-		si->applet.ctx.cli.msg = "Proxy is disabled.\n";
-		si->applet.st0 = STAT_CLI_PRINT;
+		si->appctx.ctx.cli.msg = "Proxy is disabled.\n";
+		si->appctx.st0 = STAT_CLI_PRINT;
 		return NULL;
 	}
 
@@ -912,7 +912,7 @@
 
 /* Processes the stats interpreter on the statistics socket. This function is
  * called from an applet running in a stream interface. The function returns 1
- * if the request was understood, otherwise zero. It sets si->applet.st0 to a value
+ * if the request was understood, otherwise zero. It sets si->appctx.st0 to a value
  * designating the function which will have to process the request, which can
  * also be the print function to display the return message set into cli.msg.
  */
@@ -945,53 +945,53 @@
 	while (++arg <= MAX_STATS_ARGS)
 		args[arg] = line;
 
-	si->applet.ctx.stats.flags = 0;
+	si->appctx.ctx.stats.flags = 0;
 	if (strcmp(args[0], "show") == 0) {
 		if (strcmp(args[1], "stat") == 0) {
 			if (*args[2] && *args[3] && *args[4]) {
-				si->applet.ctx.stats.flags |= STAT_BOUND;
-				si->applet.ctx.stats.iid = atoi(args[2]);
-				si->applet.ctx.stats.type = atoi(args[3]);
-				si->applet.ctx.stats.sid = atoi(args[4]);
+				si->appctx.ctx.stats.flags |= STAT_BOUND;
+				si->appctx.ctx.stats.iid = atoi(args[2]);
+				si->appctx.ctx.stats.type = atoi(args[3]);
+				si->appctx.ctx.stats.sid = atoi(args[4]);
 			}
 
-			si->applet.st2 = STAT_ST_INIT;
-			si->applet.st0 = STAT_CLI_O_STAT; // stats_dump_stat_to_buffer
+			si->appctx.st2 = STAT_ST_INIT;
+			si->appctx.st0 = STAT_CLI_O_STAT; // stats_dump_stat_to_buffer
 		}
 		else if (strcmp(args[1], "info") == 0) {
-			si->applet.st2 = STAT_ST_INIT;
-			si->applet.st0 = STAT_CLI_O_INFO; // stats_dump_info_to_buffer
+			si->appctx.st2 = STAT_ST_INIT;
+			si->appctx.st0 = STAT_CLI_O_INFO; // stats_dump_info_to_buffer
 		}
 		else if (strcmp(args[1], "sess") == 0) {
-			si->applet.st2 = STAT_ST_INIT;
+			si->appctx.st2 = STAT_ST_INIT;
 			if (s->listener->bind_conf->level < ACCESS_LVL_OPER) {
-				si->applet.ctx.cli.msg = stats_permission_denied_msg;
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = stats_permission_denied_msg;
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 			if (*args[2] && strcmp(args[2], "all") == 0)
-				si->applet.ctx.sess.target = (void *)-1;
+				si->appctx.ctx.sess.target = (void *)-1;
 			else if (*args[2])
-				si->applet.ctx.sess.target = (void *)strtoul(args[2], NULL, 0);
+				si->appctx.ctx.sess.target = (void *)strtoul(args[2], NULL, 0);
 			else
-				si->applet.ctx.sess.target = NULL;
-			si->applet.ctx.sess.section = 0; /* start with session status */
-			si->applet.ctx.sess.pos = 0;
-			si->applet.st0 = STAT_CLI_O_SESS; // stats_dump_sess_to_buffer
+				si->appctx.ctx.sess.target = NULL;
+			si->appctx.ctx.sess.section = 0; /* start with session status */
+			si->appctx.ctx.sess.pos = 0;
+			si->appctx.st0 = STAT_CLI_O_SESS; // stats_dump_sess_to_buffer
 		}
 		else if (strcmp(args[1], "errors") == 0) {
 			if (s->listener->bind_conf->level < ACCESS_LVL_OPER) {
-				si->applet.ctx.cli.msg = stats_permission_denied_msg;
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = stats_permission_denied_msg;
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 			if (*args[2])
-				si->applet.ctx.errors.iid	= atoi(args[2]);
+				si->appctx.ctx.errors.iid	= atoi(args[2]);
 			else
-				si->applet.ctx.errors.iid	= -1;
-			si->applet.ctx.errors.px = NULL;
-			si->applet.st2 = STAT_ST_INIT;
-			si->applet.st0 = STAT_CLI_O_ERR; // stats_dump_errors_to_buffer
+				si->appctx.ctx.errors.iid	= -1;
+			si->appctx.ctx.errors.px = NULL;
+			si->appctx.st2 = STAT_ST_INIT;
+			si->appctx.st0 = STAT_CLI_O_ERR; // stats_dump_errors_to_buffer
 		}
 		else if (strcmp(args[1], "table") == 0) {
 			stats_sock_table_request(si, args, STAT_CLI_O_TAB);
@@ -1013,8 +1013,8 @@
 			/* check permissions */
 			if (s->listener->bind_conf->level < ACCESS_LVL_OPER ||
 			    (clrall && s->listener->bind_conf->level < ACCESS_LVL_ADMIN)) {
-				si->applet.ctx.cli.msg = stats_permission_denied_msg;
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = stats_permission_denied_msg;
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 
@@ -1081,14 +1081,14 @@
 				}
 
 			if (!*line) {
-				si->applet.ctx.cli.msg = "Require 'backend/server'.\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Require 'backend/server'.\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 
 			if (!get_backend_server(args[2], line, &px, &sv)) {
-				si->applet.ctx.cli.msg = px ? "No such server.\n" : "No such backend.\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = px ? "No such server.\n" : "No such backend.\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 
@@ -1118,8 +1118,8 @@
 			 */
 			set_server_drain_state(sv);
 			if (warning) {
-				si->applet.ctx.cli.msg = warning;
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = warning;
+				si->appctx.st0 = STAT_CLI_PRINT;
 			}
 			return 1;
 		}
@@ -1129,15 +1129,15 @@
 				const char *res;
 
 				if (!*args[3]) {
-					si->applet.ctx.cli.msg = "Expects an integer value.\n";
-					si->applet.st0 = STAT_CLI_PRINT;
+					si->appctx.ctx.cli.msg = "Expects an integer value.\n";
+					si->appctx.st0 = STAT_CLI_PRINT;
 					return 1;
 				}
 
 				res = parse_time_err(args[3], &timeout, TIME_UNIT_S);
 				if (res || timeout < 1) {
-					si->applet.ctx.cli.msg = "Invalid timeout value.\n";
-					si->applet.st0 = STAT_CLI_PRINT;
+					si->appctx.ctx.cli.msg = "Invalid timeout value.\n";
+					si->appctx.st0 = STAT_CLI_PRINT;
 					return 1;
 				}
 
@@ -1145,8 +1145,8 @@
 				return 1;
 			}
 			else {
-				si->applet.ctx.cli.msg = "'set timeout' only supports 'cli'.\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "'set timeout' only supports 'cli'.\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 		}
@@ -1161,15 +1161,15 @@
 					return 1;
 
 				if (!*args[4]) {
-					si->applet.ctx.cli.msg = "Integer value expected.\n";
-					si->applet.st0 = STAT_CLI_PRINT;
+					si->appctx.ctx.cli.msg = "Integer value expected.\n";
+					si->appctx.st0 = STAT_CLI_PRINT;
 					return 1;
 				}
 
 				v = atoi(args[4]);
 				if (v < 0) {
-					si->applet.ctx.cli.msg = "Value out of range.\n";
-					si->applet.st0 = STAT_CLI_PRINT;
+					si->appctx.ctx.cli.msg = "Value out of range.\n";
+					si->appctx.st0 = STAT_CLI_PRINT;
 					return 1;
 				}
 
@@ -1192,21 +1192,21 @@
 				int v;
 
 				if (s->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
-					si->applet.ctx.cli.msg = stats_permission_denied_msg;
-					si->applet.st0 = STAT_CLI_PRINT;
+					si->appctx.ctx.cli.msg = stats_permission_denied_msg;
+					si->appctx.st0 = STAT_CLI_PRINT;
 					return 1;
 				}
 
 				if (!*args[3]) {
-					si->applet.ctx.cli.msg = "Expects an integer value.\n";
-					si->applet.st0 = STAT_CLI_PRINT;
+					si->appctx.ctx.cli.msg = "Expects an integer value.\n";
+					si->appctx.st0 = STAT_CLI_PRINT;
 					return 1;
 				}
 
 				v = atoi(args[3]);
 				if (v > global.hardmaxconn) {
-					si->applet.ctx.cli.msg = "Value out of range.\n";
-					si->applet.st0 = STAT_CLI_PRINT;
+					si->appctx.ctx.cli.msg = "Value out of range.\n";
+					si->appctx.st0 = STAT_CLI_PRINT;
 					return 1;
 				}
 
@@ -1223,8 +1223,8 @@
 				return 1;
 			}
 			else {
-				si->applet.ctx.cli.msg = "'set maxconn' only supports 'frontend' and 'global'.\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "'set maxconn' only supports 'frontend' and 'global'.\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 		}
@@ -1234,21 +1234,21 @@
 					int v;
 
 					if (s->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
-						si->applet.ctx.cli.msg = stats_permission_denied_msg;
-						si->applet.st0 = STAT_CLI_PRINT;
+						si->appctx.ctx.cli.msg = stats_permission_denied_msg;
+						si->appctx.st0 = STAT_CLI_PRINT;
 						return 1;
 					}
 
 					if (!*args[4]) {
-						si->applet.ctx.cli.msg = "Expects an integer value.\n";
-						si->applet.st0 = STAT_CLI_PRINT;
+						si->appctx.ctx.cli.msg = "Expects an integer value.\n";
+						si->appctx.st0 = STAT_CLI_PRINT;
 						return 1;
 					}
 
 					v = atoi(args[4]);
 					if (v < 0) {
-						si->applet.ctx.cli.msg = "Value out of range.\n";
-						si->applet.st0 = STAT_CLI_PRINT;
+						si->appctx.ctx.cli.msg = "Value out of range.\n";
+						si->appctx.st0 = STAT_CLI_PRINT;
 						return 1;
 					}
 
@@ -1261,8 +1261,8 @@
 					return 1;
 				}
 				else {
-					si->applet.ctx.cli.msg = "'set rate-limit connections' only supports 'global'.\n";
-					si->applet.st0 = STAT_CLI_PRINT;
+					si->appctx.ctx.cli.msg = "'set rate-limit connections' only supports 'global'.\n";
+					si->appctx.st0 = STAT_CLI_PRINT;
 					return 1;
 				}
 			}
@@ -1271,8 +1271,8 @@
 					int v;
 
 					if (!*args[4]) {
-						si->applet.ctx.cli.msg = "Expects a maximum input byte rate in kB/s.\n";
-						si->applet.st0 = STAT_CLI_PRINT;
+						si->appctx.ctx.cli.msg = "Expects a maximum input byte rate in kB/s.\n";
+						si->appctx.st0 = STAT_CLI_PRINT;
 						return 1;
 					}
 
@@ -1280,14 +1280,14 @@
 					global.comp_rate_lim = v * 1024; /* Kilo to bytes. */
 				}
 				else {
-					si->applet.ctx.cli.msg = "'set rate-limit http-compression' only supports 'global'.\n";
-					si->applet.st0 = STAT_CLI_PRINT;
+					si->appctx.ctx.cli.msg = "'set rate-limit http-compression' only supports 'global'.\n";
+					si->appctx.st0 = STAT_CLI_PRINT;
 					return 1;
 				}
 			}
 			else {
-				si->applet.ctx.cli.msg = "'set rate-limit' supports 'connections' and 'http-compression'.\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "'set rate-limit' supports 'connections' and 'http-compression'.\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 		}
@@ -1346,27 +1346,27 @@
 				return 1;
 
 			if (px->state == PR_STSTOPPED) {
-				si->applet.ctx.cli.msg = "Frontend was previously shut down, cannot enable.\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Frontend was previously shut down, cannot enable.\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 
 			if (px->state != PR_STPAUSED) {
-				si->applet.ctx.cli.msg = "Frontend is already enabled.\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Frontend is already enabled.\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 
 			if (!resume_proxy(px)) {
-				si->applet.ctx.cli.msg = "Failed to resume frontend, check logs for precise cause (port conflict?).\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Failed to resume frontend, check logs for precise cause (port conflict?).\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 			return 1;
 		}
 		else { /* unknown "enable" parameter */
-			si->applet.ctx.cli.msg = "'enable' only supports 'frontend' and 'server'.\n";
-			si->applet.st0 = STAT_CLI_PRINT;
+			si->appctx.ctx.cli.msg = "'enable' only supports 'frontend' and 'server'.\n";
+			si->appctx.st0 = STAT_CLI_PRINT;
 			return 1;
 		}
 	}
@@ -1405,27 +1405,27 @@
 				return 1;
 
 			if (px->state == PR_STSTOPPED) {
-				si->applet.ctx.cli.msg = "Frontend was previously shut down, cannot disable.\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Frontend was previously shut down, cannot disable.\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 
 			if (px->state == PR_STPAUSED) {
-				si->applet.ctx.cli.msg = "Frontend is already disabled.\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Frontend is already disabled.\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 
 			if (!pause_proxy(px)) {
-				si->applet.ctx.cli.msg = "Failed to pause frontend, check logs for precise cause.\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Failed to pause frontend, check logs for precise cause.\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 			return 1;
 		}
 		else { /* unknown "disable" parameter */
-			si->applet.ctx.cli.msg = "'disable' only supports 'frontend' and 'server'.\n";
-			si->applet.st0 = STAT_CLI_PRINT;
+			si->appctx.ctx.cli.msg = "'disable' only supports 'frontend' and 'server'.\n";
+			si->appctx.st0 = STAT_CLI_PRINT;
 			return 1;
 		}
 	}
@@ -1438,8 +1438,8 @@
 				return 1;
 
 			if (px->state == PR_STSTOPPED) {
-				si->applet.ctx.cli.msg = "Frontend was already shut down.\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Frontend was already shut down.\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 
@@ -1454,14 +1454,14 @@
 			struct session *sess, *ptr;
 
 			if (s->listener->bind_conf->level < ACCESS_LVL_ADMIN) {
-				si->applet.ctx.cli.msg = stats_permission_denied_msg;
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = stats_permission_denied_msg;
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 
 			if (!*args[2]) {
-				si->applet.ctx.cli.msg = "Session pointer expected (use 'show sess').\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "Session pointer expected (use 'show sess').\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 
@@ -1475,8 +1475,8 @@
 
 			/* do we have the session ? */
 			if (sess != ptr) {
-				si->applet.ctx.cli.msg = "No such session (use 'show sess').\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "No such session (use 'show sess').\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 
@@ -1500,14 +1500,14 @@
 				return 1;
 			}
 			else {
-				si->applet.ctx.cli.msg = "'shutdown sessions' only supports 'server'.\n";
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = "'shutdown sessions' only supports 'server'.\n";
+				si->appctx.st0 = STAT_CLI_PRINT;
 				return 1;
 			}
 		}
 		else { /* unknown "disable" parameter */
-			si->applet.ctx.cli.msg = "'shutdown' only supports 'frontend', 'session' and 'sessions'.\n";
-			si->applet.st0 = STAT_CLI_PRINT;
+			si->appctx.ctx.cli.msg = "'shutdown' only supports 'frontend', 'session' and 'sessions'.\n";
+			si->appctx.st0 = STAT_CLI_PRINT;
 			return 1;
 		}
 	}
@@ -1521,8 +1521,8 @@
  * used to processes I/O from/to the stats unix socket. The system relies on a
  * state machine handling requests and various responses. We read a request,
  * then we process it and send the response, and we possibly display a prompt.
- * Then we can read again. The state is stored in si->applet.st0 and is one of the
- * STAT_CLI_* constants. si->applet.st1 is used to indicate whether prompt is enabled
+ * Then we can read again. The state is stored in si->appctx.st0 and is one of the
+ * STAT_CLI_* constants. si->appctx.st1 is used to indicate whether prompt is enabled
  * or not.
  */
 static void cli_io_handler(struct stream_interface *si)
@@ -1536,19 +1536,19 @@
 		goto out;
 
 	while (1) {
-		if (si->applet.st0 == STAT_CLI_INIT) {
+		if (si->appctx.st0 == STAT_CLI_INIT) {
 			/* Stats output not initialized yet */
-			memset(&si->applet.ctx.stats, 0, sizeof(si->applet.ctx.stats));
-			si->applet.st0 = STAT_CLI_GETREQ;
+			memset(&si->appctx.ctx.stats, 0, sizeof(si->appctx.ctx.stats));
+			si->appctx.st0 = STAT_CLI_GETREQ;
 		}
-		else if (si->applet.st0 == STAT_CLI_END) {
+		else if (si->appctx.st0 == STAT_CLI_END) {
 			/* Let's close for real now. We just close the request
 			 * side, the conditions below will complete if needed.
 			 */
 			si_shutw(si);
 			break;
 		}
-		else if (si->applet.st0 == STAT_CLI_GETREQ) {
+		else if (si->appctx.st0 == STAT_CLI_GETREQ) {
 			/* ensure we have some output room left in the event we
 			 * would want to return some info right after parsing.
 			 */
@@ -1559,7 +1559,7 @@
 			if (reql <= 0) { /* closed or EOL not found */
 				if (reql == 0)
 					break;
-				si->applet.st0 = STAT_CLI_END;
+				si->appctx.st0 = STAT_CLI_END;
 				continue;
 			}
 
@@ -1579,7 +1579,7 @@
 			 */
 			len = reql - 1;
 			if (trash.str[len] != '\n') {
-				si->applet.st0 = STAT_CLI_END;
+				si->appctx.st0 = STAT_CLI_END;
 				continue;
 			}
 
@@ -1588,30 +1588,30 @@
 
 			trash.str[len] = '\0';
 
-			si->applet.st0 = STAT_CLI_PROMPT;
+			si->appctx.st0 = STAT_CLI_PROMPT;
 			if (len) {
 				if (strcmp(trash.str, "quit") == 0) {
-					si->applet.st0 = STAT_CLI_END;
+					si->appctx.st0 = STAT_CLI_END;
 					continue;
 				}
 				else if (strcmp(trash.str, "prompt") == 0)
-					si->applet.st1 = !si->applet.st1;
+					si->appctx.st1 = !si->appctx.st1;
 				else if (strcmp(trash.str, "help") == 0 ||
 					 !stats_sock_parse_request(si, trash.str)) {
-					si->applet.ctx.cli.msg = stats_sock_usage_msg;
-					si->applet.st0 = STAT_CLI_PRINT;
+					si->appctx.ctx.cli.msg = stats_sock_usage_msg;
+					si->appctx.st0 = STAT_CLI_PRINT;
 				}
 				/* NB: stats_sock_parse_request() may have put
-				 * another STAT_CLI_O_* into si->applet.st0.
+				 * another STAT_CLI_O_* into si->appctx.st0.
 				 */
 			}
-			else if (!si->applet.st1) {
+			else if (!si->appctx.st1) {
 				/* if prompt is disabled, print help on empty lines,
 				 * so that the user at least knows how to enable
 				 * prompt and find help.
 				 */
-				si->applet.ctx.cli.msg = stats_sock_usage_msg;
-				si->applet.st0 = STAT_CLI_PRINT;
+				si->appctx.ctx.cli.msg = stats_sock_usage_msg;
+				si->appctx.st0 = STAT_CLI_PRINT;
 			}
 
 			/* re-adjust req buffer */
@@ -1620,49 +1620,49 @@
 		}
 		else {	/* output functions: first check if the output buffer is closed then abort */
 			if (res->flags & (CF_SHUTR_NOW|CF_SHUTR)) {
-				si->applet.st0 = STAT_CLI_END;
+				si->appctx.st0 = STAT_CLI_END;
 				continue;
 			}
 
-			switch (si->applet.st0) {
+			switch (si->appctx.st0) {
 			case STAT_CLI_PRINT:
-				if (bi_putstr(si->ib, si->applet.ctx.cli.msg) != -1)
-					si->applet.st0 = STAT_CLI_PROMPT;
+				if (bi_putstr(si->ib, si->appctx.ctx.cli.msg) != -1)
+					si->appctx.st0 = STAT_CLI_PROMPT;
 				break;
 			case STAT_CLI_O_INFO:
 				if (stats_dump_info_to_buffer(si))
-					si->applet.st0 = STAT_CLI_PROMPT;
+					si->appctx.st0 = STAT_CLI_PROMPT;
 				break;
 			case STAT_CLI_O_STAT:
 				if (stats_dump_stat_to_buffer(si, NULL))
-					si->applet.st0 = STAT_CLI_PROMPT;
+					si->appctx.st0 = STAT_CLI_PROMPT;
 				break;
 			case STAT_CLI_O_SESS:
 				if (stats_dump_sess_to_buffer(si))
-					si->applet.st0 = STAT_CLI_PROMPT;
+					si->appctx.st0 = STAT_CLI_PROMPT;
 				break;
 			case STAT_CLI_O_ERR:	/* errors dump */
 				if (stats_dump_errors_to_buffer(si))
-					si->applet.st0 = STAT_CLI_PROMPT;
+					si->appctx.st0 = STAT_CLI_PROMPT;
 				break;
 			case STAT_CLI_O_TAB:
 			case STAT_CLI_O_CLR:
-				if (stats_table_request(si, si->applet.st0))
-					si->applet.st0 = STAT_CLI_PROMPT;
+				if (stats_table_request(si, si->appctx.st0))
+					si->appctx.st0 = STAT_CLI_PROMPT;
 				break;
 			default: /* abnormal state */
-				si->applet.st0 = STAT_CLI_PROMPT;
+				si->appctx.st0 = STAT_CLI_PROMPT;
 				break;
 			}
 
 			/* The post-command prompt is either LF alone or LF + '> ' in interactive mode */
-			if (si->applet.st0 == STAT_CLI_PROMPT) {
-				if (bi_putstr(si->ib, si->applet.st1 ? "\n> " : "\n") != -1)
-					si->applet.st0 = STAT_CLI_GETREQ;
+			if (si->appctx.st0 == STAT_CLI_PROMPT) {
+				if (bi_putstr(si->ib, si->appctx.st1 ? "\n> " : "\n") != -1)
+					si->appctx.st0 = STAT_CLI_GETREQ;
 			}
 
 			/* If the output functions are still there, it means they require more room. */
-			if (si->applet.st0 >= STAT_CLI_OUTPUT)
+			if (si->appctx.st0 >= STAT_CLI_OUTPUT)
 				break;
 
 			/* Now we close the output if one of the writers did so,
@@ -1670,17 +1670,17 @@
 			 * buffer is empty. This still allows pipelined requests
 			 * to be sent in non-interactive mode.
 			 */
-			if ((res->flags & (CF_SHUTW|CF_SHUTW_NOW)) || (!si->applet.st1 && !req->buf->o)) {
-				si->applet.st0 = STAT_CLI_END;
+			if ((res->flags & (CF_SHUTW|CF_SHUTW_NOW)) || (!si->appctx.st1 && !req->buf->o)) {
+				si->appctx.st0 = STAT_CLI_END;
 				continue;
 			}
 
 			/* switch state back to GETREQ to read next requests */
-			si->applet.st0 = STAT_CLI_GETREQ;
+			si->appctx.st0 = STAT_CLI_GETREQ;
 		}
 	}
 
-	if ((res->flags & CF_SHUTR) && (si->state == SI_ST_EST) && (si->applet.st0 != STAT_CLI_GETREQ)) {
+	if ((res->flags & CF_SHUTR) && (si->state == SI_ST_EST) && (si->appctx.st0 != STAT_CLI_GETREQ)) {
 		DPRINTF(stderr, "%s@%d: si to buf closed. req=%08x, res=%08x, st=%d\n",
 			__FUNCTION__, __LINE__, req->flags, res->flags, si->state);
 		/* Other side has closed, let's abort if we have no more processing to do
@@ -1691,7 +1691,7 @@
 		si_shutw(si);
 	}
 
-	if ((req->flags & CF_SHUTW) && (si->state == SI_ST_EST) && (si->applet.st0 < STAT_CLI_OUTPUT)) {
+	if ((req->flags & CF_SHUTW) && (si->state == SI_ST_EST) && (si->appctx.st0 < STAT_CLI_OUTPUT)) {
 		DPRINTF(stderr, "%s@%d: buf to si closed. req=%08x, res=%08x, st=%d\n",
 			__FUNCTION__, __LINE__, req->flags, res->flags, si->state);
 		/* We have no more processing to do, and nothing more to send, and
@@ -1798,15 +1798,15 @@
 	if (!(px->cap & PR_CAP_FE))
 		return 0;
 
-	if ((si->applet.ctx.stats.flags & STAT_BOUND) && !(si->applet.ctx.stats.type & (1 << STATS_TYPE_FE)))
+	if ((si->appctx.ctx.stats.flags & STAT_BOUND) && !(si->appctx.ctx.stats.type & (1 << STATS_TYPE_FE)))
 		return 0;
 
-	if (si->applet.ctx.stats.flags & STAT_FMT_HTML) {
+	if (si->appctx.ctx.stats.flags & STAT_FMT_HTML) {
 		chunk_appendf(&trash,
 		              /* name, queue */
 		              "<tr class=\"frontend\">");
 
-		if (px->cap & PR_CAP_BE && px->srv && (si->applet.ctx.stats.flags & STAT_ADMIN)) {
+		if (px->cap & PR_CAP_BE && px->srv && (si->appctx.ctx.stats.flags & STAT_ADMIN)) {
 			/* Column sub-heading for Enable or Disable server */
 			chunk_appendf(&trash, "<td></td>");
 		}
@@ -2006,9 +2006,9 @@
  */
 static int stats_dump_li_stats(struct stream_interface *si, struct proxy *px, struct listener *l, int flags)
 {
-	if (si->applet.ctx.stats.flags & STAT_FMT_HTML) {
+	if (si->appctx.ctx.stats.flags & STAT_FMT_HTML) {
 		chunk_appendf(&trash, "<tr class=socket>");
-		if (px->cap & PR_CAP_BE && px->srv && (si->applet.ctx.stats.flags & STAT_ADMIN)) {
+		if (px->cap & PR_CAP_BE && px->srv && (si->appctx.ctx.stats.flags & STAT_ADMIN)) {
 			/* Column sub-heading for Enable or Disable server */
 			chunk_appendf(&trash, "<td></td>");
 		}
@@ -2139,7 +2139,7 @@
 	struct chunk src;
 	int i;
 
-	if (si->applet.ctx.stats.flags & STAT_FMT_HTML) {
+	if (si->appctx.ctx.stats.flags & STAT_FMT_HTML) {
 		static char *srv_hlt_st[9] = {
 			"DOWN",
 			"DN %d/%d &uarr;",
@@ -2159,7 +2159,7 @@
 			              "<tr class=\"%s%d\">",
 			              (sv->state & SRV_BACKUP) ? "backup" : "active", state);
 
-		if ((px->cap & PR_CAP_BE) && px->srv && (si->applet.ctx.stats.flags & STAT_ADMIN))
+		if ((px->cap & PR_CAP_BE) && px->srv && (si->appctx.ctx.stats.flags & STAT_ADMIN))
 			chunk_appendf(&trash,
 			              "<td><input type=\"checkbox\" name=\"s\" value=\"%s\"></td>",
 			              sv->id);
@@ -2520,12 +2520,12 @@
 	if (!(px->cap & PR_CAP_BE))
 		return 0;
 
-	if ((si->applet.ctx.stats.flags & STAT_BOUND) && !(si->applet.ctx.stats.type & (1 << STATS_TYPE_BE)))
+	if ((si->appctx.ctx.stats.flags & STAT_BOUND) && !(si->appctx.ctx.stats.type & (1 << STATS_TYPE_BE)))
 		return 0;
 
-	if (si->applet.ctx.stats.flags & STAT_FMT_HTML) {
+	if (si->appctx.ctx.stats.flags & STAT_FMT_HTML) {
 		chunk_appendf(&trash, "<tr class=\"backend\">");
-		if (px->srv && (si->applet.ctx.stats.flags & STAT_ADMIN)) {
+		if (px->srv && (si->appctx.ctx.stats.flags & STAT_ADMIN)) {
 			/* Column sub-heading for Enable or Disable server */
 			chunk_appendf(&trash, "<td></td>");
 		}
@@ -2744,22 +2744,22 @@
 {
 	char scope_txt[STAT_SCOPE_TXT_MAXLEN + sizeof STAT_SCOPE_PATTERN];
 
-	if (px->cap & PR_CAP_BE && px->srv && (si->applet.ctx.stats.flags & STAT_ADMIN)) {
+	if (px->cap & PR_CAP_BE && px->srv && (si->appctx.ctx.stats.flags & STAT_ADMIN)) {
 		/* A form to enable/disable this proxy servers */
 
-		/* scope_txt = search pattern + search query, si->applet.ctx.stats.scope_len is always <= STAT_SCOPE_TXT_MAXLEN */
+		/* scope_txt = search pattern + search query, si->appctx.ctx.stats.scope_len is always <= STAT_SCOPE_TXT_MAXLEN */
 		scope_txt[0] = 0;
-		if (si->applet.ctx.stats.scope_len) {
+		if (si->appctx.ctx.stats.scope_len) {
 			strcpy(scope_txt, STAT_SCOPE_PATTERN);
-			memcpy(scope_txt + strlen(STAT_SCOPE_PATTERN), bo_ptr(si->ob->buf) + si->applet.ctx.stats.scope_str, si->applet.ctx.stats.scope_len);
-			scope_txt[strlen(STAT_SCOPE_PATTERN) + si->applet.ctx.stats.scope_len] = 0;
+			memcpy(scope_txt + strlen(STAT_SCOPE_PATTERN), bo_ptr(si->ob->buf) + si->appctx.ctx.stats.scope_str, si->appctx.ctx.stats.scope_len);
+			scope_txt[strlen(STAT_SCOPE_PATTERN) + si->appctx.ctx.stats.scope_len] = 0;
 		}
 
 		chunk_appendf(&trash,
 			      "<form action=\"%s%s%s%s\" method=\"post\">",
 			      uri->uri_prefix,
-			      (si->applet.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
-			      (si->applet.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
+			      (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
+			      (si->appctx.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
 			      scope_txt);
 	}
 
@@ -2794,7 +2794,7 @@
 	              (uri->flags & ST_SHLGNDS) ? "</u>":"",
 	              px->desc ? "desc" : "empty", px->desc ? px->desc : "");
 
-	if ((px->cap & PR_CAP_BE) && px->srv && (si->applet.ctx.stats.flags & STAT_ADMIN)) {
+	if ((px->cap & PR_CAP_BE) && px->srv && (si->appctx.ctx.stats.flags & STAT_ADMIN)) {
 		/* Column heading for Enable or Disable server */
 		chunk_appendf(&trash, "<th rowspan=2 width=1></th>");
 	}
@@ -2826,7 +2826,7 @@
 {
 	chunk_appendf(&trash, "</table>");
 
-	if ((px->cap & PR_CAP_BE) && px->srv && (si->applet.ctx.stats.flags & STAT_ADMIN)) {
+	if ((px->cap & PR_CAP_BE) && px->srv && (si->appctx.ctx.stats.flags & STAT_ADMIN)) {
 		/* close the form used to enable/disable this proxy servers */
 		chunk_appendf(&trash,
 			      "Choose the action to perform on the checked servers : "
@@ -2863,7 +2863,7 @@
 
 	chunk_reset(&trash);
 
-	switch (si->applet.ctx.stats.px_st) {
+	switch (si->appctx.ctx.stats.px_st) {
 	case STAT_PX_ST_INIT:
 		/* we are on a new proxy */
 		if (uri && uri->scope) {
@@ -2893,26 +2893,26 @@
 		/* if the user has requested a limited output and the proxy
 		 * name does not match, skip it.
 		 */
-		if (si->applet.ctx.stats.scope_len &&
-		    strnistr(px->id, strlen(px->id), bo_ptr(si->ob->buf) + si->applet.ctx.stats.scope_str, si->applet.ctx.stats.scope_len) == NULL)
+		if (si->appctx.ctx.stats.scope_len &&
+		    strnistr(px->id, strlen(px->id), bo_ptr(si->ob->buf) + si->appctx.ctx.stats.scope_str, si->appctx.ctx.stats.scope_len) == NULL)
 			return 1;
 
-		if ((si->applet.ctx.stats.flags & STAT_BOUND) &&
-		    (si->applet.ctx.stats.iid != -1) &&
-		    (px->uuid != si->applet.ctx.stats.iid))
+		if ((si->appctx.ctx.stats.flags & STAT_BOUND) &&
+		    (si->appctx.ctx.stats.iid != -1) &&
+		    (px->uuid != si->appctx.ctx.stats.iid))
 			return 1;
 
-		si->applet.ctx.stats.px_st = STAT_PX_ST_TH;
+		si->appctx.ctx.stats.px_st = STAT_PX_ST_TH;
 		/* fall through */
 
 	case STAT_PX_ST_TH:
-		if (si->applet.ctx.stats.flags & STAT_FMT_HTML) {
+		if (si->appctx.ctx.stats.flags & STAT_FMT_HTML) {
 			stats_dump_html_px_hdr(si, px, uri);
 			if (bi_putchk(rep, &trash) == -1)
 				return 0;
 		}
 
-		si->applet.ctx.stats.px_st = STAT_PX_ST_FE;
+		si->appctx.ctx.stats.px_st = STAT_PX_ST_FE;
 		/* fall through */
 
 	case STAT_PX_ST_FE:
@@ -2921,25 +2921,25 @@
 			if (bi_putchk(rep, &trash) == -1)
 				return 0;
 
-		si->applet.ctx.stats.l = px->conf.listeners.n;
-		si->applet.ctx.stats.px_st = STAT_PX_ST_LI;
+		si->appctx.ctx.stats.l = px->conf.listeners.n;
+		si->appctx.ctx.stats.px_st = STAT_PX_ST_LI;
 		/* fall through */
 
 	case STAT_PX_ST_LI:
 		/* stats.l has been initialized above */
-		for (; si->applet.ctx.stats.l != &px->conf.listeners; si->applet.ctx.stats.l = l->by_fe.n) {
+		for (; si->appctx.ctx.stats.l != &px->conf.listeners; si->appctx.ctx.stats.l = l->by_fe.n) {
 			if (buffer_almost_full(rep->buf))
 				return 0;
 
-			l = LIST_ELEM(si->applet.ctx.stats.l, struct listener *, by_fe);
+			l = LIST_ELEM(si->appctx.ctx.stats.l, struct listener *, by_fe);
 			if (!l->counters)
 				continue;
 
-			if (si->applet.ctx.stats.flags & STAT_BOUND) {
-				if (!(si->applet.ctx.stats.type & (1 << STATS_TYPE_SO)))
+			if (si->appctx.ctx.stats.flags & STAT_BOUND) {
+				if (!(si->appctx.ctx.stats.type & (1 << STATS_TYPE_SO)))
 					break;
 
-				if (si->applet.ctx.stats.sid != -1 && l->luid != si->applet.ctx.stats.sid)
+				if (si->appctx.ctx.stats.sid != -1 && l->luid != si->appctx.ctx.stats.sid)
 					continue;
 			}
 
@@ -2949,25 +2949,25 @@
 					return 0;
 		}
 
-		si->applet.ctx.stats.sv = px->srv; /* may be NULL */
-		si->applet.ctx.stats.px_st = STAT_PX_ST_SV;
+		si->appctx.ctx.stats.sv = px->srv; /* may be NULL */
+		si->appctx.ctx.stats.px_st = STAT_PX_ST_SV;
 		/* fall through */
 
 	case STAT_PX_ST_SV:
 		/* stats.sv has been initialized above */
-		for (; si->applet.ctx.stats.sv != NULL; si->applet.ctx.stats.sv = sv->next) {
+		for (; si->appctx.ctx.stats.sv != NULL; si->appctx.ctx.stats.sv = sv->next) {
 			int sv_state; /* 0=DOWN, 1=going up, 2=going down, 3=UP, 4,5=NOLB, 6=unchecked */
 
 			if (buffer_almost_full(rep->buf))
 				return 0;
 
-			sv = si->applet.ctx.stats.sv;
+			sv = si->appctx.ctx.stats.sv;
 
-			if (si->applet.ctx.stats.flags & STAT_BOUND) {
-				if (!(si->applet.ctx.stats.type & (1 << STATS_TYPE_SV)))
+			if (si->appctx.ctx.stats.flags & STAT_BOUND) {
+				if (!(si->appctx.ctx.stats.type & (1 << STATS_TYPE_SV)))
 					break;
 
-				if (si->applet.ctx.stats.sid != -1 && sv->puid != si->applet.ctx.stats.sid)
+				if (si->appctx.ctx.stats.sid != -1 && sv->puid != si->appctx.ctx.stats.sid)
 					continue;
 			}
 
@@ -2996,9 +2996,9 @@
 				else
 					sv_state = 0; /* DOWN */
 
-			if (((sv_state == 0) || (sv->state & SRV_MAINTAIN)) && (si->applet.ctx.stats.flags & STAT_HIDE_DOWN)) {
+			if (((sv_state == 0) || (sv->state & SRV_MAINTAIN)) && (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN)) {
 				/* do not report servers which are DOWN */
-				si->applet.ctx.stats.sv = sv->next;
+				si->appctx.ctx.stats.sv = sv->next;
 				continue;
 			}
 
@@ -3007,7 +3007,7 @@
 					return 0;
 		} /* for sv */
 
-		si->applet.ctx.stats.px_st = STAT_PX_ST_BE;
+		si->appctx.ctx.stats.px_st = STAT_PX_ST_BE;
 		/* fall through */
 
 	case STAT_PX_ST_BE:
@@ -3016,17 +3016,17 @@
 			if (bi_putchk(rep, &trash) == -1)
 				return 0;
 
-		si->applet.ctx.stats.px_st = STAT_PX_ST_END;
+		si->appctx.ctx.stats.px_st = STAT_PX_ST_END;
 		/* fall through */
 
 	case STAT_PX_ST_END:
-		if (si->applet.ctx.stats.flags & STAT_FMT_HTML) {
+		if (si->appctx.ctx.stats.flags & STAT_FMT_HTML) {
 			stats_dump_html_px_end(si, px);
 			if (bi_putchk(rep, &trash) == -1)
 				return 0;
 		}
 
-		si->applet.ctx.stats.px_st = STAT_PX_ST_FIN;
+		si->appctx.ctx.stats.px_st = STAT_PX_ST_FIN;
 		/* fall through */
 
 	case STAT_PX_ST_FIN:
@@ -3225,54 +3225,54 @@
 	              run_queue_cur, nb_tasks_cur, idle_pct
 	              );
 
-	/* scope_txt = search query, si->applet.ctx.stats.scope_len is always <= STAT_SCOPE_TXT_MAXLEN */
-	memcpy(scope_txt, bo_ptr(si->ob->buf) + si->applet.ctx.stats.scope_str, si->applet.ctx.stats.scope_len);
-	scope_txt[si->applet.ctx.stats.scope_len] = '\0';
+	/* scope_txt = search query, si->appctx.ctx.stats.scope_len is always <= STAT_SCOPE_TXT_MAXLEN */
+	memcpy(scope_txt, bo_ptr(si->ob->buf) + si->appctx.ctx.stats.scope_str, si->appctx.ctx.stats.scope_len);
+	scope_txt[si->appctx.ctx.stats.scope_len] = '\0';
 
 	chunk_appendf(&trash,
 		      "<li><form method=\"GET\" action=\"%s%s%s\">Scope : <input value=\"%s\" name=\"" STAT_SCOPE_INPUT_NAME "\" size=\"8\" maxlength=\"%d\" tabindex=\"1\"/></form>\n",
 		      uri->uri_prefix,
-		      (si->applet.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
-		      (si->applet.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
-		      (si->applet.ctx.stats.scope_len > 0) ? scope_txt : "",
+		      (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
+		      (si->appctx.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
+		      (si->appctx.ctx.stats.scope_len > 0) ? scope_txt : "",
 		      STAT_SCOPE_TXT_MAXLEN);
 
-	/* scope_txt = search pattern + search query, si->applet.ctx.stats.scope_len is always <= STAT_SCOPE_TXT_MAXLEN */
+	/* scope_txt = search pattern + search query, si->appctx.ctx.stats.scope_len is always <= STAT_SCOPE_TXT_MAXLEN */
 	scope_txt[0] = 0;
-	if (si->applet.ctx.stats.scope_len) {
+	if (si->appctx.ctx.stats.scope_len) {
 		strcpy(scope_txt, STAT_SCOPE_PATTERN);
-		memcpy(scope_txt + strlen(STAT_SCOPE_PATTERN), bo_ptr(si->ob->buf) + si->applet.ctx.stats.scope_str, si->applet.ctx.stats.scope_len);
-		scope_txt[strlen(STAT_SCOPE_PATTERN) + si->applet.ctx.stats.scope_len] = 0;
+		memcpy(scope_txt + strlen(STAT_SCOPE_PATTERN), bo_ptr(si->ob->buf) + si->appctx.ctx.stats.scope_str, si->appctx.ctx.stats.scope_len);
+		scope_txt[strlen(STAT_SCOPE_PATTERN) + si->appctx.ctx.stats.scope_len] = 0;
 	}
 
-	if (si->applet.ctx.stats.flags & STAT_HIDE_DOWN)
+	if (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN)
 		chunk_appendf(&trash,
 		              "<li><a href=\"%s%s%s%s\">Show all servers</a><br>\n",
 		              uri->uri_prefix,
 		              "",
-		              (si->applet.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
+		              (si->appctx.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
 			      scope_txt);
 	else
 		chunk_appendf(&trash,
 		              "<li><a href=\"%s%s%s%s\">Hide 'DOWN' servers</a><br>\n",
 		              uri->uri_prefix,
 		              ";up",
-		              (si->applet.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
+		              (si->appctx.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
 			      scope_txt);
 
 	if (uri->refresh > 0) {
-		if (si->applet.ctx.stats.flags & STAT_NO_REFRESH)
+		if (si->appctx.ctx.stats.flags & STAT_NO_REFRESH)
 			chunk_appendf(&trash,
 			              "<li><a href=\"%s%s%s%s\">Enable refresh</a><br>\n",
 			              uri->uri_prefix,
-			              (si->applet.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
+			              (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
 			              "",
 				      scope_txt);
 		else
 			chunk_appendf(&trash,
 			              "<li><a href=\"%s%s%s%s\">Disable refresh</a><br>\n",
 			              uri->uri_prefix,
-			              (si->applet.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
+			              (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
 			              ";norefresh",
 				      scope_txt);
 	}
@@ -3280,8 +3280,8 @@
 	chunk_appendf(&trash,
 	              "<li><a href=\"%s%s%s%s\">Refresh now</a><br>\n",
 	              uri->uri_prefix,
-	              (si->applet.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
-	              (si->applet.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
+	              (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
+	              (si->appctx.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
 		      scope_txt);
 
 	chunk_appendf(&trash,
@@ -3303,16 +3303,16 @@
 	              ""
 	              );
 
-	if (si->applet.ctx.stats.st_code) {
-		switch (si->applet.ctx.stats.st_code) {
+	if (si->appctx.ctx.stats.st_code) {
+		switch (si->appctx.ctx.stats.st_code) {
 		case STAT_STATUS_DONE:
 			chunk_appendf(&trash,
 			              "<p><div class=active3>"
 			              "<a class=lfsb href=\"%s%s%s%s\" title=\"Remove this message\">[X]</a> "
 			              "Action processed successfully."
 			              "</div>\n", uri->uri_prefix,
-			              (si->applet.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
-			              (si->applet.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
+			              (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
+			              (si->appctx.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
 			              scope_txt);
 			break;
 		case STAT_STATUS_NONE:
@@ -3321,8 +3321,8 @@
 			              "<a class=lfsb href=\"%s%s%s%s\" title=\"Remove this message\">[X]</a> "
 			              "Nothing has changed."
 			              "</div>\n", uri->uri_prefix,
-			              (si->applet.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
-			              (si->applet.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
+			              (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
+			              (si->appctx.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
 			              scope_txt);
 			break;
 		case STAT_STATUS_PART:
@@ -3332,8 +3332,8 @@
 			              "Action partially processed.<br>"
 			              "Some server names are probably unknown or ambiguous (duplicated names in the backend)."
 			              "</div>\n", uri->uri_prefix,
-			              (si->applet.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
-			              (si->applet.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
+			              (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
+			              (si->appctx.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
 			              scope_txt);
 			break;
 		case STAT_STATUS_ERRP:
@@ -3347,8 +3347,8 @@
 			              "<li>Some server names are probably unknown or ambiguous (duplicated names in the backend).</li>"
 			              "</ul>"
 			              "</div>\n", uri->uri_prefix,
-			              (si->applet.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
-			              (si->applet.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
+			              (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
+			              (si->appctx.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
 			              scope_txt);
 			break;
 		case STAT_STATUS_EXCD:
@@ -3358,8 +3358,8 @@
 			              "<b>Action not processed : the buffer couldn't store all the data.<br>"
 			              "You should retry with less servers at a time.</b>"
 			              "</div>\n", uri->uri_prefix,
-			              (si->applet.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
-			              (si->applet.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
+			              (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
+			              (si->appctx.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
 			              scope_txt);
 			break;
 		case STAT_STATUS_DENY:
@@ -3368,8 +3368,8 @@
 			              "<a class=lfsb href=\"%s%s%s%s\" title=\"Remove this message\">[X]</a> "
 			              "<b>Action denied.</b>"
 			              "</div>\n", uri->uri_prefix,
-			              (si->applet.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
-			              (si->applet.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
+			              (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
+			              (si->appctx.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
 			              scope_txt);
 			break;
 		default:
@@ -3378,8 +3378,8 @@
 			              "<a class=lfsb href=\"%s%s%s%s\" title=\"Remove this message\">[X]</a> "
 			              "Unexpected result."
 			              "</div>\n", uri->uri_prefix,
-			              (si->applet.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
-			              (si->applet.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
+			              (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
+			              (si->appctx.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
 			              scope_txt);
 		}
 		chunk_appendf(&trash, "<p>\n");
@@ -3408,13 +3408,13 @@
 
 	chunk_reset(&trash);
 
-	switch (si->applet.st2) {
+	switch (si->appctx.st2) {
 	case STAT_ST_INIT:
-		si->applet.st2 = STAT_ST_HEAD; /* let's start producing data */
+		si->appctx.st2 = STAT_ST_HEAD; /* let's start producing data */
 		/* fall through */
 
 	case STAT_ST_HEAD:
-		if (si->applet.ctx.stats.flags & STAT_FMT_HTML)
+		if (si->appctx.ctx.stats.flags & STAT_FMT_HTML)
 			stats_dump_html_head(uri);
 		else
 			stats_dump_csv_header();
@@ -3422,49 +3422,49 @@
 		if (bi_putchk(rep, &trash) == -1)
 			return 0;
 
-		si->applet.st2 = STAT_ST_INFO;
+		si->appctx.st2 = STAT_ST_INFO;
 		/* fall through */
 
 	case STAT_ST_INFO:
-		if (si->applet.ctx.stats.flags & STAT_FMT_HTML) {
+		if (si->appctx.ctx.stats.flags & STAT_FMT_HTML) {
 			stats_dump_html_info(si, uri);
 			if (bi_putchk(rep, &trash) == -1)
 				return 0;
 		}
 
-		si->applet.ctx.stats.px = proxy;
-		si->applet.ctx.stats.px_st = STAT_PX_ST_INIT;
-		si->applet.st2 = STAT_ST_LIST;
+		si->appctx.ctx.stats.px = proxy;
+		si->appctx.ctx.stats.px_st = STAT_PX_ST_INIT;
+		si->appctx.st2 = STAT_ST_LIST;
 		/* fall through */
 
 	case STAT_ST_LIST:
 		/* dump proxies */
-		while (si->applet.ctx.stats.px) {
+		while (si->appctx.ctx.stats.px) {
 			if (buffer_almost_full(rep->buf))
 				return 0;
 
-			px = si->applet.ctx.stats.px;
+			px = si->appctx.ctx.stats.px;
 			/* skip the disabled proxies, global frontend and non-networked ones */
 			if (px->state != PR_STSTOPPED && px->uuid > 0 && (px->cap & (PR_CAP_FE | PR_CAP_BE)))
 				if (stats_dump_proxy_to_buffer(si, px, uri) == 0)
 					return 0;
 
-			si->applet.ctx.stats.px = px->next;
-			si->applet.ctx.stats.px_st = STAT_PX_ST_INIT;
+			si->appctx.ctx.stats.px = px->next;
+			si->appctx.ctx.stats.px_st = STAT_PX_ST_INIT;
 		}
 		/* here, we just have reached the last proxy */
 
-		si->applet.st2 = STAT_ST_END;
+		si->appctx.st2 = STAT_ST_END;
 		/* fall through */
 
 	case STAT_ST_END:
-		if (si->applet.ctx.stats.flags & STAT_FMT_HTML) {
+		if (si->appctx.ctx.stats.flags & STAT_FMT_HTML) {
 			stats_dump_html_end();
 			if (bi_putchk(rep, &trash) == -1)
 				return 0;
 		}
 
-		si->applet.st2 = STAT_ST_FIN;
+		si->appctx.st2 = STAT_ST_FIN;
 		/* fall through */
 
 	case STAT_ST_FIN:
@@ -3472,7 +3472,7 @@
 
 	default:
 		/* unknown state ! */
-		si->applet.st2 = STAT_ST_FIN;
+		si->appctx.st2 = STAT_ST_FIN;
 		return -1;
 	}
 }
@@ -3505,14 +3505,14 @@
 	temp = get_trash_chunk();
 	if (temp->size < s->txn.req.body_len) {
 		/* too large request */
-		si->applet.ctx.stats.st_code = STAT_STATUS_EXCD;
+		si->appctx.ctx.stats.st_code = STAT_STATUS_EXCD;
 		goto out;
 	}
 
 	reql = bo_getblk(si->ob, temp->str, s->txn.req.body_len, s->txn.req.eoh + 2);
 	if (reql <= 0) {
 		/* we need more data */
-		si->applet.ctx.stats.st_code = STAT_STATUS_NONE;
+		si->appctx.ctx.stats.st_code = STAT_STATUS_NONE;
 		return 0;
 	}
 
@@ -3521,7 +3521,7 @@
 	cur_param = next_param = end_params;
 	*end_params = '\0';
 
-	si->applet.ctx.stats.st_code = STAT_STATUS_NONE;
+	si->appctx.ctx.stats.st_code = STAT_STATUS_NONE;
 
 	/*
 	 * Parse the parameters in reverse order to only store the last value.
@@ -3542,7 +3542,7 @@
 				strncpy(key, cur_param + poffset, plen);
 				key[plen - 1] = '\0';
 			} else {
-				si->applet.ctx.stats.st_code = STAT_STATUS_EXCD;
+				si->appctx.ctx.stats.st_code = STAT_STATUS_EXCD;
 				goto out;
 			}
 
@@ -3562,7 +3562,7 @@
 			if (!px && (strcmp(key, "b") == 0)) {
 				if ((px = findproxy(value, PR_CAP_BE)) == NULL) {
 					/* the backend name is unknown or ambiguous (duplicate names) */
-					si->applet.ctx.stats.st_code = STAT_STATUS_ERRP;
+					si->appctx.ctx.stats.st_code = STAT_STATUS_ERRP;
 					goto out;
 				}
 			}
@@ -3583,7 +3583,7 @@
 					action = ST_ADM_ACTION_SHUTDOWN;
 				}
 				else {
-					si->applet.ctx.stats.st_code = STAT_STATUS_ERRP;
+					si->appctx.ctx.stats.st_code = STAT_STATUS_ERRP;
 					goto out;
 				}
 			}
@@ -3666,16 +3666,16 @@
 	}
 
 	if (total_servers == 0) {
-		si->applet.ctx.stats.st_code = STAT_STATUS_NONE;
+		si->appctx.ctx.stats.st_code = STAT_STATUS_NONE;
 	}
 	else if (altered_servers == 0) {
-		si->applet.ctx.stats.st_code = STAT_STATUS_ERRP;
+		si->appctx.ctx.stats.st_code = STAT_STATUS_ERRP;
 	}
 	else if (altered_servers == total_servers) {
-		si->applet.ctx.stats.st_code = STAT_STATUS_DONE;
+		si->appctx.ctx.stats.st_code = STAT_STATUS_DONE;
 	}
 	else {
-		si->applet.ctx.stats.st_code = STAT_STATUS_PART;
+		si->appctx.ctx.stats.st_code = STAT_STATUS_PART;
 	}
  out:
 	return 1;
@@ -3692,9 +3692,9 @@
 		     "Cache-Control: no-cache\r\n"
 		     "Connection: close\r\n"
 		     "Content-Type: %s\r\n",
-		     (si->applet.ctx.stats.flags & STAT_FMT_HTML) ? "text/html" : "text/plain");
+		     (si->appctx.ctx.stats.flags & STAT_FMT_HTML) ? "text/html" : "text/plain");
 
-	if (uri->refresh > 0 && !(si->applet.ctx.stats.flags & STAT_NO_REFRESH))
+	if (uri->refresh > 0 && !(si->appctx.ctx.stats.flags & STAT_NO_REFRESH))
 		chunk_appendf(&trash, "Refresh: %d\r\n",
 			      uri->refresh);
 
@@ -3715,12 +3715,12 @@
 	struct session *s = session_from_task(si->owner);
 	struct uri_auth *uri = s->be->uri_auth;
 
-	/* scope_txt = search pattern + search query, si->applet.ctx.stats.scope_len is always <= STAT_SCOPE_TXT_MAXLEN */
+	/* scope_txt = search pattern + search query, si->appctx.ctx.stats.scope_len is always <= STAT_SCOPE_TXT_MAXLEN */
 	scope_txt[0] = 0;
-	if (si->applet.ctx.stats.scope_len) {
+	if (si->appctx.ctx.stats.scope_len) {
 		strcpy(scope_txt, STAT_SCOPE_PATTERN);
-		memcpy(scope_txt + strlen(STAT_SCOPE_PATTERN), bo_ptr(si->ob->buf) + si->applet.ctx.stats.scope_str, si->applet.ctx.stats.scope_len);
-		scope_txt[strlen(STAT_SCOPE_PATTERN) + si->applet.ctx.stats.scope_len] = 0;
+		memcpy(scope_txt + strlen(STAT_SCOPE_PATTERN), bo_ptr(si->ob->buf) + si->appctx.ctx.stats.scope_str, si->appctx.ctx.stats.scope_len);
+		scope_txt[strlen(STAT_SCOPE_PATTERN) + si->appctx.ctx.stats.scope_len] = 0;
 	}
 
 	/* We don't want to land on the posted stats page because a refresh will
@@ -3735,13 +3735,13 @@
 		     "Location: %s;st=%s%s%s%s\r\n"
 		     "\r\n",
 		     uri->uri_prefix,
-		     ((si->applet.ctx.stats.st_code > STAT_STATUS_INIT) &&
-		      (si->applet.ctx.stats.st_code < STAT_STATUS_SIZE) &&
-		      stat_status_codes[si->applet.ctx.stats.st_code]) ?
-		     stat_status_codes[si->applet.ctx.stats.st_code] :
+		     ((si->appctx.ctx.stats.st_code > STAT_STATUS_INIT) &&
+		      (si->appctx.ctx.stats.st_code < STAT_STATUS_SIZE) &&
+		      stat_status_codes[si->appctx.ctx.stats.st_code]) ?
+		     stat_status_codes[si->appctx.ctx.stats.st_code] :
 		     stat_status_codes[STAT_STATUS_UNKN],
-		     (si->applet.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
-		     (si->applet.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
+		     (si->appctx.ctx.stats.flags & STAT_HIDE_DOWN) ? ";up" : "",
+		     (si->appctx.ctx.stats.flags & STAT_NO_REFRESH) ? ";norefresh" : "",
 		     scope_txt);
 
 	s->txn.status = 303;
@@ -3755,7 +3755,7 @@
 
 /* This I/O handler runs as an applet embedded in a stream interface. It is
  * used to send HTTP stats over a TCP socket. The mechanism is very simple.
- * si->applet.st0 contains the operation in progress (dump, done). The handler
+ * si->appctx.st0 contains the operation in progress (dump, done). The handler
  * automatically unregisters itself once transfer is complete.
  */
 static void http_stats_io_handler(struct stream_interface *si)
@@ -3769,42 +3769,42 @@
 
 	/* check that the output is not closed */
 	if (res->flags & (CF_SHUTW|CF_SHUTW_NOW))
-		si->applet.st0 = STAT_HTTP_DONE;
+		si->appctx.st0 = STAT_HTTP_DONE;
 
 	/* all states are processed in sequence */
-	if (si->applet.st0 == STAT_HTTP_HEAD) {
+	if (si->appctx.st0 == STAT_HTTP_HEAD) {
 		if (stats_send_http_headers(si)) {
 			if (s->txn.meth == HTTP_METH_HEAD)
-				si->applet.st0 = STAT_HTTP_DONE;
+				si->appctx.st0 = STAT_HTTP_DONE;
 			else
-				si->applet.st0 = STAT_HTTP_DUMP;
+				si->appctx.st0 = STAT_HTTP_DUMP;
 		}
 	}
 
-	if (si->applet.st0 == STAT_HTTP_DUMP) {
+	if (si->appctx.st0 == STAT_HTTP_DUMP) {
 		if (stats_dump_stat_to_buffer(si, s->be->uri_auth))
-			si->applet.st0 = STAT_HTTP_DONE;
+			si->appctx.st0 = STAT_HTTP_DONE;
 	}
 
-	if (si->applet.st0 == STAT_HTTP_POST) {
+	if (si->appctx.st0 == STAT_HTTP_POST) {
 		if (stats_process_http_post(si))
-			si->applet.st0 = STAT_HTTP_LAST;
+			si->appctx.st0 = STAT_HTTP_LAST;
 		else if (si->ob->flags & CF_SHUTR)
-			si->applet.st0 = STAT_HTTP_DONE;
+			si->appctx.st0 = STAT_HTTP_DONE;
 	}
 
-	if (si->applet.st0 == STAT_HTTP_LAST) {
+	if (si->appctx.st0 == STAT_HTTP_LAST) {
 		if (stats_send_http_redirect(si))
-			si->applet.st0 = STAT_HTTP_DONE;
+			si->appctx.st0 = STAT_HTTP_DONE;
 	}
 
-	if (si->applet.st0 == STAT_HTTP_DONE)
+	if (si->appctx.st0 == STAT_HTTP_DONE)
 		si_shutw(si);
 
 	if ((res->flags & CF_SHUTR) && (si->state == SI_ST_EST))
 		si_shutw(si);
 
-	if (si->applet.st0 == STAT_HTTP_DONE) {
+	if (si->appctx.st0 == STAT_HTTP_DONE) {
 		if ((req->flags & CF_SHUTW) && (si->state == SI_ST_EST)) {
 			si_shutr(si);
 			res->flags |= CF_READ_NULL;
@@ -3884,20 +3884,20 @@
 
 	chunk_reset(&trash);
 
-	if (si->applet.ctx.sess.section > 0 && si->applet.ctx.sess.uid != sess->uniq_id) {
+	if (si->appctx.ctx.sess.section > 0 && si->appctx.ctx.sess.uid != sess->uniq_id) {
 		/* session changed, no need to go any further */
 		chunk_appendf(&trash, "  *** session terminated while we were watching it ***\n");
 		if (bi_putchk(si->ib, &trash) == -1)
 			return 0;
-		si->applet.ctx.sess.uid = 0;
-		si->applet.ctx.sess.section = 0;
+		si->appctx.ctx.sess.uid = 0;
+		si->appctx.ctx.sess.section = 0;
 		return 1;
 	}
 
-	switch (si->applet.ctx.sess.section) {
+	switch (si->appctx.ctx.sess.section) {
 	case 0: /* main status of the session */
-		si->applet.ctx.sess.uid = sess->uniq_id;
-		si->applet.ctx.sess.section = 1;
+		si->appctx.ctx.sess.uid = sess->uniq_id;
+		si->appctx.ctx.sess.section = 1;
 		/* fall through */
 
 	case 1:
@@ -4141,8 +4141,8 @@
 		/* use other states to dump the contents */
 	}
 	/* end of dump */
-	si->applet.ctx.sess.uid = 0;
-	si->applet.ctx.sess.section = 0;
+	si->appctx.ctx.sess.uid = 0;
+	si->appctx.ctx.sess.section = 0;
 	return 1;
 }
 
@@ -4157,10 +4157,10 @@
 		/* If we're forced to shut down, we might have to remove our
 		 * reference to the last session being dumped.
 		 */
-		if (si->applet.st2 == STAT_ST_LIST) {
-			if (!LIST_ISEMPTY(&si->applet.ctx.sess.bref.users)) {
-				LIST_DEL(&si->applet.ctx.sess.bref.users);
-				LIST_INIT(&si->applet.ctx.sess.bref.users);
+		if (si->appctx.st2 == STAT_ST_LIST) {
+			if (!LIST_ISEMPTY(&si->appctx.ctx.sess.bref.users)) {
+				LIST_DEL(&si->appctx.ctx.sess.bref.users);
+				LIST_INIT(&si->appctx.ctx.sess.bref.users);
 			}
 		}
 		return 1;
@@ -4168,7 +4168,7 @@
 
 	chunk_reset(&trash);
 
-	switch (si->applet.st2) {
+	switch (si->appctx.st2) {
 	case STAT_ST_INIT:
 		/* the function had not been called yet, let's prepare the
 		 * buffer for a response. We initialize the current session
@@ -4177,39 +4177,39 @@
 		 * this pointer. We know we have reached the end when this
 		 * pointer points back to the head of the sessions list.
 		 */
-		LIST_INIT(&si->applet.ctx.sess.bref.users);
-		si->applet.ctx.sess.bref.ref = sessions.n;
-		si->applet.st2 = STAT_ST_LIST;
+		LIST_INIT(&si->appctx.ctx.sess.bref.users);
+		si->appctx.ctx.sess.bref.ref = sessions.n;
+		si->appctx.st2 = STAT_ST_LIST;
 		/* fall through */
 
 	case STAT_ST_LIST:
 		/* first, let's detach the back-ref from a possible previous session */
-		if (!LIST_ISEMPTY(&si->applet.ctx.sess.bref.users)) {
-			LIST_DEL(&si->applet.ctx.sess.bref.users);
-			LIST_INIT(&si->applet.ctx.sess.bref.users);
+		if (!LIST_ISEMPTY(&si->appctx.ctx.sess.bref.users)) {
+			LIST_DEL(&si->appctx.ctx.sess.bref.users);
+			LIST_INIT(&si->appctx.ctx.sess.bref.users);
 		}
 
 		/* and start from where we stopped */
-		while (si->applet.ctx.sess.bref.ref != &sessions) {
+		while (si->appctx.ctx.sess.bref.ref != &sessions) {
 			char pn[INET6_ADDRSTRLEN];
 			struct session *curr_sess;
 
-			curr_sess = LIST_ELEM(si->applet.ctx.sess.bref.ref, struct session *, list);
+			curr_sess = LIST_ELEM(si->appctx.ctx.sess.bref.ref, struct session *, list);
 
-			if (si->applet.ctx.sess.target) {
-				if (si->applet.ctx.sess.target != (void *)-1 && si->applet.ctx.sess.target != curr_sess)
+			if (si->appctx.ctx.sess.target) {
+				if (si->appctx.ctx.sess.target != (void *)-1 && si->appctx.ctx.sess.target != curr_sess)
 					goto next_sess;
 
-				LIST_ADDQ(&curr_sess->back_refs, &si->applet.ctx.sess.bref.users);
+				LIST_ADDQ(&curr_sess->back_refs, &si->appctx.ctx.sess.bref.users);
 				/* call the proper dump() function and return if we're missing space */
 				if (!stats_dump_full_sess_to_buffer(si, curr_sess))
 					return 0;
 
 				/* session dump complete */
-				LIST_DEL(&si->applet.ctx.sess.bref.users);
-				LIST_INIT(&si->applet.ctx.sess.bref.users);
-				if (si->applet.ctx.sess.target != (void *)-1) {
-					si->applet.ctx.sess.target = NULL;
+				LIST_DEL(&si->appctx.ctx.sess.bref.users);
+				LIST_INIT(&si->appctx.ctx.sess.bref.users);
+				if (si->appctx.ctx.sess.target != (void *)-1) {
+					si->appctx.ctx.sess.target = NULL;
 					break;
 				}
 				else
@@ -4325,17 +4325,17 @@
 				/* let's try again later from this session. We add ourselves into
 				 * this session's users so that it can remove us upon termination.
 				 */
-				LIST_ADDQ(&curr_sess->back_refs, &si->applet.ctx.sess.bref.users);
+				LIST_ADDQ(&curr_sess->back_refs, &si->appctx.ctx.sess.bref.users);
 				return 0;
 			}
 
 		next_sess:
-			si->applet.ctx.sess.bref.ref = curr_sess->list.n;
+			si->appctx.ctx.sess.bref.ref = curr_sess->list.n;
 		}
 
-		if (si->applet.ctx.sess.target && si->applet.ctx.sess.target != (void *)-1) {
+		if (si->appctx.ctx.sess.target && si->appctx.ctx.sess.target != (void *)-1) {
 			/* specified session not found */
-			if (si->applet.ctx.sess.section > 0)
+			if (si->appctx.ctx.sess.section > 0)
 				chunk_appendf(&trash, "  *** session terminated while we were watching it ***\n");
 			else
 				chunk_appendf(&trash, "Session not found.\n");
@@ -4343,16 +4343,16 @@
 			if (bi_putchk(si->ib, &trash) == -1)
 				return 0;
 
-			si->applet.ctx.sess.target = NULL;
-			si->applet.ctx.sess.uid = 0;
+			si->appctx.ctx.sess.target = NULL;
+			si->appctx.ctx.sess.uid = 0;
 			return 1;
 		}
 
-		si->applet.st2 = STAT_ST_FIN;
+		si->appctx.st2 = STAT_ST_FIN;
 		/* fall through */
 
 	default:
-		si->applet.st2 = STAT_ST_FIN;
+		si->appctx.st2 = STAT_ST_FIN;
 		return 1;
 	}
 }
@@ -4363,9 +4363,9 @@
  */
 static void cli_release_handler(struct stream_interface *si)
 {
-	if (si->applet.st0 == STAT_CLI_O_SESS && si->applet.st2 == STAT_ST_LIST) {
-		if (!LIST_ISEMPTY(&si->applet.ctx.sess.bref.users))
-			LIST_DEL(&si->applet.ctx.sess.bref.users);
+	if (si->appctx.st0 == STAT_CLI_O_SESS && si->appctx.st2 == STAT_ST_LIST) {
+		if (!LIST_ISEMPTY(&si->appctx.ctx.sess.bref.users))
+			LIST_DEL(&si->appctx.ctx.sess.bref.users);
 	}
 }
 
@@ -4383,7 +4383,7 @@
 	int show = action == STAT_CLI_O_TAB;
 
 	/*
-	 * We have 3 possible states in si->applet.st2 :
+	 * We have 3 possible states in si->appctx.st2 :
 	 *   - STAT_ST_INIT : the first call
 	 *   - STAT_ST_INFO : the proxy pointer points to the next table to
 	 *     dump, the entry pointer is NULL ;
@@ -4396,65 +4396,65 @@
 
 	if (unlikely(si->ib->flags & (CF_WRITE_ERROR|CF_SHUTW))) {
 		/* in case of abort, remove any refcount we might have set on an entry */
-		if (si->applet.st2 == STAT_ST_LIST) {
-			si->applet.ctx.table.entry->ref_cnt--;
-			stksess_kill_if_expired(&si->applet.ctx.table.proxy->table, si->applet.ctx.table.entry);
+		if (si->appctx.st2 == STAT_ST_LIST) {
+			si->appctx.ctx.table.entry->ref_cnt--;
+			stksess_kill_if_expired(&si->appctx.ctx.table.proxy->table, si->appctx.ctx.table.entry);
 		}
 		return 1;
 	}
 
 	chunk_reset(&trash);
 
-	while (si->applet.st2 != STAT_ST_FIN) {
-		switch (si->applet.st2) {
+	while (si->appctx.st2 != STAT_ST_FIN) {
+		switch (si->appctx.st2) {
 		case STAT_ST_INIT:
-			si->applet.ctx.table.proxy = si->applet.ctx.table.target;
-			if (!si->applet.ctx.table.proxy)
-				si->applet.ctx.table.proxy = proxy;
+			si->appctx.ctx.table.proxy = si->appctx.ctx.table.target;
+			if (!si->appctx.ctx.table.proxy)
+				si->appctx.ctx.table.proxy = proxy;
 
-			si->applet.ctx.table.entry = NULL;
-			si->applet.st2 = STAT_ST_INFO;
+			si->appctx.ctx.table.entry = NULL;
+			si->appctx.st2 = STAT_ST_INFO;
 			break;
 
 		case STAT_ST_INFO:
-			if (!si->applet.ctx.table.proxy ||
-			    (si->applet.ctx.table.target &&
-			     si->applet.ctx.table.proxy != si->applet.ctx.table.target)) {
-				si->applet.st2 = STAT_ST_END;
+			if (!si->appctx.ctx.table.proxy ||
+			    (si->appctx.ctx.table.target &&
+			     si->appctx.ctx.table.proxy != si->appctx.ctx.table.target)) {
+				si->appctx.st2 = STAT_ST_END;
 				break;
 			}
 
-			if (si->applet.ctx.table.proxy->table.size) {
-				if (show && !stats_dump_table_head_to_buffer(&trash, si, si->applet.ctx.table.proxy,
-									     si->applet.ctx.table.target))
+			if (si->appctx.ctx.table.proxy->table.size) {
+				if (show && !stats_dump_table_head_to_buffer(&trash, si, si->appctx.ctx.table.proxy,
+									     si->appctx.ctx.table.target))
 					return 0;
 
-				if (si->applet.ctx.table.target &&
+				if (si->appctx.ctx.table.target &&
 				    s->listener->bind_conf->level >= ACCESS_LVL_OPER) {
 					/* dump entries only if table explicitly requested */
-					eb = ebmb_first(&si->applet.ctx.table.proxy->table.keys);
+					eb = ebmb_first(&si->appctx.ctx.table.proxy->table.keys);
 					if (eb) {
-						si->applet.ctx.table.entry = ebmb_entry(eb, struct stksess, key);
-						si->applet.ctx.table.entry->ref_cnt++;
-						si->applet.st2 = STAT_ST_LIST;
+						si->appctx.ctx.table.entry = ebmb_entry(eb, struct stksess, key);
+						si->appctx.ctx.table.entry->ref_cnt++;
+						si->appctx.st2 = STAT_ST_LIST;
 						break;
 					}
 				}
 			}
-			si->applet.ctx.table.proxy = si->applet.ctx.table.proxy->next;
+			si->appctx.ctx.table.proxy = si->appctx.ctx.table.proxy->next;
 			break;
 
 		case STAT_ST_LIST:
 			skip_entry = 0;
 
-			if (si->applet.ctx.table.data_type >= 0) {
+			if (si->appctx.ctx.table.data_type >= 0) {
 				/* we're filtering on some data contents */
 				void *ptr;
 				long long data;
 
-				dt = si->applet.ctx.table.data_type;
-				ptr = stktable_data_ptr(&si->applet.ctx.table.proxy->table,
-							si->applet.ctx.table.entry,
+				dt = si->appctx.ctx.table.data_type;
+				ptr = stktable_data_ptr(&si->appctx.ctx.table.proxy->table,
+							si->appctx.ctx.table.entry,
 							dt);
 
 				data = 0;
@@ -4470,57 +4470,57 @@
 					break;
 				case STD_T_FRQP:
 					data = read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
-								    si->applet.ctx.table.proxy->table.data_arg[dt].u);
+								    si->appctx.ctx.table.proxy->table.data_arg[dt].u);
 					break;
 				}
 
 				/* skip the entry if the data does not match the test and the value */
-				if ((data < si->applet.ctx.table.value &&
-				     (si->applet.ctx.table.data_op == STD_OP_EQ ||
-				      si->applet.ctx.table.data_op == STD_OP_GT ||
-				      si->applet.ctx.table.data_op == STD_OP_GE)) ||
-				    (data == si->applet.ctx.table.value &&
-				     (si->applet.ctx.table.data_op == STD_OP_NE ||
-				      si->applet.ctx.table.data_op == STD_OP_GT ||
-				      si->applet.ctx.table.data_op == STD_OP_LT)) ||
-				    (data > si->applet.ctx.table.value &&
-				     (si->applet.ctx.table.data_op == STD_OP_EQ ||
-				      si->applet.ctx.table.data_op == STD_OP_LT ||
-				      si->applet.ctx.table.data_op == STD_OP_LE)))
+				if ((data < si->appctx.ctx.table.value &&
+				     (si->appctx.ctx.table.data_op == STD_OP_EQ ||
+				      si->appctx.ctx.table.data_op == STD_OP_GT ||
+				      si->appctx.ctx.table.data_op == STD_OP_GE)) ||
+				    (data == si->appctx.ctx.table.value &&
+				     (si->appctx.ctx.table.data_op == STD_OP_NE ||
+				      si->appctx.ctx.table.data_op == STD_OP_GT ||
+				      si->appctx.ctx.table.data_op == STD_OP_LT)) ||
+				    (data > si->appctx.ctx.table.value &&
+				     (si->appctx.ctx.table.data_op == STD_OP_EQ ||
+				      si->appctx.ctx.table.data_op == STD_OP_LT ||
+				      si->appctx.ctx.table.data_op == STD_OP_LE)))
 					skip_entry = 1;
 			}
 
 			if (show && !skip_entry &&
-			    !stats_dump_table_entry_to_buffer(&trash, si, si->applet.ctx.table.proxy,
-							      si->applet.ctx.table.entry))
+			    !stats_dump_table_entry_to_buffer(&trash, si, si->appctx.ctx.table.proxy,
+							      si->appctx.ctx.table.entry))
 			    return 0;
 
-			si->applet.ctx.table.entry->ref_cnt--;
+			si->appctx.ctx.table.entry->ref_cnt--;
 
-			eb = ebmb_next(&si->applet.ctx.table.entry->key);
+			eb = ebmb_next(&si->appctx.ctx.table.entry->key);
 			if (eb) {
-				struct stksess *old = si->applet.ctx.table.entry;
-				si->applet.ctx.table.entry = ebmb_entry(eb, struct stksess, key);
+				struct stksess *old = si->appctx.ctx.table.entry;
+				si->appctx.ctx.table.entry = ebmb_entry(eb, struct stksess, key);
 				if (show)
-					stksess_kill_if_expired(&si->applet.ctx.table.proxy->table, old);
-				else if (!skip_entry && !si->applet.ctx.table.entry->ref_cnt)
-					stksess_kill(&si->applet.ctx.table.proxy->table, old);
-				si->applet.ctx.table.entry->ref_cnt++;
+					stksess_kill_if_expired(&si->appctx.ctx.table.proxy->table, old);
+				else if (!skip_entry && !si->appctx.ctx.table.entry->ref_cnt)
+					stksess_kill(&si->appctx.ctx.table.proxy->table, old);
+				si->appctx.ctx.table.entry->ref_cnt++;
 				break;
 			}
 
 
 			if (show)
-				stksess_kill_if_expired(&si->applet.ctx.table.proxy->table, si->applet.ctx.table.entry);
-			else if (!skip_entry && !si->applet.ctx.table.entry->ref_cnt)
-				stksess_kill(&si->applet.ctx.table.proxy->table, si->applet.ctx.table.entry);
+				stksess_kill_if_expired(&si->appctx.ctx.table.proxy->table, si->appctx.ctx.table.entry);
+			else if (!skip_entry && !si->appctx.ctx.table.entry->ref_cnt)
+				stksess_kill(&si->appctx.ctx.table.proxy->table, si->appctx.ctx.table.entry);
 
-			si->applet.ctx.table.proxy = si->applet.ctx.table.proxy->next;
-			si->applet.st2 = STAT_ST_INFO;
+			si->appctx.ctx.table.proxy = si->appctx.ctx.table.proxy->next;
+			si->appctx.st2 = STAT_ST_INFO;
 			break;
 
 		case STAT_ST_END:
-			si->applet.st2 = STAT_ST_FIN;
+			si->appctx.st2 = STAT_ST_FIN;
 			break;
 		}
 	}
@@ -4598,7 +4598,7 @@
 
 	chunk_reset(&trash);
 
-	if (!si->applet.ctx.errors.px) {
+	if (!si->appctx.ctx.errors.px) {
 		/* the function had not been called yet, let's prepare the
 		 * buffer for a response.
 		 */
@@ -4615,32 +4615,32 @@
 			return 0;
 		}
 
-		si->applet.ctx.errors.px = proxy;
-		si->applet.ctx.errors.buf = 0;
-		si->applet.ctx.errors.bol = 0;
-		si->applet.ctx.errors.ptr = -1;
+		si->appctx.ctx.errors.px = proxy;
+		si->appctx.ctx.errors.buf = 0;
+		si->appctx.ctx.errors.bol = 0;
+		si->appctx.ctx.errors.ptr = -1;
 	}
 
 	/* we have two inner loops here, one for the proxy, the other one for
 	 * the buffer.
 	 */
-	while (si->applet.ctx.errors.px) {
+	while (si->appctx.ctx.errors.px) {
 		struct error_snapshot *es;
 
-		if (si->applet.ctx.errors.buf == 0)
-			es = &si->applet.ctx.errors.px->invalid_req;
+		if (si->appctx.ctx.errors.buf == 0)
+			es = &si->appctx.ctx.errors.px->invalid_req;
 		else
-			es = &si->applet.ctx.errors.px->invalid_rep;
+			es = &si->appctx.ctx.errors.px->invalid_rep;
 
 		if (!es->when.tv_sec)
 			goto next;
 
-		if (si->applet.ctx.errors.iid >= 0 &&
-		    si->applet.ctx.errors.px->uuid != si->applet.ctx.errors.iid &&
-		    es->oe->uuid != si->applet.ctx.errors.iid)
+		if (si->appctx.ctx.errors.iid >= 0 &&
+		    si->appctx.ctx.errors.px->uuid != si->appctx.ctx.errors.iid &&
+		    es->oe->uuid != si->appctx.ctx.errors.iid)
 			goto next;
 
-		if (si->applet.ctx.errors.ptr < 0) {
+		if (si->appctx.ctx.errors.ptr < 0) {
 			/* just print headers now */
 
 			char pn[INET6_ADDRSTRLEN];
@@ -4661,12 +4661,12 @@
 				port = 0;
 			}
 
-			switch (si->applet.ctx.errors.buf) {
+			switch (si->appctx.ctx.errors.buf) {
 			case 0:
 				chunk_appendf(&trash,
 					     " frontend %s (#%d): invalid request\n"
 					     "  backend %s (#%d)",
-					     si->applet.ctx.errors.px->id, si->applet.ctx.errors.px->uuid,
+					     si->appctx.ctx.errors.px->id, si->appctx.ctx.errors.px->uuid,
 					     (es->oe->cap & PR_CAP_BE) ? es->oe->id : "<NONE>",
 					     (es->oe->cap & PR_CAP_BE) ? es->oe->uuid : -1);
 				break;
@@ -4674,7 +4674,7 @@
 				chunk_appendf(&trash,
 					     " backend %s (#%d) : invalid response\n"
 					     "  frontend %s (#%d)",
-					     si->applet.ctx.errors.px->id, si->applet.ctx.errors.px->uuid,
+					     si->appctx.ctx.errors.px->id, si->appctx.ctx.errors.px->uuid,
 					     es->oe->id, es->oe->uuid);
 				break;
 			}
@@ -4698,11 +4698,11 @@
 				/* Socket buffer full. Let's try again later from the same point */
 				return 0;
 			}
-			si->applet.ctx.errors.ptr = 0;
-			si->applet.ctx.errors.sid = es->sid;
+			si->appctx.ctx.errors.ptr = 0;
+			si->appctx.ctx.errors.sid = es->sid;
 		}
 
-		if (si->applet.ctx.errors.sid != es->sid) {
+		if (si->appctx.ctx.errors.sid != es->sid) {
 			/* the snapshot changed while we were dumping it */
 			chunk_appendf(&trash,
 				     "  WARNING! update detected on this snapshot, dump interrupted. Please re-check!\n");
@@ -4712,29 +4712,29 @@
 		}
 
 		/* OK, ptr >= 0, so we have to dump the current line */
-		while (si->applet.ctx.errors.ptr < es->len && si->applet.ctx.errors.ptr < sizeof(es->buf)) {
+		while (si->appctx.ctx.errors.ptr < es->len && si->appctx.ctx.errors.ptr < sizeof(es->buf)) {
 			int newptr;
 			int newline;
 
-			newline = si->applet.ctx.errors.bol;
-			newptr = dump_text_line(&trash, es->buf, sizeof(es->buf), es->len, &newline, si->applet.ctx.errors.ptr);
-			if (newptr == si->applet.ctx.errors.ptr)
+			newline = si->appctx.ctx.errors.bol;
+			newptr = dump_text_line(&trash, es->buf, sizeof(es->buf), es->len, &newline, si->appctx.ctx.errors.ptr);
+			if (newptr == si->appctx.ctx.errors.ptr)
 				return 0;
 
 			if (bi_putchk(si->ib, &trash) == -1) {
 				/* Socket buffer full. Let's try again later from the same point */
 				return 0;
 			}
-			si->applet.ctx.errors.ptr = newptr;
-			si->applet.ctx.errors.bol = newline;
+			si->appctx.ctx.errors.ptr = newptr;
+			si->appctx.ctx.errors.bol = newline;
 		};
 	next:
-		si->applet.ctx.errors.bol = 0;
-		si->applet.ctx.errors.ptr = -1;
-		si->applet.ctx.errors.buf++;
-		if (si->applet.ctx.errors.buf > 1) {
-			si->applet.ctx.errors.buf = 0;
-			si->applet.ctx.errors.px = si->applet.ctx.errors.px->next;
+		si->appctx.ctx.errors.bol = 0;
+		si->appctx.ctx.errors.ptr = -1;
+		si->appctx.ctx.errors.buf++;
+		if (si->appctx.ctx.errors.buf > 1) {
+			si->appctx.ctx.errors.buf = 0;
+			si->appctx.ctx.errors.px = si->appctx.ctx.errors.px->next;
 		}
 	}
 
diff --git a/src/peers.c b/src/peers.c
index 6ef4aa5..43d7249 100644
--- a/src/peers.c
+++ b/src/peers.c
@@ -184,10 +184,10 @@
 static void peer_session_release(struct stream_interface *si)
 {
 	struct session *s = session_from_task(si->owner);
-	struct peer_session *ps = (struct peer_session *)si->applet.ctx.peers.ptr;
+	struct peer_session *ps = (struct peer_session *)si->appctx.ctx.peers.ptr;
 
-	/* si->applet.ctx.peers.ptr is not a peer session */
-	if (si->applet.st0 < PEER_SESSION_SENDSUCCESS)
+	/* si->appctx.ctx.peers.ptr is not a peer session */
+	if (si->appctx.st0 < PEER_SESSION_SENDSUCCESS)
 		return;
 
 	/* peer session identified */
@@ -223,21 +223,21 @@
 
 	while (1) {
 switchstate:
-		switch(si->applet.st0) {
+		switch(si->appctx.st0) {
 			case PEER_SESSION_ACCEPT:
-				si->applet.ctx.peers.ptr = NULL;
-				si->applet.st0 = PEER_SESSION_GETVERSION;
+				si->appctx.ctx.peers.ptr = NULL;
+				si->appctx.st0 = PEER_SESSION_GETVERSION;
 				/* fall through */
 			case PEER_SESSION_GETVERSION:
 				reql = bo_getline(si->ob, trash.str, trash.size);
 				if (reql <= 0) { /* closed or EOL not found */
 					if (reql == 0)
 						goto out;
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 				if (trash.str[reql-1] != '\n') {
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 				else if (reql > 1 && (trash.str[reql-2] == '\r'))
@@ -249,26 +249,26 @@
 
 				/* test version */
 				if (strcmp(PEER_SESSION_PROTO_NAME " 1.0", trash.str) != 0) {
-					si->applet.st0 = PEER_SESSION_EXIT;
-					si->applet.st1 = PEER_SESSION_ERRVERSION;
+					si->appctx.st0 = PEER_SESSION_EXIT;
+					si->appctx.st1 = PEER_SESSION_ERRVERSION;
 					/* test protocol */
 					if (strncmp(PEER_SESSION_PROTO_NAME " ", trash.str, strlen(PEER_SESSION_PROTO_NAME)+1) != 0)
-						si->applet.st1 = PEER_SESSION_ERRPROTO;
+						si->appctx.st1 = PEER_SESSION_ERRPROTO;
 					goto switchstate;
 				}
 
-				si->applet.st0 = PEER_SESSION_GETHOST;
+				si->appctx.st0 = PEER_SESSION_GETHOST;
 				/* fall through */
 			case PEER_SESSION_GETHOST:
 				reql = bo_getline(si->ob, trash.str, trash.size);
 				if (reql <= 0) { /* closed or EOL not found */
 					if (reql == 0)
 						goto out;
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 				if (trash.str[reql-1] != '\n') {
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 				else if (reql > 1 && (trash.str[reql-2] == '\r'))
@@ -280,12 +280,12 @@
 
 				/* test hostname match */
 				if (strcmp(localpeer, trash.str) != 0) {
-					si->applet.st0 = PEER_SESSION_EXIT;
-					si->applet.st1 = PEER_SESSION_ERRHOST;
+					si->appctx.st0 = PEER_SESSION_EXIT;
+					si->appctx.st1 = PEER_SESSION_ERRHOST;
 					goto switchstate;
 				}
 
-				si->applet.st0 = PEER_SESSION_GETPEER;
+				si->appctx.st0 = PEER_SESSION_GETPEER;
 				/* fall through */
 			case PEER_SESSION_GETPEER: {
 				struct peer *curpeer;
@@ -294,12 +294,12 @@
 				if (reql <= 0) { /* closed or EOL not found */
 					if (reql == 0)
 						goto out;
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 				if (trash.str[reql-1] != '\n') {
 					/* Incomplete line, we quit */
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 				else if (reql > 1 && (trash.str[reql-2] == '\r'))
@@ -312,8 +312,8 @@
 				/* parse line "<peer name> <pid>" */
 				p = strchr(trash.str, ' ');
 				if (!p) {
-					si->applet.st0 = PEER_SESSION_EXIT;
-					si->applet.st1 = PEER_SESSION_ERRPROTO;
+					si->appctx.st0 = PEER_SESSION_EXIT;
+					si->appctx.st1 = PEER_SESSION_ERRPROTO;
 					goto switchstate;
 				}
 				*p = 0;
@@ -326,17 +326,17 @@
 
 				/* if unknown peer */
 				if (!curpeer) {
-					si->applet.st0 = PEER_SESSION_EXIT;
-					si->applet.st1 = PEER_SESSION_ERRPEER;
+					si->appctx.st0 = PEER_SESSION_EXIT;
+					si->appctx.st1 = PEER_SESSION_ERRPEER;
 					goto switchstate;
 				}
 
-				si->applet.ctx.peers.ptr = curpeer;
-				si->applet.st0 = PEER_SESSION_GETTABLE;
+				si->appctx.ctx.peers.ptr = curpeer;
+				si->appctx.st0 = PEER_SESSION_GETTABLE;
 				/* fall through */
 			}
 			case PEER_SESSION_GETTABLE: {
-				struct peer *curpeer = (struct peer *)si->applet.ctx.peers.ptr;
+				struct peer *curpeer = (struct peer *)si->appctx.ctx.peers.ptr;
 				struct shared_table *st;
 				struct peer_session *ps = NULL;
 				unsigned long key_type;
@@ -347,16 +347,16 @@
 				if (reql <= 0) { /* closed or EOL not found */
 					if (reql == 0)
 						goto out;
-					si->applet.ctx.peers.ptr = NULL;
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.ctx.peers.ptr = NULL;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
-				/* Re init si->applet.ctx.peers.ptr to null, to handle correctly a release case */
-				si->applet.ctx.peers.ptr = NULL;
+				/* Re init si->appctx.ctx.peers.ptr to null, to handle correctly a release case */
+				si->appctx.ctx.peers.ptr = NULL;
 
 				if (trash.str[reql-1] != '\n') {
 					/* Incomplete line, we quit */
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 				else if (reql > 1 && (trash.str[reql-2] == '\r'))
@@ -369,8 +369,8 @@
 				/* Parse line "<table name> <type> <size>" */
 				p = strchr(trash.str, ' ');
 				if (!p) {
-					si->applet.st0 = PEER_SESSION_EXIT;
-					si->applet.st1 = PEER_SESSION_ERRPROTO;
+					si->appctx.st0 = PEER_SESSION_EXIT;
+					si->appctx.st1 = PEER_SESSION_ERRPROTO;
 					goto switchstate;
 				}
 				*p = 0;
@@ -378,9 +378,9 @@
 
 				p = strchr(p+1, ' ');
 				if (!p) {
-					si->applet.ctx.peers.ptr = NULL;
-					si->applet.st0 = PEER_SESSION_EXIT;
-					si->applet.st1 = PEER_SESSION_ERRPROTO;
+					si->appctx.ctx.peers.ptr = NULL;
+					si->appctx.st0 = PEER_SESSION_EXIT;
+					si->appctx.st1 = PEER_SESSION_ERRPROTO;
 					goto switchstate;
 				}
 
@@ -395,15 +395,15 @@
 						if (key_size != st->table->key_size &&
 						    (key_type != STKTABLE_TYPE_STRING ||
 						     1 + 4 + 4 + key_size - 1 >= trash.size)) {
-							si->applet.st0 = PEER_SESSION_EXIT;
-							si->applet.st1 = PEER_SESSION_ERRSIZE;
+							si->appctx.st0 = PEER_SESSION_EXIT;
+							si->appctx.st1 = PEER_SESSION_ERRSIZE;
 							goto switchstate;
 						}
 
 						/* If key type mismatches */
 						if (key_type != st->table->type) {
-							si->applet.st0 = PEER_SESSION_EXIT;
-							si->applet.st1 = PEER_SESSION_ERRTYPE;
+							si->appctx.st0 = PEER_SESSION_EXIT;
+							si->appctx.st1 = PEER_SESSION_ERRTYPE;
 							goto switchstate;
 						}
 
@@ -414,8 +414,8 @@
 								if (ps->session && ps->session != s) {
 									if (ps->peer->local) {
 										/* Local connection, reply a retry */
-										si->applet.st0 = PEER_SESSION_EXIT;
-										si->applet.st1 = PEER_SESSION_TRYAGAIN;
+										si->appctx.st0 = PEER_SESSION_EXIT;
+										si->appctx.st1 = PEER_SESSION_TRYAGAIN;
 										goto switchstate;
 									}
 									peer_session_forceshutdown(ps->session);
@@ -430,31 +430,31 @@
 
 				/* If table not found */
 				if (!st){
-					si->applet.st0 = PEER_SESSION_EXIT;
-					si->applet.st1 = PEER_SESSION_ERRTABLE;
+					si->appctx.st0 = PEER_SESSION_EXIT;
+					si->appctx.st1 = PEER_SESSION_ERRTABLE;
 					goto switchstate;
 				}
 
 				/* If no peer session for current peer */
 				if (!ps) {
-					si->applet.st0 = PEER_SESSION_EXIT;
-					si->applet.st1 = PEER_SESSION_ERRPEER;
+					si->appctx.st0 = PEER_SESSION_EXIT;
+					si->appctx.st1 = PEER_SESSION_ERRPEER;
 					goto switchstate;
 				}
 
-				si->applet.ctx.peers.ptr = ps;
-				si->applet.st0 = PEER_SESSION_SENDSUCCESS;
+				si->appctx.ctx.peers.ptr = ps;
+				si->appctx.st0 = PEER_SESSION_SENDSUCCESS;
 				/* fall through */
 			}
 			case PEER_SESSION_SENDSUCCESS:{
-				struct peer_session *ps = (struct peer_session *)si->applet.ctx.peers.ptr;
+				struct peer_session *ps = (struct peer_session *)si->appctx.ctx.peers.ptr;
 
 				repl = snprintf(trash.str, trash.size, "%d\n", PEER_SESSION_SUCCESSCODE);
 				repl = bi_putblk(si->ib, trash.str, repl);
 				if (repl <= 0) {
 					if (repl == -1)
 						goto out;
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 
@@ -493,11 +493,11 @@
 					ps->table->flags |= SHTABLE_F_RESYNC_ASSIGN;
 				}
 				/* switch to waiting message state */
-				si->applet.st0 = PEER_SESSION_WAITMSG;
+				si->appctx.st0 = PEER_SESSION_WAITMSG;
 				goto switchstate;
 			}
 			case PEER_SESSION_CONNECT: {
-				struct peer_session *ps = (struct peer_session *)si->applet.ctx.peers.ptr;
+				struct peer_session *ps = (struct peer_session *)si->appctx.ctx.peers.ptr;
 
 				/* Send headers */
 				repl = snprintf(trash.str, trash.size,
@@ -510,7 +510,7 @@
 				                (int)ps->table->table->key_size);
 
 				if (repl >= trash.size) {
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 
@@ -518,16 +518,16 @@
 				if (repl <= 0) {
 					if (repl == -1)
 						goto out;
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 
 				/* switch to the waiting statuscode state */
-				si->applet.st0 = PEER_SESSION_GETSTATUS;
+				si->appctx.st0 = PEER_SESSION_GETSTATUS;
 				/* fall through */
 			}
 			case PEER_SESSION_GETSTATUS: {
-				struct peer_session *ps = (struct peer_session *)si->applet.ctx.peers.ptr;
+				struct peer_session *ps = (struct peer_session *)si->appctx.ctx.peers.ptr;
 
 				if (si->ib->flags & CF_WRITE_PARTIAL)
 					ps->statuscode = PEER_SESSION_CONNECTEDCODE;
@@ -536,12 +536,12 @@
 				if (reql <= 0) { /* closed or EOL not found */
 					if (reql == 0)
 						goto out;
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 				if (trash.str[reql-1] != '\n') {
 					/* Incomplete line, we quit */
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 				else if (reql > 1 && (trash.str[reql-2] == '\r'))
@@ -591,14 +591,14 @@
 				}
 				else {
 					/* Status code is not success, abort */
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
-				si->applet.st0 = PEER_SESSION_WAITMSG;
+				si->appctx.st0 = PEER_SESSION_WAITMSG;
 				/* fall through */
 			}
 			case PEER_SESSION_WAITMSG: {
-				struct peer_session *ps = (struct peer_session *)si->applet.ctx.peers.ptr;
+				struct peer_session *ps = (struct peer_session *)si->appctx.ctx.peers.ptr;
 				struct stksess *ts, *newts = NULL;
 				char c;
 				int totl = 0;
@@ -771,7 +771,7 @@
 					if (stopping) {
 						/* Close session, push resync no more needed */
 						ps->flags |= PEER_F_TEACH_COMPLETE;
-						si->applet.st0 = PEER_SESSION_END;
+						si->appctx.st0 = PEER_SESSION_END;
 						goto switchstate;
 					}
 
@@ -813,7 +813,7 @@
 				}
 				else {
 					/* Unknown message */
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 
@@ -834,7 +834,7 @@
 
 				if (reql < 0) {
 					/* there was an error */
-					si->applet.st0 = PEER_SESSION_END;
+					si->appctx.st0 = PEER_SESSION_END;
 					goto switchstate;
 				}
 
@@ -848,7 +848,7 @@
 						/* no more write possible */
 						if (repl == -1)
 							goto out;
-						si->applet.st0 = PEER_SESSION_END;
+						si->appctx.st0 = PEER_SESSION_END;
 						goto switchstate;
 					}
 					ps->confirm--;
@@ -865,7 +865,7 @@
 						/* no more write possible */
 						if (repl == -1)
 							goto out;
-						si->applet.st0 = PEER_SESSION_END;
+						si->appctx.st0 = PEER_SESSION_END;
 						goto switchstate;
 					}
 					ps->table->flags |= SHTABLE_F_RESYNC_PROCESS;
@@ -884,7 +884,7 @@
 						/* no more write possible */
 						if (repl == -1)
 							goto out;
-						si->applet.st0 = PEER_SESSION_END;
+						si->appctx.st0 = PEER_SESSION_END;
 						goto switchstate;
 					}
 					ps->lastack = ps->pushack;
@@ -920,7 +920,7 @@
 									/* no more write possible */
 									if (repl == -1)
 										goto out;
-									si->applet.st0 = PEER_SESSION_END;
+									si->appctx.st0 = PEER_SESSION_END;
 									goto switchstate;
 								}
 								ps->lastpush = ps->pushed = ts->upd.key;
@@ -954,7 +954,7 @@
 									/* no more write possible */
 									if (repl == -1)
 										goto out;
-									si->applet.st0 = PEER_SESSION_END;
+									si->appctx.st0 = PEER_SESSION_END;
 									goto switchstate;
 								}
 								ps->lastpush = ps->pushed = ts->upd.key;
@@ -970,7 +970,7 @@
 							/* no more write possible */
 							if (repl == -1)
 								goto out;
-							si->applet.st0 = PEER_SESSION_END;
+							si->appctx.st0 = PEER_SESSION_END;
 							goto switchstate;
 						}
 
@@ -1012,7 +1012,7 @@
 								/* no more write possible */
 								if (repl == -1)
 									goto out;
-								si->applet.st0 = PEER_SESSION_END;
+								si->appctx.st0 = PEER_SESSION_END;
 								goto switchstate;
 							}
 							ps->lastpush = ps->pushed = ts->upd.key;
@@ -1024,11 +1024,11 @@
 				goto out;
 			}
 			case PEER_SESSION_EXIT:
-				repl = snprintf(trash.str, trash.size, "%d\n", si->applet.st1);
+				repl = snprintf(trash.str, trash.size, "%d\n", si->appctx.st1);
 
 				if (bi_putblk(si->ib, trash.str, repl) == -1)
 					goto out;
-				si->applet.st0 = PEER_SESSION_END;
+				si->appctx.st0 = PEER_SESSION_END;
 				/* fall through */
 			case PEER_SESSION_END: {
 				si_shutw(si);
@@ -1071,8 +1071,8 @@
 
 	/* call release to reinit resync states if needed */
 	peer_session_release(oldsi);
-	oldsi->applet.st0 = PEER_SESSION_END;
-	oldsi->applet.ctx.peers.ptr = NULL;
+	oldsi->appctx.st0 = PEER_SESSION_END;
+	oldsi->appctx.ctx.peers.ptr = NULL;
 	task_wakeup(session->task, TASK_WOKEN_MSG);
 }
 
@@ -1087,8 +1087,8 @@
 	 /* we have a dedicated I/O handler for the stats */
 	stream_int_register_handler(&s->si[1], &peer_applet);
 	s->target = s->si[1].conn->target; // for logging only
-	s->si[1].applet.ctx.peers.ptr = s;
-	s->si[1].applet.st0 = PEER_SESSION_ACCEPT;
+	s->si[1].appctx.ctx.peers.ptr = s;
+	s->si[1].appctx.st0 = PEER_SESSION_ACCEPT;
 
 	tv_zero(&s->logs.tv_request);
 	s->logs.t_queue = 0;
@@ -1178,8 +1178,8 @@
 		s->si[0].flags |= SI_FL_INDEP_STR;
 
 	stream_int_register_handler(&s->si[0], &peer_applet);
-	s->si[0].applet.st0 = PEER_SESSION_CONNECT;
-	s->si[0].applet.ctx.peers.ptr = (void *)ps;
+	s->si[0].appctx.st0 = PEER_SESSION_CONNECT;
+	s->si[0].appctx.ctx.peers.ptr = (void *)ps;
 
 	s->si[1].conn->obj_type = OBJ_TYPE_CONN;
 	s->si[1].conn->t.sock.fd = -1; /* just to help with debugging */
diff --git a/src/proto_http.c b/src/proto_http.c
index dc3c9a9..94cf352 100644
--- a/src/proto_http.c
+++ b/src/proto_http.c
@@ -2806,16 +2806,16 @@
 	struct uri_auth *uri_auth = s->be->uri_auth;
 	const char *uri, *h, *lookup;
 
-	memset(&si->applet.ctx.stats, 0, sizeof(si->applet.ctx.stats));
-	si->applet.ctx.stats.st_code = STAT_STATUS_INIT;
-	si->applet.ctx.stats.flags |= STAT_FMT_HTML; /* assume HTML mode by default */
+	memset(&si->appctx.ctx.stats, 0, sizeof(si->appctx.ctx.stats));
+	si->appctx.ctx.stats.st_code = STAT_STATUS_INIT;
+	si->appctx.ctx.stats.flags |= STAT_FMT_HTML; /* assume HTML mode by default */
 
 	uri = msg->chn->buf->p + msg->sl.rq.u;
 	lookup = uri + uri_auth->uri_len;
 
 	for (h = lookup; h <= uri + msg->sl.rq.u_l - 3; h++) {
 		if (memcmp(h, ";up", 3) == 0) {
-			si->applet.ctx.stats.flags |= STAT_HIDE_DOWN;
+			si->appctx.ctx.stats.flags |= STAT_HIDE_DOWN;
 			break;
 		}
 	}
@@ -2823,7 +2823,7 @@
 	if (uri_auth->refresh) {
 		for (h = lookup; h <= uri + msg->sl.rq.u_l - 10; h++) {
 			if (memcmp(h, ";norefresh", 10) == 0) {
-				si->applet.ctx.stats.flags |= STAT_NO_REFRESH;
+				si->appctx.ctx.stats.flags |= STAT_NO_REFRESH;
 				break;
 			}
 		}
@@ -2831,7 +2831,7 @@
 
 	for (h = lookup; h <= uri + msg->sl.rq.u_l - 4; h++) {
 		if (memcmp(h, ";csv", 4) == 0) {
-			si->applet.ctx.stats.flags &= ~STAT_FMT_HTML;
+			si->appctx.ctx.stats.flags &= ~STAT_FMT_HTML;
 			break;
 		}
 	}
@@ -2840,10 +2840,10 @@
 		if (memcmp(h, ";st=", 4) == 0) {
 			int i;
 			h += 4;
-			si->applet.ctx.stats.st_code = STAT_STATUS_UNKN;
+			si->appctx.ctx.stats.st_code = STAT_STATUS_UNKN;
 			for (i = STAT_STATUS_INIT + 1; i < STAT_STATUS_SIZE; i++) {
 				if (strncmp(stat_status_codes[i], h, 4) == 0) {
-					si->applet.ctx.stats.st_code = i;
+					si->appctx.ctx.stats.st_code = i;
 					break;
 				}
 			}
@@ -2851,8 +2851,8 @@
 		}
 	}
 
-	si->applet.ctx.stats.scope_str = 0;
-	si->applet.ctx.stats.scope_len = 0;
+	si->appctx.ctx.stats.scope_str = 0;
+	si->appctx.ctx.stats.scope_len = 0;
 	for (h = lookup; h <= uri + msg->sl.rq.u_l - 8; h++) {
 		if (memcmp(h, STAT_SCOPE_INPUT_NAME "=", strlen(STAT_SCOPE_INPUT_NAME) + 1) == 0) {
 			int itx = 0;
@@ -2862,7 +2862,7 @@
 
 			h += strlen(STAT_SCOPE_INPUT_NAME) + 1;
 			h2 = h;
-			si->applet.ctx.stats.scope_str = h2 - msg->chn->buf->p;
+			si->appctx.ctx.stats.scope_str = h2 - msg->chn->buf->p;
 			while (*h != ';' && *h != '\0' && *h != '&' && *h != ' ' && *h != '\n') {
 				itx++;
 				h++;
@@ -2870,16 +2870,16 @@
 
 			if (itx > STAT_SCOPE_TXT_MAXLEN)
 				itx = STAT_SCOPE_TXT_MAXLEN;
-			si->applet.ctx.stats.scope_len = itx;
+			si->appctx.ctx.stats.scope_len = itx;
 
-			/* scope_txt = search query, si->applet.ctx.stats.scope_len is always <= STAT_SCOPE_TXT_MAXLEN */
+			/* scope_txt = search query, si->appctx.ctx.stats.scope_len is always <= STAT_SCOPE_TXT_MAXLEN */
 			memcpy(scope_txt, h2, itx);
 			scope_txt[itx] = '\0';
 			err = invalid_char(scope_txt);
 			if (err) {
 				/* bad char in search text => clear scope */
-				si->applet.ctx.stats.scope_str = 0;
-				si->applet.ctx.stats.scope_len = 0;
+				si->appctx.ctx.stats.scope_str = 0;
+				si->appctx.ctx.stats.scope_len = 0;
 			}
 			break;
 		}
@@ -2898,14 +2898,14 @@
 
 		if (ret) {
 			/* no rule, or the rule matches */
-			s->rep->prod->applet.ctx.stats.flags |= STAT_ADMIN;
+			s->rep->prod->appctx.ctx.stats.flags |= STAT_ADMIN;
 			break;
 		}
 	}
 
 	/* Was the status page requested with a POST ? */
 	if (unlikely(txn->meth == HTTP_METH_POST && txn->req.body_len > 0)) {
-		if (si->applet.ctx.stats.flags & STAT_ADMIN) {
+		if (si->appctx.ctx.stats.flags & STAT_ADMIN) {
 			if (msg->msg_state < HTTP_MSG_100_SENT) {
 				/* If we have HTTP/1.1 and Expect: 100-continue, then we must
 				 * send an HTTP/1.1 100 Continue intermediate response.
@@ -2922,21 +2922,21 @@
 				msg->msg_state = HTTP_MSG_100_SENT;
 				s->logs.tv_request = now;  /* update the request timer to reflect full request */
 			}
-			s->rep->prod->applet.st0 = STAT_HTTP_POST;
+			s->rep->prod->appctx.st0 = STAT_HTTP_POST;
 		}
 		else {
-			si->applet.ctx.stats.st_code = STAT_STATUS_DENY;
-			s->rep->prod->applet.st0 = STAT_HTTP_LAST;
+			si->appctx.ctx.stats.st_code = STAT_STATUS_DENY;
+			s->rep->prod->appctx.st0 = STAT_HTTP_LAST;
 		}
 	}
 	else {
 		/* So it was another method (GET/HEAD) */
-		s->rep->prod->applet.st0 = STAT_HTTP_HEAD;
+		s->rep->prod->appctx.st0 = STAT_HTTP_HEAD;
 	}
 
 	s->task->nice = -32; /* small boost for HTTP statistics */
 	stream_int_register_handler(s->rep->prod, &http_stats_applet);
-	s->rep->prod->applet.st1 = s->rep->prod->applet.st2 = 0;
+	s->rep->prod->appctx.st1 = s->rep->prod->appctx.st2 = 0;
 	return 1;
 }