From 93dbc2bc0e86c5a70c9fe46bf78a874d049fc471 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 12 Oct 2012 18:01:49 +0200 Subject: [PATCH] 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. --- include/types/log.h | 1 + src/session.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/include/types/log.h b/include/types/log.h index 02243260b..70dc9faf5 100644 --- a/include/types/log.h +++ b/include/types/log.h @@ -131,6 +131,7 @@ struct logformat_node { #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 7c218bf80..85171037b 100644 --- a/src/session.c +++ b/src/session.c @@ -488,6 +488,10 @@ int session_complete(struct session *s) 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;