stable-bot: WARNING: 10 bug fixes in queue for next release

2019-02-02 Thread stable-bot
Hi,

This is a friendly bot that watches fixes pending for the next haproxy-stable 
release!  One such e-mail is sent periodically once patches are waiting in the 
last maintenance branch, and an ideal release date is computed based on the 
severity of these fixes and their merge date.  Responses to this mail must be 
sent to the mailing list.

Last release 1.8.17 was issued on 2019/01/08.  There are currently 10 patches 
in the queue cut down this way:
- 1 MAJOR, first one merged on 2019/01/28
- 3 MEDIUM, first one merged on 2019/01/28
- 6 MINOR, first one merged on 2019/01/28

Thus the computed ideal release date for 1.8.18 would be 2019/02/11, which is 
in one week or less.

The current list of patches in the queue is:
- MAJOR   : cache: fix confusion between zero and uninitialized cache key
- MEDIUM  : ssl: missing allocation failure checks loading tls key file
- MEDIUM  : ssl: Fix handling of TLS 1.3 KeyUpdate messages
- MEDIUM  : ssl: Disable anti-replay protection and set max data with 0RTT.
- MINOR   : server: don't always trust srv_check_health when loading a 
server state
- MINOR   : check: Wake the check task if the check is finished in 
wake_srv_chk()
- MINOR   : stick_table: Prevent conn_cur from underflowing
- MINOR   : backend: BE_LB_LKUP_CHTREE is a value, not a bit
- MINOR   : backend: don't use url_param_name as a hint for BE_LB_ALGO_PH
- MINOR   : backend: balance uri specific options were lost across defaults

---
The haproxy stable-bot is freely provided by HAProxy Technologies to help 
improve the quality of each HAProxy release.  If you have any issue with these 
emails or if you want to suggest some improvements, please post them on the 
list so that the solutions suiting the most users can be found.



stable-bot: INFO: 31 bug fixes in queue for next release

2019-02-02 Thread stable-bot
Hi,

This is a friendly bot that watches fixes pending for the next haproxy-stable 
release!  One such e-mail is sent periodically once patches are waiting in the 
last maintenance branch, and an ideal release date is computed based on the 
severity of these fixes and their merge date.  Responses to this mail must be 
sent to the mailing list.

Last release 1.9.3 was issued on 2019/01/29.  There are currently 31 patches in 
the queue cut down this way:
- 24 MEDIUM, first one merged on 2019/02/01
- 7 MINOR, first one merged on 2019/02/01

Thus the computed ideal release date for 1.9.4 would be 2019/03/01, which is in 
four weeks or less.

The current list of patches in the queue is:
- MEDIUM  : servers: Close the connection if we failed to install the mux.
- MEDIUM  : mux-h1: Don't add "transfer-encoding" if message-body is 
forbidden
- MEDIUM  : mux-h2: fix two half-closed to closed transitions
- MEDIUM  : peers: Handle mux creation failure.
- MEDIUM  : checks: Don't try to set ALPN if connection failed.
- MEDIUM  : h2: In h2_send(), stop the loop if we failed to alloc a buf.
- MEDIUM  : buffer: Make sure b_is_null handles buffers waiting for 
allocation.
- MEDIUM  : connections: Don't forget to remove CO_FL_SESS_IDLE.
- MEDIUM  : mux-h2: do not abort HEADERS frame before decoding them
- MEDIUM  : checks: Check that conn_install_mux succeeded.
- MEDIUM  : mux-h2: only close connection on request frames on closed 
streams
- MEDIUM  : mux-h2: wait for the mux buffer to be empty before closing the 
connection
- MEDIUM  : servers: Don't add an incomplete conn to the server idle list.
- MEDIUM  : servers: Only destroy a conn_stream we just allocated.
- MEDIUM  : htx: check the HTX compatibility in dynamic use-backend rules
- MEDIUM  : mux-h2: do not close the connection on aborted streams
- MEDIUM  : mux-h2: make sure never to send GOAWAY on too old streams
- MEDIUM  : backend: always release the previous connection into its own 
target srv_list
- MEDIUM  : mux-h2: wake up flow-controlled streams on initial window update
- MEDIUM  : mux-h2: always omit :scheme and :path for the CONNECT method
- MEDIUM  : mux-h2: properly consider the peer's advertised 
max-concurrent-streams
- MEDIUM  : stream: Don't forget to free s->unique_id in stream_free().
- MEDIUM  : mux-h2: always set :authority on request output
- MEDIUM  : compression: Rewrite strong ETags
- MINOR   : mux-h2: always compare content-length to the sum of DATA frames
- MINOR   : stream: don't close the front connection when facing a backend 
error
- MINOR   : mux-h2: make sure response HEADERS are not received in other 
states than OPEN and HLOC
- MINOR   : server: fix logic flaw in idle connection list management
- MINOR   : deinit: tcp_rep.inspect_rules not deinit, add to deinit
- MINOR   : mux-h2: make sure request trailers on aborted streams don't 
break the connection
- MINOR   : backend: check srv_conn before dereferencing it

---
The haproxy stable-bot is freely provided by HAProxy Technologies to help 
improve the quality of each HAProxy release.  If you have any issue with these 
emails or if you want to suggest some improvements, please post them on the 
list so that the solutions suiting the most users can be found.



Re: [PATCH] DOC: Add HTX part in the documentation

2019-02-02 Thread Aleksandar Lazic
Sorry have forgotten to add.

Need to backport to 1.9

Regards
Aleks


 Ursprüngliche Nachricht 
Von: Aleksandar Lazic 
Gesendet: 2. Februar 2019 10:01:26 MEZ
An: haproxy@formilux.org
Betreff: [PATCH] DOC: Add HTX part in the documentation

Hi.

attached a doc update for the new features of HAProxy 1.9.

I hope the patch full fills the CONTRIBUTING rules as
I haven't send patched to the list for long time ;-)

Regards
Aleks



Chained http -> http frontends: http/2 error 400 vs http/1.1 error 502 Reply-To:

2019-02-02 Thread Jarno Huuskonen
Hi,

(This is kind of related to this thread:
https://www.mail-archive.com/haproxy@formilux.org/msg32255.html).

I'm seeing different behaviour between http1.1 / http2 when chaining
two frontends with mode http and the last frontend closes
connection with http-request reject (or tcp-request content reject).

When client uses http/1.1 then client receives 502 error (I think
this is expected because the "server" for the first frontend just closes
connection).

But when client uses http/2 then client will receive error 400.
(Tested with latest 2.0dev (2.0-dev0-32211a-258)).
I'm not sure if this is a bug, but at least seems to be different behaviour
between http/1.1 and http/2. (option http-use-htx doesn't seem to make
difference).

The attached varnishtest should explain what I mean. I put some debug
printf output to proto_htx and with http/2 the status 400 comes
from /* 3: client abort with an abortonclose */
(proto_htx.c line 1535, s->req.flags 0x9c42020).

With http/1.1 status 502 comes from /* 4: close from server, capture
the response if the server has started to respond */
(proto_htx.c line 1559, s->req.flags 0x9842000).
(If I interpret s->req.flags correctly then http/2 has
CF_READ_DONTWAIT and CF_SHUTR set and http/1.1 doesn't).

-Jarno

varnishtest "h2 chaining 400 error"
#REQUIRE_VERSION=1.9
feature ignore_unknown_macro

haproxy h1 -conf {
defaults
mode http
${no-htx} option http-use-htx
timeout connect 1s
timeout client  1s
timeout server  1s

listen HTTP_in
bind "fd@${HTTP_in}"
server tmpserver abns@proc1 send-proxy-v2

listen HTTP2_in
bind "fd@${HTTP2_in}" proto h2
server tmpserver abns@proc1 send-proxy-v2

frontend fe
bind abns@proc1 accept-proxy
http-request reject if TRUE
default_backend be

backend be
server s1 ${s1_addr}:${s1_port}

} -start

client c1h1 -connect ${h1_HTTP_in_sock} {
txreq
rxresp
expect resp.status == 502
} -run

client c1h2 -connect ${h1_HTTP2_in_sock} {
txpri
stream 0 {
txsettings
rxsettings
txsettings -ack
rxsettings
expect settings.ack == true
} -run
stream 1 {
# warning: -req, -scheme, -url MUST be placed first otherwise
# the H2 protocol is invalid since they are pseudo-headers
txreq \
  -req GET \
  -scheme "https" \
  -url /path/to/file.ext

rxhdrs
expect resp.status == 502
#rxdata -all
} -run
} -run

-- 
Jarno Huuskonen



[PATCH] DOC: Add HTX part in the documentation

2019-02-02 Thread Aleksandar Lazic

Hi.

attached a doc update for the new features of HAProxy 1.9.

I hope the patch full fills the CONTRIBUTING rules as
I haven't send patched to the list for long time ;-)

Regards
AleksFrom c0e025e81b87a23f679aff80bddc02a96c4d43b0 Mon Sep 17 00:00:00 2001
From: Aleksandar Lazic 
Date: Sat, 2 Feb 2019 09:54:55 +0100
Subject: [PATCH] DOC: Add HTX part in the documentation

---
 doc/configuration.txt | 50 +--
 1 file changed, 48 insertions(+), 2 deletions(-)

diff --git a/doc/configuration.txt b/doc/configuration.txt
index fe5eb250..38ed12ed 100644
--- a/doc/configuration.txt
+++ b/doc/configuration.txt
@@ -192,8 +192,7 @@ HAProxy supports 4 connection modes :
 For HTTP/2, the connection mode resembles more the "server close" mode : given
 the independence of all streams, there is currently no place to hook the idle
 server connection after a response, so it is closed after the response. HTTP/2
-is only supported for incoming connections, not on connections going to
-servers.
+supports now end 2 end mode and trailers which is requierd for gRPC.
 
 
 1.2. HTTP request
@@ -384,6 +383,53 @@ Response headers work exactly like request headers, and as such, HAProxy uses
 the same parsing function for both. Please refer to paragraph 1.2.2 for more
 details.
 
+1.3.3. HAProxy HTX
+--
+In this version of HAProxy was a new http-engine developed. With this huge 
+rewrite of the http engine is it now possible to add "easier" some other and 
+new protocols.
+
+It is requierd to use option http-use-htx to activate this new engine.
+
+With HTX is it now possible to handle the following protocols with HAProxy.
+
+TCP <> HTTP/X
+SSL/TLS <> TCP
+SSL/TLS <> HTTP/X
+HTTP/1.x <> HTTP/2
+HTTP/2 <> HTTP/1.x
+
+The Diagramm below was described in this post.
+https://www.mail-archive.com/haproxy@formilux.org/msg31727.html
+
+
+   +-+ stream
+   | all HTTP processing | layer
+   +-+
+   ^ ^ ^
+   HTX | HTX | HTX | normalised
+   v v v  interface
+   +--+ ++ ++ 
+   |applet| | HTTP/1 | | HTTP/2 | whatever layer (called mux for now
+   +--+ ++ ++ but may change once we have others,
+cache || || could be presentation in OSI)
+stats | +--+  | 
+Lua svc   | |TLS   |  | transport layer
+  | +--+  |
+  |   |   | 
++-+ 
+| TCP/Unix/socketpair | control layer
++-+ 
+  |   
++--+
+|file descriptor   |  socket layer
++--+
+  |
+ +---+
+ | operating |
+ |  system   |
+ +---+
+
 
 2. Configuring HAProxy
 --
-- 
2.20.1