summaryrefslogtreecommitdiffstats
path: root/include/haproxy/session-t.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/haproxy/session-t.h')
-rw-r--r--include/haproxy/session-t.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/include/haproxy/session-t.h b/include/haproxy/session-t.h
index dff167e..7f034dd 100644
--- a/include/haproxy/session-t.h
+++ b/include/haproxy/session-t.h
@@ -39,6 +39,7 @@
enum {
SESS_FL_NONE = 0x00000000, /* nothing */
SESS_FL_PREFER_LAST = 0x00000001, /* NTML authent, we should reuse last conn */
+ SESS_FL_RELEASE_LI = 0x00000002, /* session responsible to decrement listener counters on release */
};
/* max number of idle server connections kept attached to a session */
@@ -57,15 +58,23 @@ struct session {
long t_idle; /* idle duration, -1 if never occurs */
int idle_conns; /* Number of connections we're currently responsible for that we are not using */
unsigned int flags; /* session flags, SESS_FL_* */
- struct list srv_list; /* List of servers and the connections the session is currently responsible for */
+ struct list priv_conns; /* list of private conns */
struct sockaddr_storage *src; /* source address (pool), when known, otherwise NULL */
struct sockaddr_storage *dst; /* destination address (pool), when known, otherwise NULL */
};
-struct sess_srv_list {
- void *target;
+/*
+ * List of private conns managed by a session, indexed by server
+ * Stored both into the session and server instances
+ */
+struct sess_priv_conns {
+ void *target; /* Server or dispatch used for indexing */
struct list conn_list; /* Head of the connections list */
- struct list srv_list; /* Next element of the server list */
+
+ struct list sess_el; /* Element of session.priv_conns */
+ struct mt_list srv_el; /* Element of server.sess_conns */
+
+ int tid;
};
#endif /* _HAPROXY_SESSION_T_H */