MEDIUM: http/tcp: permit to resume http and tcp custom actions
Later, the processing of some actions needs to be interrupted and resumed
later. This patch permit to resume the actions. The actions that needs
to run with the resume mode are not yet avalaible. It will be soon with
Lua patches. So the code added by this patch is untestable for the moment.
The list of "tcp_exec_req_rules" cannot resme because is called by the
unresumable function "accept_session".
diff --git a/include/types/proto_http.h b/include/types/proto_http.h
index d9cda71..5a4489d 100644
--- a/include/types/proto_http.h
+++ b/include/types/proto_http.h
@@ -294,6 +294,7 @@
/* final results for http-request rules */
enum rule_result {
HTTP_RULE_RES_CONT = 0, /* nothing special, continue rules evaluation */
+ HTTP_RULE_RES_YIELD, /* call me later because some data is missing. */
HTTP_RULE_RES_STOP, /* stopped processing on an accept */
HTTP_RULE_RES_DENY, /* deny (or tarpit if TX_CLTARPIT) */
HTTP_RULE_RES_ABRT, /* abort request, msg already sent (eg: auth) */
diff --git a/include/types/session.h b/include/types/session.h
index 1f3ba48..0fc2622 100644
--- a/include/types/session.h
+++ b/include/types/session.h
@@ -156,6 +156,10 @@
struct comp_ctx *comp_ctx; /* HTTP compression context */
struct comp_algo *comp_algo; /* HTTP compression algorithm if not NULL */
char *unique_id; /* custom unique ID */
+
+ /* These two pointers are used to resume the execution of the rule lists. */
+ struct list *current_rule_list; /* this is used to store the current executed rule list. */
+ struct list *current_rule; /* this is used to store the current rule to be resumed. */
};
#endif /* _TYPES_SESSION_H */