MINOR: frontend: don't retrieve ALPN on the critical path

It's pointless to read it on each and every accept(), as we only need
it for reporting in debugging mode a few lines later. Let's move this
part to the relevant block.
This commit is contained in:
Willy Tarreau 2017-09-15 11:43:32 +02:00
parent 04b9286933
commit 20814ff1fc
1 changed files with 10 additions and 12 deletions

View File

@ -56,14 +56,6 @@ int frontend_accept(struct stream *s)
struct connection *conn = objt_conn(sess->origin);
struct listener *l = sess->listener;
struct proxy *fe = sess->fe;
const char *alpn_str = NULL;
int alpn_len;
/* check if we're in HTTP mode, directly connected to the connection,
* and with ALPN advertising H2.
*/
if (conn && conn->owner == &s->si[0])
conn_get_alpn(conn, &alpn_str, &alpn_len);
if ((fe->mode == PR_MODE_TCP || fe->mode == PR_MODE_HTTP)
&& (!LIST_ISEMPTY(&fe->logsrvs))) {
@ -102,13 +94,19 @@ int frontend_accept(struct stream *s)
(!(global.mode & MODE_QUIET) || (global.mode & MODE_VERBOSE)))) {
char pn[INET6_ADDRSTRLEN];
char alpn[16] = "<none>";
const char *alpn_str = NULL;
int alpn_len;
conn_get_from_addr(conn);
if (alpn_str) {
int len = MIN(alpn_len, sizeof(alpn) - 1);
memcpy(alpn, alpn_str, len);
alpn[len] = 0;
/* try to report the ALPN value when available (also works for NPN) */
if (conn && conn->owner == &s->si[0]) {
if (conn_get_alpn(conn, &alpn_str, &alpn_len) && alpn_str) {
int len = MIN(alpn_len, sizeof(alpn) - 1);
memcpy(alpn, alpn_str, len);
alpn[len] = 0;
}
}
switch (addr_to_str(&conn->addr.from, pn, sizeof(pn))) {