[MINOR] add the "ignore-persist" option to conditionally ignore persistence
This is used to disable persistence depending on some conditions (for
example using an ACL matching static files or a specific User-Agent).
You can see it as a complement to "force-persist".
In the configuration file, the force-persist/ignore-persist declaration
order define the rules priority.
Used with the "appsesion" keyword, it can also help reducing memory usage,
as the session won't be hashed the persistence is ignored.
diff --git a/include/types/proto_http.h b/include/types/proto_http.h
index f5410fa..7890cb2 100644
--- a/include/types/proto_http.h
+++ b/include/types/proto_http.h
@@ -221,6 +221,13 @@
REDIRECT_TYPE_PREFIX, /* prefix redirect */
};
+/* Perist types (force-persist, ignore-persist) */
+enum {
+ PERSIST_TYPE_NONE = 0, /* no persistence */
+ PERSIST_TYPE_FORCE, /* force-persist */
+ PERSIST_TYPE_IGNORE, /* ignore-persist */
+};
+
/* Known HTTP methods */
typedef enum {
HTTP_METH_NONE = 0,
diff --git a/include/types/proxy.h b/include/types/proxy.h
index fb34513..3ac80d8 100644
--- a/include/types/proxy.h
+++ b/include/types/proxy.h
@@ -176,7 +176,7 @@
struct list block_cond; /* early blocking conditions (chained) */
struct list redirect_rules; /* content redirecting rules (chained) */
struct list switching_rules; /* content switching rules (chained) */
- struct list force_persist_rules; /* 'force-persist' rules (chained) */
+ struct list persist_rules; /* 'force-persist' and 'ignore-persist' rules (chained) */
struct list sticking_rules; /* content sticking rules (chained) */
struct list storersp_rules; /* content store response rules (chained) */
struct { /* TCP request processing */
@@ -307,9 +307,10 @@
} be;
};
-struct force_persist_rule {
+struct persist_rule {
struct list list; /* list linked to from the proxy */
struct acl_cond *cond; /* acl condition to meet */
+ int type;
};
struct sticking_rule {
diff --git a/include/types/session.h b/include/types/session.h
index 94bb5d5..daf2619 100644
--- a/include/types/session.h
+++ b/include/types/session.h
@@ -81,6 +81,8 @@
#define SN_FINST_SHIFT 16 /* bit shift */
/* unused: 0x00080000 */
+#define SN_IGNORE_PRST 0x00100000 /* ignore persistence */
+
/* WARNING: if new fields are added, they must be initialized in event_accept()
* and freed in session_free() !
*/