MEDIUM: log: add a new LW_XPRT flag to pin the transport layer
This flag will have to be set on log tags which require transport layer
information. They will prevent the conn_xprt_close() call from releasing
the transport layer too early.
diff --git a/include/types/log.h b/include/types/log.h
index 0224326..70dc9fa 100644
--- a/include/types/log.h
+++ b/include/types/log.h
@@ -131,6 +131,7 @@
#define LW_RSPHDR 2048 /* response header(s) */
#define LW_BCKIP 4096 /* backend IP */
#define LW_FRTIP 8192 /* frontend IP */
+#define LW_XPRT 16384 /* transport layer information (eg: SSL) */
struct logsrv {
struct list list;
diff --git a/src/session.c b/src/session.c
index 7c218bf..8517103 100644
--- a/src/session.c
+++ b/src/session.c
@@ -488,6 +488,10 @@
goto out_free_rep;
}
+ /* if logs require transport layer information, note it on the connection */
+ if (s->logs.logwait & LW_XPRT)
+ s->si[0].conn.flags |= CO_FL_XPRT_TRACKED;
+
/* we want the connection handler to notify the stream interface about updates. */
s->si[0].conn.flags |= CO_FL_WAKE_DATA;