MINOR: acl: set SMP_OPT_ITERATE on fetch functions

This way, fetch functions will be able to tell if they're called for a single
request or as part of a loop. This is important for instance when we use
hdr(foo), because in an ACL this means that all hdr(foo) occurrences must
be checked while in a pattern it means only one of them (eg: last one).
diff --git a/include/types/pattern.h b/include/types/pattern.h
index 3ee18cb..c5b19ad 100644
--- a/include/types/pattern.h
+++ b/include/types/pattern.h
@@ -59,6 +59,7 @@
 	SMP_OPT_DIR_RES = 1,    /* direction = response */
 	SMP_OPT_DIR     = (SMP_OPT_DIR_REQ|SMP_OPT_DIR_RES), /* mask to get direction */
 	SMP_OPT_FINAL   = 2,    /* final fetch, contents won't change anymore */
+	SMP_OPT_ITERATE = 4,    /* fetches may be iterated if supported (for ACLs) */
 };
 
 /* Flags used to describe fetched samples. MAY_CHANGE indicates that the result
diff --git a/src/acl.c b/src/acl.c
index 1267ec3..8f76286 100644
--- a/src/acl.c
+++ b/src/acl.c
@@ -1682,7 +1682,7 @@
 /* Execute condition <cond> and return either ACL_PAT_FAIL, ACL_PAT_MISS or
  * ACL_PAT_PASS depending on the test results. ACL_PAT_MISS may only be
  * returned if <opt> does not contain SMP_OPT_FINAL, indicating that incomplete
- * data is being examined.
+ * data is being examined. The function automatically sets SMP_OPT_ITERATE.
  * This function only computes the condition, it does not apply the polarity
  * required by IF/UNLESS, it's up to the caller to do this using something like
  * this :
@@ -1704,6 +1704,11 @@
 	struct sample smp;
 	int acl_res, suite_res, cond_res;
 
+	/* ACLs are iterated over all values, so let's always set the flag to
+	 * indicate this to the fetch functions.
+	 */
+	opt |= SMP_OPT_ITERATE;
+
 	/* We're doing a logical OR between conditions so we initialize to FAIL.
 	 * The MISS status is propagated down from the suites.
 	 */