mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-11 05:48:41 +00:00
MINOR: connection: report the major HTTP version from the MUX for logging (fc_http_major)
A new sample fetch function reports either 1 or 2 for the on-wire encoding, to indicate if the request was received using the HTTP/1.x format or HTTP/2 format. Note that it reports the on-wire encoding, not the version presented in the request header. This will possibly have to evolve if it becomes necessary to report the encoding on the server side as well.
This commit is contained in:
parent
2e0b2b5f83
commit
60ca10a372
@ -13591,6 +13591,11 @@ dst_port : integer
|
||||
a same server, or to pass the destination port information to a server using
|
||||
an HTTP header.
|
||||
|
||||
fc_http_major : integer
|
||||
Reports the front connection's HTTP major version encoding, which may be 1
|
||||
for HTTP/0.9 to HTTP/1.1 or 2 for HTTP/2. Note, this is based on the on-wire
|
||||
encoding and not on the version present in the request header.
|
||||
|
||||
fc_rcvd_proxy : boolean
|
||||
Returns true if the client initiated the connection with a PROXY protocol
|
||||
header.
|
||||
|
@ -1077,6 +1077,19 @@ int make_proxy_line_v2(char *buf, int buf_len, struct server *srv, struct connec
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* return the major HTTP version as 1 or 2 depending on how the request arrived
|
||||
* before being processed.
|
||||
*/
|
||||
static int
|
||||
smp_fetch_fc_http_major(const struct arg *args, struct sample *smp, const char *kw, void *private)
|
||||
{
|
||||
struct connection *conn = objt_conn(smp->sess->origin);
|
||||
|
||||
smp->data.type = SMP_T_SINT;
|
||||
smp->data.u.sint = (conn && strcmp(conn_get_mux_name(conn), "H2") == 0) ? 2 : 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* fetch if the received connection used a PROXY protocol header */
|
||||
int smp_fetch_fc_rcvd_proxy(const struct arg *args, struct sample *smp, const char *kw, void *private)
|
||||
{
|
||||
@ -1104,6 +1117,7 @@ int smp_fetch_fc_rcvd_proxy(const struct arg *args, struct sample *smp, const ch
|
||||
* instance v4/v6 must be declared v4.
|
||||
*/
|
||||
static struct sample_fetch_kw_list sample_fetch_keywords = {ILH, {
|
||||
{ "fc_http_major", smp_fetch_fc_http_major, 0, NULL, SMP_T_SINT, SMP_USE_L4CLI },
|
||||
{ "fc_rcvd_proxy", smp_fetch_fc_rcvd_proxy, 0, NULL, SMP_T_BOOL, SMP_USE_L4CLI },
|
||||
{ /* END */ },
|
||||
}};
|
||||
|
Loading…
Reference in New Issue
Block a user