diff --git a/src/frontend.c b/src/frontend.c
index c18cc66..ac6027c 100644
--- a/src/frontend.c
+++ b/src/frontend.c
@@ -506,16 +506,19 @@
 	return 1;
 }
 
-/* set temp integer to the number of connections per second reaching the frontend */
+/* set temp integer to the number of connections per second reaching the frontend.
+ * Accepts either 0 or 1 argument. Argument is a string, other types will cause
+ * an undefined behaviour.
+ */
 static int
 acl_fetch_fe_sess_rate(struct proxy *px, struct session *l4, void *l7, int dir,
                        struct acl_expr *expr, struct acl_test *test)
 {
 	test->flags = ACL_TEST_F_VOL_TEST;
-	if (expr->arg_len) {
+	if (expr->args) {
 		/* another proxy was designated, we must look for it */
 		for (px = proxy; px; px = px->next)
-			if ((px->cap & PR_CAP_FE) && !strcmp(px->id, expr->arg.str))
+			if ((px->cap & PR_CAP_FE) && !strcmp(px->id, expr->args->data.str.str))
 				break;
 	}
 	if (!px)
@@ -525,16 +528,19 @@
 	return 1;
 }
 
-/* set temp integer to the number of concurrent connections on the frontend */
+/* set temp integer to the number of concurrent connections on the frontend
+ * Accepts either 0 or 1 argument. Argument is a string, other types will cause
+ * an undefined behaviour.
+ */
 static int
 acl_fetch_fe_conn(struct proxy *px, struct session *l4, void *l7, int dir,
 		  struct acl_expr *expr, struct acl_test *test)
 {
 	test->flags = ACL_TEST_F_VOL_TEST;
-	if (expr->arg_len) {
+	if (expr->args) {
 		/* another proxy was designated, we must look for it */
 		for (px = proxy; px; px = px->next)
-			if ((px->cap & PR_CAP_FE) && !strcmp(px->id, expr->arg.str))
+			if ((px->cap & PR_CAP_FE) && !strcmp(px->id, expr->args->data.str.str))
 				break;
 	}
 	if (!px)
