Hi, here's an update for 1.5. It contains a security fix, please read, as you'll want either to update or to apply the fix on top of your version if you are running it.
Configurations at risk are those which combine use of HTTP keywords in TCP content inspection rules, client-side keep-alive, header rewriting rules and which receive pipelined requests. These configurations may be remotely crashed when run with haproxy 1.4 up to and including 1.4.22 or development versions up to and including 1.5-dev17. Versions 1.4.23 and 1.5-dev18 are safe. This issue was reported and troubleshooted by Yves Lafon from the W3C. Thanks Yves for the time you spent on this and all the efforts you made to get this core! For those who want to quickly deploy a fix, please use this patch for 1.5 : http://git.1wt.eu/web?p=haproxy.git;a=commitdiff;h=aae75e3279 Many things have changed since 1.5-dev17. Many bugs were fixed, and bunch of regressions were introduced during the chanegs, as was seen today. But we're improving the code modularity and maintenability, this is important. The most important changes (not counting the bugs) are listed below : - systemd support was brought by Marc-Antoine Perennou - agent-based health check was implemented by Simon Hormans based on specs provided by Loadbalancer.org. This is a first step towards a more complete health check system. In this version, health checks can be switched to use a special agent running on the system, which can tell haproxy what weight it wants, if it is up/down/ill/in maintenance, etc... - all address parsers were merged intoo a single one. This means that "bind", "log", "source", "server", ... now all use the same address parser. It has been improved to support forcing the address family by the use of the "@" prefix, and environment variables. It is now possible to build configurations which use the local address without using sed. It is also possible to listen to a pre-bound file descriptor passed by the parent. - ability to limit the maximum SSL/TLS record size (suggested by Ilya Grigorik, and earlier by Mike Belshe). In short, when you send a 16kB ciphered block to a browser, it has to receive it completely before deciphering it and starting to render the contents. By reducing the size, we slightly reduce the performance but we allow the browser to start rendering the page and fetch new objects much earlier. - HTTP redirect can now emit statuses 307 and 308 (Yves Lafon). - PCRE JIT support was contributed by Hiroaki Nakamura, it should provide much faster regex processing. - poll() is now enabled by default in the makefile even for unknown targets. - ACL and sample fetch converged to something much better : everything that could be extracted from a request or response is now accessible via a sample fetch (so no more lamenting about whether it's availble as one or the other), and ACLs do not have a fetch function anymore, they use the sample's fetch methods. There are several benefits of doing this. The first one is that we don't duplicate code anymore and we'll avoid many bugs (many were found during this work). The second benefit is that ACLs can now select the matching method to be used with the new -m parameter, so many more combinations are possible and won't require duplicating code anymore. The third benefit is that error reporting was greatly improved, as each fetch argument knows its exact position in the expression, and each fetch method knows it compatibility matrix. Thus, no more silent uses of an L6 fetch with an L4 or things like this. Some further changes are expected on this point (maps, variables, concatenation, conversions). - TLS ALPN was implemented similarly as NPN was made. It is supposed to replace NPN. All the rest are bugs. I counted 43... Usual links below : Site index : http://haproxy.1wt.eu/ Sources : http://haproxy.1wt.eu/download/1.5/src/devel/ Changelog : http://haproxy.1wt.eu/download/1.5/src/CHANGELOG Cyril's HTML doc : http://cbonte.github.com/haproxy-dconv/configuration-1.5.html I'm not appending the changelog, it's too large. And remember, if you use "tcp-request content" with any HTTP keyword, you need either a config change or an update. Willy

