MINOR: listener: move the NOQUICKACK option to the bind_conf

It solely depends on the bind line so let's move it there under the
name BC_O_NOQUICKACK.
This commit is contained in:
Willy Tarreau 2023-01-12 19:40:42 +01:00
parent cfb7c2f515
commit 9bdcf42922
4 changed files with 10 additions and 9 deletions

View File

@ -94,7 +94,7 @@ enum li_status {
#define LI_O_NONE 0x0000
/* unused 0x0001 */
/* unused 0x0002 */
#define LI_O_NOQUICKACK 0x0004 /* disable quick ack of immediate data (linux) */
/* unused 0x0004 */
#define LI_O_DEF_ACCEPT 0x0008 /* wait up to 1 second for data before accepting */
#define LI_O_TCP_L4_RULES 0x0010 /* run TCP L4 rules checks on the incoming connection */
#define LI_O_TCP_L5_RULES 0x0020 /* run TCP L5 rules checks on the incoming session */
@ -122,6 +122,7 @@ enum li_status {
#define BC_O_USE_XPRT_DGRAM 0x00000020 /* at least one dgram-only xprt listener is used */
#define BC_O_USE_XPRT_STREAM 0x00000040 /* at least one stream-only xprt listener is used */
#define BC_O_NOLINGER 0x00000080 /* disable lingering on these listeners */
#define BC_O_NOQUICKACK 0x00000100 /* disable quick ack of immediate data (linux) */
/* flags used with bind_conf->ssl_options */

View File

@ -4290,6 +4290,12 @@ int check_config_validity()
bind_conf->accept = session_accept_fd;
if (curproxy->options & PR_O_TCP_NOLING)
bind_conf->options |= BC_O_NOLINGER;
/* smart accept mode is automatic in HTTP mode */
if ((curproxy->options2 & PR_O2_SMARTACC) ||
((curproxy->mode == PR_MODE_HTTP || (bind_conf->options & BC_O_USE_SSL)) &&
!(curproxy->no_options2 & PR_O2_SMARTACC)))
bind_conf->options |= BC_O_NOQUICKACK;
}
/* adjust this proxy's listeners */
@ -4331,12 +4337,6 @@ int check_config_validity()
if (!LIST_ISEMPTY(&curproxy->tcp_req.l5_rules))
listener->options |= LI_O_TCP_L5_RULES;
/* smart accept mode is automatic in HTTP mode */
if ((curproxy->options2 & PR_O2_SMARTACC) ||
((curproxy->mode == PR_MODE_HTTP || (listener->bind_conf->options & BC_O_USE_SSL)) &&
!(curproxy->no_options2 & PR_O2_SMARTACC)))
listener->options |= LI_O_NOQUICKACK;
}
/* Release unused SSL configs */

View File

@ -707,7 +707,7 @@ int http_process_request(struct stream *s, struct channel *req, int an_bit)
* in case we previously disabled it, otherwise we might cause
* the client to delay further data.
*/
if ((sess->listener && (sess->listener->options & LI_O_NOQUICKACK)) && !(htx->flags & HTX_FL_EOM))
if ((sess->listener && (sess->listener->bind_conf->options & BC_O_NOQUICKACK)) && !(htx->flags & HTX_FL_EOM))
conn_set_quickack(cli_conn, 1);
/*************************************************************

View File

@ -717,7 +717,7 @@ int tcp_bind_listener(struct listener *listener, char *errmsg, int errlen)
}
#endif
#if defined(TCP_QUICKACK)
if (listener->options & LI_O_NOQUICKACK)
if (listener->bind_conf->options & BC_O_NOQUICKACK)
setsockopt(fd, IPPROTO_TCP, TCP_QUICKACK, &zero, sizeof(zero));
else
setsockopt(fd, IPPROTO_TCP, TCP_QUICKACK, &one, sizeof(one));