mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-14 23:44:41 +00:00
MINOR: connection: add a new flag CO_FL_PRIVATE
This flag is set on an outgoing connection when this connection gets some properties that must not be shared with other connections, such as dynamic transparent source binding, SNI or a proxy protocol header, or an authentication challenge from the server. This will be needed later to implement connection reuse.
This commit is contained in:
parent
173a1c6b43
commit
387ebf84dd
@ -119,7 +119,10 @@ enum {
|
||||
*/
|
||||
CO_FL_POLL_SOCK = CO_FL_HANDSHAKE | CO_FL_WAIT_L4_CONN | CO_FL_WAIT_L6_CONN,
|
||||
|
||||
/* unused : 0x10000000, 0x20000000, 0x40000000 */
|
||||
/* This connection may not be shared between clients */
|
||||
CO_FL_PRIVATE = 0x10000000,
|
||||
|
||||
/* unused : 0x20000000, 0x40000000 */
|
||||
|
||||
/* This last flag indicates that the transport layer is used (for instance
|
||||
* by logs) and must not be cleared yet. The last call to conn_xprt_close()
|
||||
|
@ -1087,6 +1087,7 @@ int connect_server(struct stream *s)
|
||||
/* process the case where the server requires the PROXY protocol to be sent */
|
||||
srv_conn->send_proxy_ofs = 0;
|
||||
if (srv && srv->pp_opts) {
|
||||
srv_conn->flags |= CO_FL_PRIVATE;
|
||||
srv_conn->send_proxy_ofs = 1; /* must compute size */
|
||||
cli_conn = objt_conn(strm_orig(s));
|
||||
if (cli_conn)
|
||||
@ -1152,6 +1153,7 @@ int connect_server(struct stream *s)
|
||||
smp->data.str.len = smp->data.str.size - 1;
|
||||
smp->data.str.str[smp->data.str.len] = 0;
|
||||
ssl_sock_set_servername(srv_conn, smp->data.str.str);
|
||||
srv_conn->flags |= CO_FL_PRIVATE;
|
||||
}
|
||||
}
|
||||
#endif /* USE_OPENSSL */
|
||||
|
@ -5155,6 +5155,7 @@ void http_end_txn_clean_session(struct stream *s)
|
||||
* it's better to do it (at least it helps with debugging).
|
||||
*/
|
||||
s->txn->flags |= TX_PREFER_LAST;
|
||||
srv_conn->flags |= CO_FL_PRIVATE;
|
||||
}
|
||||
|
||||
if (fe->options2 & PR_O2_INDEPSTR)
|
||||
|
@ -474,12 +474,15 @@ int tcp_connect_server(struct connection *conn, int data, int delack)
|
||||
|
||||
if (is_inet_addr(&conn->addr.from)) {
|
||||
switch (src->opts & CO_SRC_TPROXY_MASK) {
|
||||
case CO_SRC_TPROXY_ADDR:
|
||||
case CO_SRC_TPROXY_CLI:
|
||||
conn->flags |= CO_FL_PRIVATE;
|
||||
/* fall through */
|
||||
case CO_SRC_TPROXY_ADDR:
|
||||
flags = 3;
|
||||
break;
|
||||
case CO_SRC_TPROXY_CIP:
|
||||
case CO_SRC_TPROXY_DYN:
|
||||
conn->flags |= CO_FL_PRIVATE;
|
||||
flags = 1;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user