10599 Commits

Author SHA1 Message Date
Christopher Faulet
b42a8b6c61 BUG/MINOR: proto_htx: Fix request/response synchronisation on error
The HTTP transaction must be aborted if an error is detected on any one
side.
2018-11-20 14:31:44 +01:00
Christopher Faulet
9b95d31122 BUG/MINOR: stats/htx: Remove channel's output when the request is eaten
The request is eaten when the stats applet have finished to send its
response. It was removed from the channel's buffer, removing all HTX blocks till
the EOM. But the channel's output was not reset, leaving the request channel in
an undefined state.
2018-11-20 14:31:44 +01:00
Christopher Faulet
9c38840055 BUG/MEDIUM: mux-h1: Don't set the flag CS_FL_RCV_MORE when nothing was parsed
When we start to parse a new message, if all headers have not been received,
nothing is copied in the channel's buffer. In this situation, we must not set
the flag CS_FL_RCV_MORE on the conn-stream. If we do so, the connection freezes
because there is no data to send that can reenable the reads
2018-11-20 14:31:44 +01:00
Christopher Faulet
d44ad5b8bd BUG/MEDIUM: mux-h1: Fix freeze when the kernel splicing is used
First of all, we need to be sure to keep the flag H1S_F_BUF_FLUSH on the H1S
reading data until all data was flushed from the buffer. Then we need to know
when the kernel splicing is in use and when it ends. This is handled with the
new flag H1S_F_SPLICED_DATA.

Then, we must subscribe to send when some data remain in the pipe after a
snd_pipe(). It is mandatory to wakeup the stream and avoid a freeze.

Finally, we must be sure to update the message state when we restart to use the
channel's buffer. Among other things, it is mandatory to swith the message from
DATA to DONE state when all data were sent using the kernel splicing.
2018-11-20 14:31:44 +01:00
Christopher Faulet
81d484326b BUG/MINOR: mux-h1: Enable keep-alive on server side
Don't force the close on server side anymore. Since commit 7c6f8b146 ("MAJOR:
connections: Detach connections from streams"), it is possible to release a
stream without the underlying connection.

Because of this change, we must be sure to create a new stream to handle the
next HTTP transaction only on the client side. And we must be sure to correctly
handle the read0 event in h1_recv, to be sure to call h1_process().
2018-11-20 14:31:44 +01:00
Christopher Faulet
539e029cc5 MAJOR: mux-h1: Remove the rxbuf and decode HTTP messages in channel's buffer
It avoids a copy between the rxbuf and the channel's buffer. It means the
parsing is done in h1_rcv_buf(). So we need to have a stream to start the
parsing. This change should improve the overall performances. It also implies a
better split between the connection layer and the applicative layer. Now, on the
connection layer, only raw data are manipulated. Raw data received from the
socket are stored in ibuf and those sent are get from obuf. On the applicative
layer, data in ibuf are parsed and copied into the channel's buffer. And on the
other side, those structured data are formatted and copied into obuf.
2018-11-20 14:31:44 +01:00
Willy Tarreau
4bf194cbdb BUG/MEDIUM: hpack: fix encoding of "accept-ranges" field
James Brown reported that when an "accept-ranges" header field is sent
through haproxy and converted from HTTP/1.1 to H2, it's mis-encoded as
"accept-language". It happens that it's one of the few very common header
fields encoded using its index value and that this index value was misread
in the spec as 17 instead of 18, resulting in the wrong name being sent.
Thanks to Lukas for spotting the issue in the HPACK encoder itself.

This fix must be backported to 1.8.
2018-11-20 04:47:38 +01:00
William Lallemand
16dd1b3ead MINOR: cli: show master information in 'show proc'
Displays the master information in show proc.
2018-11-20 04:43:54 +01:00
William Lallemand
e368330128 MINOR: cli: displays uptime in show proc
Displays the uptime of the workers in `show proc`
2018-11-20 04:43:54 +01:00
William Lallemand
e09cdc6d48 MINOR: cli: format show proc to be more readable
Add more space on the output to be more readable and separate old
processes from current ones.
2018-11-20 04:43:54 +01:00
Willy Tarreau
3a1f5fda10 REORG: config: extract the proxy parser into cfgparse-listen.c
This was the largest function of the whole file, taking a rough second
to build alone. Let's move it to a distinct file along with a few
dependencies. Doing so saved about 2 seconds on the total build time.
2018-11-19 06:47:09 +01:00
Willy Tarreau
36b9e222bb REORG: config: extract the global section parser into cfgparse-global
The config parser is the largest file to build and its build dominates
the total project's build time. Let's start to split it into multiple
smaller pieces by extracting the "global" section parser into a new
file called "cfgparse-global.c". This removes 1/4th of the file's build
time.
2018-11-19 06:41:57 +01:00
Joseph Herlant
f1da69d9ea MINOR: Fix a typo in a warning message in the spoe subsystem
Fix a typo in a user-facing message of the spoe subsystem.
2018-11-18 22:29:19 +01:00
Joseph Herlant
7fe1577cc7 MINOR: Fix typo in the error 500 output of hlua
Fixes a common typo in the output generated by the hlua subsystem when
emitting an error 500 page.
2018-11-18 22:28:09 +01:00
Joseph Herlant
b8f9c5e634 CLEANUP: fix typos in the comments of hlua
Fix typos in the code comments of the hlua subsystem.
2018-11-18 22:28:09 +01:00
Joseph Herlant
76dbe785b5 MINOR: Fix typo in error message in the standard subsystem
Fix a typo in an error message that could be user-visible when running
out of memory in the parse_binary function.
2018-11-18 22:26:42 +01:00
Joseph Herlant
cf92b6d332 CLEANUP: Fix typos in the task subsystem
Fix typos in the code comments of the task subsystem.
2018-11-18 22:26:42 +01:00
Joseph Herlant
5662fa4707 CLEANUP: Fix typos in the stick_table subsystem
Fix some typos in the code comments of the stick_table subsystem.
2018-11-18 22:26:42 +01:00
Joseph Herlant
32b8327266 CLEANUP: Fix typos in the standard subsystem
Fix typos in the code comments of the standard subsystem.
2018-11-18 22:26:42 +01:00
Joseph Herlant
f7f6031184 CLEANUP: Fix typos in the spoe subsystem
Fix typos in the code comments of the spoe subsystem.
2018-11-18 22:26:42 +01:00
Joseph Herlant
757f5ad73a CLEANUP: Fix typos in the sample subsystem
Fix some typos in the code comment of the sample subsystem.
2018-11-18 22:26:42 +01:00
Joseph Herlant
eda75484a8 CLEANUP: Fix typos in the regex subsystem
Fix typos in the code comment of the regex subsystem.
2018-11-18 22:26:42 +01:00
Joseph Herlant
82b2f54d4c CLEANUP: Fix typos in the peers subsystem
Fix some typos in the code comments of the peers subsystem.
2018-11-18 22:26:42 +01:00
Joseph Herlant
85b4059b82 CLEANUP: Fix typos in the log subsystem
Fix some misspells in the code comments of the log subsystem.
2018-11-18 22:26:42 +01:00
Joseph Herlant
942eea3f5c CLEANUP: Fix typos in the http subsystem
Fix typos in code comment of the http subsystem.
2018-11-18 22:26:42 +01:00
Joseph Herlant
b35ea68081 CLEANUP: Fix typos in the filters subsystem
Fix typos in the code comments of the filters subsystems.
2018-11-18 22:26:42 +01:00
Joseph Herlant
a14c03ef43 CLEANUP: Fix typos in the cfgparse subsystem
Fix typos in the code comments of the cfgpase subsystem.
2018-11-18 22:26:42 +01:00
Joseph Herlant
8dae5b38b8 CLEANUP: Fix typos in the cache subsystem
Fix common misspells in the code comments of the cache subsystem.
2018-11-18 22:26:42 +01:00
Joseph Herlant
6808279b2a CLEANUP: Fix typos in the acl subsystem
Fix typos in the code comments of the acl subsystem.
2018-11-18 22:26:26 +01:00
Joseph Herlant
29023ec5d9 CLEANUP: Fix a typo in the stats subsystem
Fix a typo in a code comment of the stats subsystem.
2018-11-18 22:26:26 +01:00
Joseph Herlant
9edebb8568 MINOR: Fix typos in error messages in the proxy subsystem
Fix typos in error messages that will be user-visible in the proxy
subsystem.
2018-11-18 22:23:15 +01:00
Joseph Herlant
07a0834635 MINOR: Fix an error message thrown when we run out of memory
Fixes a typo in an error message that can be seen by the end user when
the haproxy subsystem runs out of memory.
2018-11-18 22:23:15 +01:00
Joseph Herlant
017b3da94e CLEANUP: fix typos in the ssl_sock subsystem
Fix some typos found in the code comments of the ssl_sock subsystem.
2018-11-18 22:23:15 +01:00
Joseph Herlant
59dd295926 CLEANUP: fix typos in the proxy subsystem
Fix typos in the code comments of the proxy subsystem.
2018-11-18 22:23:15 +01:00
Joseph Herlant
5ba8025976 CLEANUP: fix typos in the proto_http subsystem
Fixes typos in the code comments of the proto_http subsystem.
2018-11-18 22:23:15 +01:00
Joseph Herlant
b3d92e3b9f CLEANUP: fix typos in the hlua_fcn subsystem
Fixes typos detected in the code comments of the hlua_fcn subsystem using
the misspell tool and other ones detected manually.
2018-11-18 22:23:15 +01:00
Joseph Herlant
0767689e93 CLEANUP: fix typos in the comments of the vars subsystem
Those are mostly misspells of the words available and variable.
2018-11-18 22:23:15 +01:00
Joseph Herlant
4cc8d0d60c CLEANUP: fix a typo found in the stream subsystem
This typo is in a code comment so not end-user visible.
2018-11-18 22:23:15 +01:00
Joseph Herlant
44466826b1 CLEANUP: fix a few typos in the comments of the server subsystem
A few misspells where detected in the server subsystem. This commit
fixes them.
2018-11-18 22:23:15 +01:00
Joseph Herlant
b2db6a00f9 CLEANUP: fix 2 typos in the xxhash subsystem
Fixes 2 typos in the comments of the xxhash subsystem.
2018-11-18 22:23:15 +01:00
Joseph Herlant
4189d671b7 CLEANUP: Fix typos in the pattern subsystem
Fixes typos in the code comments of the pattern subsystem.
2018-11-18 22:23:15 +01:00
Joseph Herlant
42cf6395c4 CLEANUP: Fix typos in the dns subsystem
Fix misspells in the code comments of the dns subsystem.
2018-11-18 22:23:15 +01:00
Joseph Herlant
0342090ed7 CLEANUP: Fix some typos in the haproxy subsystem
Fix some typos in the code comments of the haproxy subsystem.
2018-11-18 22:23:15 +01:00
Christopher Faulet
afd8f10be9 MINOR: lua/htx: Forbid lua usage when the HTX is enabled on a proxy
For now, the lua scripts are not compatible with the new HTX internal
representation of HTTP messages. Thus, for a given proxy, when the option
"http-use-htx" is enabled, an error is triggered if any lua's
action/service/sample-fetch/converter is also configured.
2018-11-18 22:10:09 +01:00
Christopher Faulet
0c859127f1 MINOR: filters/htx: Forbid filters when the HTX is enabled on a proxy
For now, the filters are not compatible with the new HTX internal representation
of HTTP messages. Thus, for a given proxy, when the option "http-use-htx" is
enabled, an error is triggered if any filter is also configured.
2018-11-18 22:10:09 +01:00
Christopher Faulet
473652733a MEDIUM: mux-h1: Handle errors and timeouts in the stream
To do so, the stream is created as earlier as possible. It means, during the mux
creation for the first request, and for others, just at the end of the previous
transaction. Because all timeouts are handled by the strream, the mux's task is
now useless, so it is removed. Finally, to report errors, flags are set on the
HTX message. The HTX message is passed to the stream if there is some content to
analyse or if there is some error to handle.

All of this will probably be reworked later to handle errors and timeouts
directly in the mux. For now, it is the simpler way to handle all of this.
2018-11-18 22:10:08 +01:00
Christopher Faulet
ed28da534a MINOR: stream: Don't reset sov value with HTX messages 2018-11-18 22:10:08 +01:00
Christopher Faulet
ef77922776 MINOR: stats/htx: Adapt the stats applet to handle HTX messages
Switches between the HTX version of the code and the legacy one have been added
to let the stats applet work with both.
2018-11-18 22:10:08 +01:00
Christopher Faulet
3b88b8d02e MEDIUM: mux-h1: Wait for connection establishment before consuming channel's data
When a server is down, the channel's data must not be consumed. This is
required to allow redispatch and connection retry. So now, we wait for
the connection to be marked as connected, with the flag CO_FL_CONNECTED,
before starting to consume channel's data. In the mux, this event is
tracked with the flag H1C_F_CS_WAIT_CONN.
2018-11-18 22:10:04 +01:00
Christopher Faulet
311c7eaad0 MEDIUM: http_fetch: Adapt all fetches to handle HTX messages
For HTTP proxies, when the HTX internal representation is used, or for all TCP
proxies, we use the HTX version of sample fetches.
2018-11-18 22:09:01 +01:00