From: Willy Tarreau Date: Fri, 12 Oct 2012 16:01:49 +0000 (+0200) Subject: MEDIUM: log: add a new LW_XPRT flag to pin the transport layer X-Git-Tag: v1.5-dev13~155 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=93dbc2bc0e86c5a70c9fe46bf78a874d049fc471;p=thirdparty%2Fhaproxy.git 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 02243260bf..70dc9faf5a 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 7c218bf803..85171037bb 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;