[ANNOUNCE] haproxy-1.9.10

2019-08-08 Thread Willy Tarreau
Hi,

HAProxy 1.9.10 was released on 2019/08/08. It added 30 new commits
after version 1.9.9.

As mentioned in the 2.0.4 announce, this release is mostly a catch-up version.
It fixes two possibly important issues, one affecting the raw to htx conversion
which happens when HTTP sample fetches are used from TCP rule sets in HTX
proxies, and a deadlock issue under threads when dequeuing connections on
a maxconn-limited server. The rest is less important and contains a significant
number of H2 fixes which are mostly annoyances (including a cause for spurious
RST_STREAM), and the usual set of htx and thread fixes.

In short if you're using H2, threads, HTX, or are experiencing any particular
issue, better upgrade.

I'll try to issue the next 1.8 either before this week-end or early next week.

Please find the usual URLs below :
   Site index   : http://www.haproxy.org/
   Discourse: http://discourse.haproxy.org/
   Slack channel: https://slack.haproxy.org/
   Issue tracker: https://github.com/haproxy/haproxy/issues
   Sources  : http://www.haproxy.org/download/1.9/src/
   Git repository   : http://git.haproxy.org/git/haproxy-1.9.git/
   Git Web browsing : http://git.haproxy.org/?p=haproxy-1.9.git
   Changelog: http://www.haproxy.org/download/1.9/src/CHANGELOG
   Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/

Willy
---
Complete changelog :
Christopher Faulet (8):
  BUG/MEDIUM: lb-chash: Fix the realloc() when the number of nodes is 
increased
  BUG/MINOR: hlua/htx: Reset channels analyzers when txn:done() is called
  BUG/MEDIUM: hlua: Check the calling direction in lua functions of the 
HTTP class
  MINOR: hlua: Don't set request analyzers on response channel for lua 
actions
  MINOR: hlua: Add a flag on the lua txn to know in which context it can be 
used
  BUG/MINOR: hlua: Only execute functions of HTTP class if the txn is HTTP 
ready
  BUG/MINOR: lua: Set right direction and flags on new HTTP objects
  BUG/MEDIUM: lb-chash: Ensure the tree integrity when server weight is 
increased

Emmanuel Hocdet (2):
  BUG/MINOR: ssl: fix 0-RTT for BoringSSL
  MINOR: ssl: ssl_fc_has_early should work for BoringSSL

Olivier Houchard (2):
  BUG/MEDIUM: streams: Don't switch the SI to SI_ST_DIS if we have data to 
send.
  BUG/MEDIUM: fd: Always reset the polled_mask bits in fd_dodelete().

Richard Russo (1):
  BUG/MAJOR: http/sample: use a static buffer for raw -> htx conversion

Willy Tarreau (17):
  BUG/MEDIUM: protocols: add a global lock for the init/deinit stuff
  BUG/MINOR: proxy: always lock stop_proxy()
  BUILD: threads: add the definition of PROTO_LOCK
  BUG/MINOR: log: make sure writev() is not interrupted on a file output
  DOC: improve the wording in CONTRIBUTING about how to document a bug fix
  BUILD: log/threads: implement the logsrv lock
  BUG/MAJOR: queue/threads: avoid an AB/BA locking issue in 
process_srv_queue()
  BUG/MINOR: stream-int: also update analysers timeouts on activity
  BUG/MEDIUM: mux-h2: unbreak receipt of large DATA frames
  BUG/MEDIUM: mux-h2: split the stream's and connection's window sizes
  BUG/MINOR: mux-h2: don't refrain from sending an RST_STREAM after another 
one
  BUG/MINOR: mux-h2: use CANCEL, not STREAM_CLOSED in h2c_frt_handle_data()
  BUG/MEDIUM: mux-h2: do not recheck a frame type after a state transition
  BUG/MINOR: mux-h2: always send stream window update before connection's
  BUG/MINOR: mux-h2: always reset rcvd_s when switching to a new frame
  BUG/MEDIUM: checks: make sure to close nicely when we're the last to speak
  BUG/MINOR: buffers/threads: always clear a buffer's head before releasing 
it

---



Re: [cache] allow caching of OPTIONS request

2019-08-08 Thread William Lallemand
On Wed, Aug 07, 2019 at 03:20:34PM +0200, Baptiste wrote:
> On Wed, Aug 7, 2019 at 3:18 PM William Lallemand 
> wrote:
> 
> > On Wed, Aug 07, 2019 at 12:38:05PM +0200, Baptiste wrote:
> > > Hi there,
> > >
> > > Please find in attachement a couple of patches to allow caching responses
> > > to OPTIONS requests, used in CORS pattern.
> > > In modern API where CORS is applied, there may be a bunch of OPTIONS
> > > requests coming in to the API servers, so caching these responses will
> > > improve API response time and lower the load on the servers.
> > > Given that HAProxy does not yet support the Vary header, this means this
> > > feature is useful in a single case, when the server send the following
> > > header "set access-control-allow-origin: *".
> > >
> > > William, can you check if my patches look correct, or if this is totally
> > > wrong and then I'll open an issue on github for tracking this one.
> > >
> >
> > Looks good to me, pushed in master.
> >
> > --
> > William Lallemand
> >
> 
> Great, thanks!
> 
> Baptiste

Don't forget to update the documentation,

Thanks

-- 
William Lallemand



haproxy=2.0.3: SIGABRT in task_run_applet

2019-08-08 Thread Максим Куприянов
Hi!

Fro 3 to 4 times per day haproxy=2.0.3 dies with a SIGABRT. Config is huge,
more than 1000 backends. Backtrace follows

Program terminated with signal SIGABRT, Aborted.
#0  0x7febeb888428 in raise () from /lib/x86_64-linux-gnu/libc.so.6
[Current thread is 1 (Thread 0x7febe37fe700 (LWP 10343))]

Thread 32 (Thread 0x7febbe7fc700 (LWP 10366)):
#0  0x55fcf5abdb3d in strm_log (s=0x7feb7c068f00) at src/log.c:2916
#1  0x55fcf5a30d34 in process_stream (t=,
context=0x7feb7c068f00, state=) at src/stream.c:2733
#2  0x55fcf5b076c9 in process_runnable_tasks () at src/task.c:412
#3  0x55fcf5a70c08 in run_poll_loop () at src/haproxy.c:2516
#4  run_thread_poll_loop (data=) at src/haproxy.c:2637
#5  0x7febec98a6ba in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#6  0x7febeb95a41d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 31 (Thread 0x7febc4ff9700 (LWP 10362)):
#0  0x7febeb95aa13 in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x55fcf59cfd73 in _do_poll (p=, exp=,
wake=0) at src/ev_epoll.c:156
#2  0x55fcf5a70bd9 in run_poll_loop () at src/haproxy.c:2553
#3  run_thread_poll_loop (data=) at src/haproxy.c:2637
#4  0x7febec98a6ba in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#5  0x7febeb95a41d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 30 (Thread 0x7febc77fe700 (LWP 10357)):
#0  0x7febeb95aa13 in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x55fcf59cfd73 in _do_poll (p=, exp=,
wake=0) at src/ev_epoll.c:156
#2  0x55fcf5a70bd9 in run_poll_loop () at src/haproxy.c:2553
#3  run_thread_poll_loop (data=) at src/haproxy.c:2637
#4  0x7febec98a6ba in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#5  0x7febeb95a41d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 29 (Thread 0x7febd9ffb700 (LWP 10353)):
#0  0x7febeb95aa13 in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x55fcf59cfd73 in _do_poll (p=, exp=,
wake=0) at src/ev_epoll.c:156
#2  0x55fcf5a70bd9 in run_poll_loop () at src/haproxy.c:2553
#3  run_thread_poll_loop (data=) at src/haproxy.c:2637
#4  0x7febec98a6ba in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#5  0x7febeb95a41d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 28 (Thread 0x7febbcff9700 (LWP 10369)):
#0  0x55fcf5b07483 in process_runnable_tasks () at src/task.c:326
#1  0x55fcf5a70c08 in run_poll_loop () at src/haproxy.c:2516
#2  run_thread_poll_loop (data=) at src/haproxy.c:2637
#3  0x7febec98a6ba in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#4  0x7febeb95a41d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 27 (Thread 0x7febbf7fe700 (LWP 10364)):
#0  0x7febeb95aa13 in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x55fcf59cfd73 in _do_poll (p=, exp=,
wake=0) at src/ev_epoll.c:156
#2  0x55fcf5a70bd9 in run_poll_loop () at src/haproxy.c:2553
#3  run_thread_poll_loop (data=) at src/haproxy.c:2637
#4  0x7febec98a6ba in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#5  0x7febeb95a41d in clone () from /lib/x86_64-linux-gnu/libc.so.6

---Type  to continue, or q  to quit---
Thread 26 (Thread 0x7febc57fa700 (LWP 10361)):
#0  0x7febeb95aa13 in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x55fcf59cfd73 in _do_poll (p=, exp=,
wake=0) at src/ev_epoll.c:156
#2  0x55fcf5a70bd9 in run_poll_loop () at src/haproxy.c:2553
#3  run_thread_poll_loop (data=) at src/haproxy.c:2637
#4  0x7febec98a6ba in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#5  0x7febeb95a41d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 25 (Thread 0x7febc67fc700 (LWP 10359)):
#0  0x7febeb95aa13 in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x55fcf59cfd73 in _do_poll (p=, exp=,
wake=0) at src/ev_epoll.c:156
#2  0x55fcf5a70bd9 in run_poll_loop () at src/haproxy.c:2553
#3  run_thread_poll_loop (data=) at src/haproxy.c:2637
#4  0x7febec98a6ba in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#5  0x7febeb95a41d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 24 (Thread 0x7febb700 (LWP 10363)):
#0  0x7febeb95aa13 in epoll_wait () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x55fcf59cfd73 in _do_poll (p=, exp=,
wake=0) at src/ev_epoll.c:156
#2  0x55fcf5a70bd9 in run_poll_loop () at src/haproxy.c:2553
#3  run_thread_poll_loop (data=) at src/haproxy.c:2637
#4  0x7febec98a6ba in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#5  0x7febeb95a41d in clone () from /lib/x86_64-linux-gnu/libc.so.6

Thread 23 (Thread 0x7febbeffd700 (LWP 10365)):
#0  0x55fcf5b06f4a in wake_expired_tasks () at src/task.c:215
#1  0x55fcf5a70c29 in run_poll_loop () at src/haproxy.c:2524
#2  run_thread_poll_loop (data=) at src/haproxy.c:2637
#3  0x7febec98a6ba in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#4  0x7febeb95a41d in 

A Resource which you might be interested in

2019-08-08 Thread VPN Ranks
Hi,

How are you?

While looking for great resources on proxies, I came across your site:

I noticed you have a lot of resources that help users on your site.

Please add our resource too: https://www.vpnranks.com/.

Let me know your thoughts on this.

Regards,
Team VPNRanks.com