Hi everyone, Sixteen months after haproxy 1.5.0 was released, here comes 1.6.0. We've done a much better job this time and despite some code being pushed after the freeze (don't do that again or I'll bite), overall the process has been doing quite well.
Recently for our products I had to walk over the whole changelog to enumerate all the main features we created into 1.6 since 1.5.0, and I was quite impressed in the end, and realized that I would be unable to say what's new in 1.6 by citing just a few features as there are a lot. Here's a simplified version, I won't go into details because it would take a very long e-mail (and a lot of time, this evening I'm tired of typing long sentences) : Resources management : - dynamic buffer allocation - automatic maxconn setting - peers disable - peers process binding Configuration management : - config support for quotes - config environment variables Notification / reporting : - stats clean encoding in CSV - mailers - log-tag - log-format tags %H* Server state management : - state keeping across reload - multiple redispatch - dns resolution - CLI server address change - external checker - tcp-check comment High-level processing / scripting : - lua - variables - gpt0 - 64-bit integer in samples - more flexible sample management - declared captures - http-response redirect - http-request capture - {url,body}_param supports any param - device identification - option http-buffer-request - arithmetic fetches and convs - new fetch/conv (query, json, field, ...) - http-request set-{path,query,method,uri} - table lookups converters - header manipulation on status code 101 Client-facing SSL/TLS : - ECDSA client support detection - SSL cert forgery on the fly - TLS cert transparency (SCTL) - TLS ticket key load from file/CLI - custom SSL DH params Server-facing SSL/TLS : - specify TLS sni to server - no-ssl-reuse Performance : - HTTP server connection sharing - use pcre-study by default - stateless gzip/deflate compression - compression of 201-203 - pattern cache Reliability : - peers v2 - TCP_USER_TIMEOUT Integration : - linux namespaces - http-request set-src - HTTP/0.9 disabled by default - RTSP basic compatibility - option http-ignore-probes - max syslog line length Documentation : - added more documentation (intro, management, lua) - removed obsolete and confusing docs - removed lots of obsolete config files Just to illustrate how things went compared to version 1.5, in almost 16 months, we merged 1156 commits from 59 people, compared to 2463 commits from 76 people in 49 months. That's 50% more commits per month and 138% more contributors per month. This proves the process is working and that by having a faster rhythm we can avoid to bore contributors. Now we have some official subsystem maintainers who have authority on their parts and who are responsible for reviewing the code submitted in their areas. That doesn't mean that I won't accept such patches anymore, it just means that patches will take less time to get merged by avoiding the back-and-forth exchanges we were doing because contributors didn't know who to send them to nor how to proceed, and that if these persons say "no" to some changes, I'll support them. At the moment we have Thierry Fournier who's in charge of Lua and maps+ patterns, Emeric Brun for SSL and peers, Baptiste Assmann for the DNS resolvers and tcp-checks, Simon Horman for mailers and external checks, Cyril Bonté for everything related to the doc format and structure and for stable backports as he's the stable co-maintainer with me, and David Carlier for the DeviceAtlas device identification. Thanks to them! All of them are doing this on their spare time. Please respect their code, their time, and don't try to bypass them if you want to apply changes in their areas, that will avoid a number of bugs. I sincerely hope that this organisation, as well as the documentation that we're progressively adding, will help get better quality contributions over time and that code will take less time to be reviewed and will be merged faster. We got very good bug reports again during this cycle and the talented people you're used to see jumping on any bug report have done an amazing job again, so sincere thanks to them for this, because we'd have many more bugs without their help! By the way, I was hoping to be able to announce the 1000th subscriber on the list by the release, but no, this morning we were 955 permanent subscribers on this list, that's not bad anyway, especially considering that it's an open list and that a number of people subscribe to ask a questionn and unsubscribe afterwards :-) Regarding the quality of this release, I think it is reasonably safe as long as you don't blindly use the last-minute additions. Specifically we know that the use-service feature is still not 100% reliable in HTTP mode as Pieter got hit by it a little bit so any report on this will be helpful, but don't play with it in production. The rest looks quite safe given that it's been working for quite some time on a number of sites (including haproxy.org), and that a large number of the features have been integrated into our HAPEE and ALOHA products without any negative feedback over last year. Thus, just like any "dot-zero" version, use it with care but don't be scared. I'm going to update haproxy.org as time permits. As of now, all new code will go into 1.7, and only bug fixes and doc updates will still find their way into 1.6 and older. I predict that the introduction of Lua may tempt people to share some code, and that having a central place to discuss such code and archive / rate it would be useful. I've got some proposals to host such a discussion group already, I just want to observe first so that we find the right balance between this and the mailing list. While forum-like sites are suited for cases where beginners want some occasional help or to share some code, they're not suited at all to bug troubleshooting sessions nor development. So no rush here, but stay tuned. I've uploaded the code already, created fresh new git trees, I hope I didn't mess up with anything, otherwise thanks for reporting it. The main site has not been updated yet, it will be done shortly. New 1.6-stable URLs below : Site index : http://www.haproxy.org/ Sources : http://www.haproxy.org/download/1.6/src/ Git repository : http://git.haproxy.org/git/haproxy-1.6.git/ Git Web browsing : http://git.haproxy.org/?p=haproxy-1.6.git Changelog : http://www.haproxy.org/download/1.6/src/CHANGELOG Cyril's HTML doc : http://cbonte.github.com/haproxy-dconv/intro-1.6.html Cyril's HTML doc : http://cbonte.github.com/haproxy-dconv/configuration-1.6.html Since 1.6-dev7, very few changes happened in the code, most of them were in the docs. Some fixes were applied to the SSL cert generator, a few other ones to Lua services, and TCP_USER_TIMEOUT support on the server was added (useful during reloads since health checks are disabled on old processes). The changelog since dev7 without DOC nor CLEANUP tags is appended below : - BUG/MEDIUM: pattern: fixup use_after_free in the pat_ref_delete_by_id - MINOR: init: report use of libslz instead of "no compression" - BUILD: properly report when USE_ZLIB and USE_SLZ are used together - MINOR: examples: update haproxy.spec to mention new docs - MEDIUM: server: implement TCP_USER_TIMEOUT on the server - BUG/MINOR: config: make the stats socket pass the correct proxy to the parsers - BUG/MEDIUM: lua: direction test failed - BUILD: enable build on Linux/s390x - BUG/MINOR: Handle interactive mode in cli handler - MINOR: lua: fix a spelling error in some error messages - BUG/MEDIUM: logs: fix time zone offset format in RFC5424 - MINOR: ssl: Add callbacks to set DH/ECDH params for generated certificates - MINOR: ssl: Add support for EC for the CA used to sign generated certificates - MINOR: ssl: Read the file used to generate certificates in any order - BUILD: ssl: fix build error introduced by recent commit - MINOR: ssl: Release Servers SSL context when HAProxy is shut down - BUG/MINOR: ssl: fix management of the cache where forged certificates are stored - BUG/MINOR: http: Add OPTIONS in supported http methods (found by find_http_meth) - MINOR: lru: do not allocate useless memory in lru64_lookup - BUILD: Fix the build on OSX (htonll/ntohll) - MINOR: debug: enable memory poisonning to use byte 0 - MEDIUM: init: support a list of files on the command line - MEDIUM: init: support more command line arguments after pid list - BUG/MEDIUM: lua: force server-close mode on Lua services And now for those who like to read the casting at the end of a movie, I'm appending the not-so-shortlog since 1.5.0 below. Please bear in mind that a lot of valuable contributors do not appear here because their help is on the list more than in the code, so don't forget to thank them next time they help you! Thanks. Adam Spiers (6): CLEANUP: extract temporary $CFG to eliminate duplication CLEANUP: extract temporary $BIN to eliminate duplication CLEANUP: extract temporary $PIDFILE to eliminate duplication CLEANUP: extract temporary $LOCKFILE to eliminate duplication CLEANUP: extract quiet_check() to avoid duplication BUG/MINOR: don't start haproxy on reload Adis Nezirovic (2): CLEANUP: sample: generalize sample_fetch_string() as sample_fetch_as_type() MEDIUM: http: Add new 'set-src' option to http-request Alexander Rigbo (1): BUG/MINOR: ssl: Display correct filename in error message Andrew Hayworth (4): MEDIUM: logs: Add HTTP request-line log format directives MINOR: log: Add log-format variable %HQ, to log HTTP query strings MINOR: cli: Dump all resolvers stats if no resolver section is given BUG/MINOR: Handle interactive mode in cli handler Andrew Latham (1): DOC: Address issue where documentation is excluded due to a gitignore rule. Apollon Oikonomopoulos (1): BUG/MEDIUM: systemd: set KillMode to 'mixed' Arcadiy Ivanov (1): BUILD: fix "make install" to support spaces in the install dirs Baptiste Assmann (61): BUG/MINOR: config: http-request replace-header arg typo BUG: config: error in http-response replace-header number of arguments DOC: missing track-sc* in http-request rules BUILD: lua: missing ifdef related to SSL when enabling LUA BUG/MEDIUM: check: tcpcheck regression introduced by e16c1b3f BUG/MINOR: check: fix tcpcheck error message MINOR: use an int instead of calling tcpcheck_get_step_id MINOR: tcpcheck_rule structure update MINOR: include comment in tcpcheck error log DOC: tcpcheck comment documentation MEDIUM: server: add support for changing a server's address MEDIUM: server: change server ip address from stats socket MEDIUM: protocol: add minimalist UDP protocol client MEDIUM: dns: implement a DNS resolver MAJOR: server: add DNS-based server name resolution DOC: server name resolution + proto DNS MINOR: dns: add DNS statistics DOC usesrc root privileges requirments BUG/MINOR: dns: wrong time unit for some DNS default parameters MINOR: proxy: bit field for proxy_find_best_match diff status MINOR: server: new server flag: SRV_F_FORCED_ID MINOR: server: server_find functions: id, name, best_match DOC: typo in 'redirect', 302 code meaning DOC: typos in tcp-check expect examples DOC: resolve-prefer default value and default-server update MINOR: DNS counters: increment valid counter BUG/MEDIUM: DNS resolution response parsing broken MINOR: server: add new SRV_ADMF_CMAINT flag MINOR: server SRV_ADMF_CMAINT flag doesn't imply SRV_ADMF_FMAINT BUG/MEDIUM: dns: wrong first time DNS resolution MINOR: dns: dns_resolution structure update: time_t to unsigned int BUG/MEDIUM: dns: DNS resolution doesn't start BUG/MAJOR: dns: dns client resolution infinite loop MINOR: dns: coding style update MINOR: dns: new bitmasks to use against DNS flags MINOR: dns: dns_nameserver structure update: new counter for truncated response MINOR: dns: New DNS response analysis code: DNS_RESP_TRUNCATED MEDIUM: dns: handling of truncated response MINOR: DNS client query type failover management MINOR: dns: no expected DNS record type found MINOR: dns: new flag to report that no IP can be found in a DNS response packet BUG/MINOR: DNS request retry counter used for retry only DOC: DNS documentation updated BUG/MAJOR: can't enable a server through the stat socket MINOR: server: Macro definition for server-state MINOR: cli: new stats socket command: show servers state DOC: stats socket command: show servers state MINOR: config: new global directive server-state-base DOC: global directive server-state-base MINOR: config: new global section directive: server-state-file DOC: new global directive: server-state-file MINOR: config: new backend directives: load-server-state-from-file and server-state-file-name DOC: load-server-state-from-file MINOR: init: server state loaded from file MINOR: server: startup slowstart task when using seamless reload of HAProxy MINOR: cli: new stats socket command: show backend DOC: servers state seamless reload example BUG: dns: can't connect UDP socket on FreeBSD DOC: global section missing parameters DOC: backend section missing parameters DOC: stats paramaters available in frontend Ben Cabot (1): BUG: config: external-check command validation is checking for incorrect arguments. CJ Ess (2): MEDIUM: http: configurable http result codes for http-request deny BUILD: Compile clean when debug options defined Camilo Lopez (1): BUG/MEDIUM: lua: Lua tasks fail to start. Christian Ruppert (2): BUG/MEDIUM: regex: fix pcre_study error handling MEDIUM: regex: Use pcre_study always when PCRE is used, regardless of JIT Christopher Faulet (11): MINOR: lru: Add the possibility to free data when an item is removed MINOR: lru: Add lru64_lookup function MEDIUM: ssl: Add options to forge SSL certificates MINOR: ssl: Export functions to manipulate generated certificates MINOR: lru: do not allocate useless memory in lru64_lookup BUG/MINOR: http: Add OPTIONS in supported http methods (found by find_http_meth) BUG/MINOR: ssl: fix management of the cache where forged certificates are stored MINOR: ssl: Release Servers SSL context when HAProxy is shut down MINOR: ssl: Read the file used to generate certificates in any order MINOR: ssl: Add support for EC for the CA used to sign generated certificates MINOR: ssl: Add callbacks to set DH/ECDH params for generated certificates Conrad Hoffmann (2): BUG/MINOR: Fix search for -p argument in systemd wrapper. MEDIUM: Improve signal handling in systemd wrapper. Cyril Bonté (25): DOC: fix typo in Unix Socket commands BUG/MEDIUM: checks: external checks can't change server status to UP BUG/MEDIUM: checks: segfault with external checks in a backend section BUG/MINOR: checks: external checks shouldn't wait for timeout to return the result BUG/MEDIUM: auth: fix segfault with http-auth and a configuration with an unknown encryption algorithm BUG/MEDIUM: config: userlists should ensure that encrypted passwords are supported BUG/MINOR: config: don't propagate process binding for dynamic use_backend BUG/MINOR: log: fix request flags when keep-alive is enabled BUG/MEDIUM: checks: fix conflicts between agent checks and ssl healthchecks MINOR: checks: allow external checks in backend sections MEDIUM: checks: provide environment variables to the external checks MINOR: checks: update dynamic environment variables in external checks DOC: checks: environment variables used by "external-check command" BUG/MEDIUM: backend: correctly detect the domain when use_domain_only is used MINOR: ssl: load certificates in alphabetical order BUG/MINOR: checks: prevent http keep-alive with http-check expect MINOR: lua: typo in an error message MINOR: report the Lua version in -vv MINOR: lua: add a compilation error message when compiled with an incompatible version BUG/MEDIUM: lua: segfault when calling haproxy sample fetches from lua BUILD: try to automatically detect the Lua library name BUILD/CLEANUP: systemd: avoid a warning due to mixed code and declaration DOC: dns: fix chapters syntax BUILD: add USE_LUA to BUILD_OPTIONS when it's used DOC: documentation format cleanups Dan Dubovik (1): BUG/MEDIUM: backend: Update hash to use unsigned int throughout Daniel Jakots (1): DOC/MINOR: fix OpenBSD versions where haproxy works Dave McCowan (2): BUG/MEDIUM: connection: fix memory corruption when building a proxy v2 header MEDIUM: connection: add new bit in Proxy Protocol V2 David Carlier (17): MEDIUM: config: add DeviceAtlas global keywords MEDIUM: global: add the DeviceAtlas required elements to struct global MEDIUM: sample: add the da-csv converter MEDIUM: init: DeviceAtlas initialization BUILD: Makefile: add options to build with DeviceAtlas DOC: README: explain how to build with DeviceAtlas BUILD/MINOR: tools: rename popcount to my_popcountl BUILD: add netbsd TARGET MINOR: cfgparse: New function cfg_unregister_sections() MINOR: chunk: New function free_trash_buffers() BUG/MEDIUM: main: Freeing a bunch of static pointers MINOR: proto_http: Externalisation of previously internal functions MINOR: global: Few new struct fields for da module MAJOR: da: Update of the DeviceAtlas API module DOC: DeviceAtlas new keywords DOC: README: DeviceAtlas sample configuration updates DOC: lua: few typos. Dmitry Sivachenko (1): BUG/MEDIUM: str2ip: make getaddrinfo() consider local address selection policy Dragan Dosen (17): BUG/MEDIUM: http: fix the url_param fetch BUG/MEDIUM: init: segfault if global._51d_property_names is not initialized MEDIUM: 51Degrees code refactoring and cleanup MEDIUM: 51d: add LRU-based cache on User-Agent string detection DOC: add notes about the "51degrees-cache-size" parameter BUG/MEDIUM: 51d: possible incorrect operations on smp->data.str.str MINOR: 51d: unable to start haproxy without "51degrees-data-file" MEDIUM: log: replace sendto() with sendmsg() in __send_log() MEDIUM: log: use a separate buffer for the header and for the message MEDIUM: logs: remove the hostname, tag and pid part from the logheader MEDIUM: logs: add support for RFC5424 header format per logger MEDIUM: logs: add a new RFC5424 log-format for the structured-data DOC: mention support for the RFC5424 syslog message format MEDIUM: logs: have global.log_send_hostname not contain the trailing space MEDIUM: logs: pass the trailing "\n" as an iovec BUG/MEDIUM: logs: segfault writing to log from Lua BUG/MEDIUM: logs: fix time zone offset format in RFC5424 Emeric Brun (22): BUG/MINOR: ssl: rejects OCSP response without nextupdate. BUG/MEDIUM: ssl: Fix to not serve expired OCSP responses. BUG/MINOR: ssl: Fix OCSP resp update fails with the same certificate configured twice. BUG/MINOR: ssl: Fix external function in order not to return a pointer on an internal trash buffer. MINOR: add fetchs 'ssl_c_der' and 'ssl_f_der' to return DER formatted certs MINOR: ssl: add statement to force some ssl options in global. BUG/MINOR: ssl: correctly initialize ssl ctx for invalid certificates BUG/MEDIUM: ssl: fix bad ssl context init can cause segfault in case of OOM. BUG/MINOR: samples: fix unnecessary memcopy converting binary to string. MINOR: samples: adds the bytes converter. MINOR: samples: adds the field converter. MINOR: samples: add the word converter. MAJOR: peers: peers protocol version 2.0 MINOR: peers: avoid re-scheduling of pending stick-table's updates still not pushed. MEDIUM: peers: re-schedule stick-table's entry for sync when data is modified. MEDIUM: peers: support of any stick-table data-types for sync BUG/MAJOR: sample: regression on sample cast to stick table types. BUG/MEDIUM: peers: fix wrong message id on stick table updates acknowledgement. BUG/MAJOR: peers: fix current table pointer not re-initialized on session release. BUG/MEDIUM: peers: some table updates are randomly not pushed. BUG/MEDIUM: peers: same table updates re-pushed after a re-connect BUG/MINOR: fct peer_prepare_ackmsg should not use trash. Godbach (8): BUG/MINOR: server: move the directive #endif to the end of file BUG/MAJOR: buffer: check the space left is enough or not when input data in a buffer is wrapped DOC: fix a few typos CLEANUP: epoll: epoll_events should be allocated according to global.tune.maxpollevents BUG/MINOR: http: fix typo: "401 Unauthorized" => "407 Unauthorized" BUG/MINOR: parse: refer curproxy instead of proxy BUG/MINOR: parse: check the validity of size string in a more strict way CLEANUP: deinit: remove codes for cleaning p->block_rules Ilyas Bakirov (1): BUILD: add new target 'make uninstall' to support uninstalling haproxy from OS James Rosewell (6): MINOR: http: made CHECK_HTTP_MESSAGE_FIRST accessible to other functions MINOR: global: Added new fields for 51Degrees device detection DOC: Added more explanation for 51Degrees V3.2 BUILD: Changed 51Degrees option to support V3.2 MAJOR: 51d: Upgraded to support 51Degrees V3.2 and new features MINOR: 51d: Improved string handling for LRU cache James Westby (1): DOC: expand the docs for the provided stats. Jan Seda (1): BUG/MEDIUM: unix: do not unlink() abstract namespace sockets upon failure. Janusz Dziemidowicz (1): MEDIUM: ssl: Certificate Transparency support Jason Harvey (1): DOC: Fix L4TOUT typo in documentation Jeff Buchbinder (1): MEDIUM: stats: proxied stats admin forms fix Jesse Hathaway (1): MEDIUM: http: Compress HTTP responses with status codes 201,202,203 in addition to 200 Jim Freeman (1): DOC: set-log-level in Logging section preamble Joris Dedieu (1): BUG/MEDIUM: compat: fix segfault on FreeBSD Joseph Lynch (3): MEDIUM: check: include server address and port in the send-state header MEDIUM: backend: Allow redispatch on retry intervals BUILD: Fix the build on OSX (htonll/ntohll) Jérémie Courrèges-Anglas (1): BUILD: ssl: Allow building against libssl without SSLv3. KOVACS Krisztian (3): BUG/MEDIUM: connection: sanitize PPv2 header length before parsing address information MAJOR: namespace: add Linux network namespace support BUG/MAJOR: connection: fix TLV offset calculation for proxy protocol v2 parsing Kristoffer Grönlund (1): MINOR: systemd: Check configuration before start Lukas Tribus (5): BUILD: ssl: handle boringssl in openssl version detection BUILD: ssl: disable OCSP when using boringssl BUILD: ssl: don't call get_rfc2409_prime when using boringssl MINOR: ssl: don't use boringssl's cipher_list BUILD: ssl: use OPENSSL_NO_OCSP to detect OCSP support Marco Corte (1): MINOR: stats: fix minor typo in HTML page Matt Robenolt (1): MINOR: Also accept SIGHUP/SIGTERM in systemd-wrapper Neale Ferguson (1): BUILD: enable build on Linux/s390x Nenad Merdanovic (8): MEDIUM: Add support for configurable TLS ticket keys DOC: Document the new tls-ticket-keys bind keyword MINOR: Add TLS ticket keys reference and use it in the listener struct MEDIUM: Add support for updating TLS ticket keys via socket DOC: Document new socket commands "show tls-keys" and "set ssl tls-key" MINOR: Add sample fetch which identifies if the SSL session has been resumed MINOR: Add sample fetch to detect Supported Elliptic Curves Extension BUG/MINOR: payload: Add volatile flag to smp_fetch_req_ssl_ec_ext Nikos Mavrogiannopoulos (1): DOC: clarify some points about SSL and the proxy protocol Olivier (1): DOC: clearly state that the "show sess" output format is not fixed Olivier Doucet (1): MINOR: stats: fix minor typo fix in stats_dump_errors_to_buffer() Pavlos Parissis (2): DOC: Update doc about weight, act and bck fields in the statistics DOC: mention support for RFC 5077 TLS Ticket extension in starter guide PiBa-NL (1): DOC: httplog does not support 'no' Pieter Baauw (6): BUG/MEDIUM: mailer: DATA part must be terminated with <CRLF>.<CRLF> DOC: match several lua configuration option names to those implemented in code MINOR cfgparse: Correct the mailer warning text to show the right names to the user DOC: add references to rise/fall for the fastinter explanation MINOR: support cpu-map feature through the compile option USE_CPU_AFFINITY on FreeBSD DOC: fix lua use-service example Pradeep Jindal (2): BUG/MINOR: ssl: TLS Ticket Key rotation broken via socket command MINOR: payload: add support for tls session ticket ext Remi Gacogne (7): BUG/MEDIUM: ssl: Fix a memory leak in DHE key exchange MINOR: ssl: use SSL_get_ciphers() instead of directly accessing the cipher list. BUG/MEDIUM: ssl: fix tune.ssl.default-dh-param value being overwritten MINOR: ssl: add a destructor to free allocated SSL ressources MEDIUM: ssl: add the possibility to use a global DH parameters file MEDIUM: ssl: replace standards DH groups with custom ones MINOR: stream: initialize the current_rule field to NULL on stream init Simon Horman (23): BUG/MEDIUM: Consistently use 'check' in process_chk MEDIUM: Add external check BUG/MEDIUM: Do not set agent health to zero if server is disabled in config MEDIUM/BUG: Only explicitly report "DOWN (agent)" if the agent health is zero MEDIUM: Remove connect_chk MEDIUM: Refactor init_check and move to checks.c MEDIUM: Add free_check() helper MEDIUM: Move proto and addr fields struct check MEDIUM: Attach tcpcheck_rules to check MEDIUM: Add parsing of mailers section MEDIUM: Allow configuration of email alerts MEDIUM: Support sending email alerts DOC: Document email alerts MINOR: Remove trailing '.' from email alert messages MEDIUM: Allow suppression of email alerts by log level BUG/MEDIUM: Do not consider an agent check as failed on L7 error MEDIUM: stats: Add enum srv_stats_state MEDIUM: stats: Separate server state and colour in stats MEDIUM: stats: Only report drain state in stats if server has SRV_ADMF_DRAIN set MEDIUM: stats: Differentiate between DRAIN and DRAIN (agent) MEDIUM: Lower priority of email alerts for log-health-checks messages MEDIUM: Send email alerts when servers are marked as UP or enter the drain state MEDIUM: Document when email-alerts are sent Sárközi, László (1): MINOR: deinit: fix memory leak Thierry FOURNIER (260): MINOR: http: export the function 'smp_fetch_base32' BUG/MEDIUM: http: tarpit timeout is reset MINOR: sample: add "json" converter BUG/MEDIUM: pattern: don't load more than once a pattern list. MINOR: map/acl/dumpstats: remove the "Done." message BUG/MAJOR: ns: HAProxy segfault if the cli_conn is not from a network connection BUG/MINOR: pattern: error message missing BUG/MEDIUM: pattern: some entries are not deleted with case insensitive match BUG/MINOR: ARG6 and ARG7 don't fit in a 32 bits word MAJOR: poll: only rely on wake_expired_tasks() to compute the wait delay MEDIUM: task: call session analyzers if the task is woken by a message. MEDIUM: protocol: automatically pick the proto associated to the connection. MEDIUM: channel: wake up any request analyzer on response activity MINOR: converters: add a "void *private" argument to converters MINOR: converters: give the session pointer as converter argument MINOR: sample: add private argument to the struct sample_fetch MINOR: global: export function and permits to not resolve DNS names MINOR: sample: add function for browsing samples. MINOR: global: export many symbols. MINOR: includes: fix a lot of missing or useless includes MEDIUM: tcp: add register keyword system. MEDIUM: buffer: make bo_putblk/bo_putstr/bo_putchk return the number of bytes copied. MEDIUM: http: change the code returned by the response processing rule functions MEDIUM: http/tcp: permit to resume http and tcp custom actions MINOR: channel: functions to get data from a buffer without copy MEDIUM: lua: lua integration in the build and init system. MINOR: lua: add ease functions MINOR: lua: add runtime execution context MEDIUM: lua: "com" signals MINOR: lua: add the configuration directive "lua-load" MINOR: lua: core: create "core" class and object MINOR: lua: post initialisation bindings MEDIUM: lua: add coroutine as tasks. MINOR: lua: add sample and args type converters MINOR: lua: txn: create class TXN associated with the transaction. MINOR: lua: add shared context in the lua stack MINOR: lua: txn: import existing sample-fetches in the class TXN MINOR: lua: txn: add lua function in TXN that returns an array of http headers MINOR: lua: register and execute sample-fetches in LUA MINOR: lua: register and execute converters in LUA MINOR: lua: add bindings for tcp and http actions MINOR: lua: core: add sleep functions MEDIUM: lua: socket: add "socket" class for TCP I/O MINOR: lua: core: pattern and acl manipulation MINOR: lua: channel: add "channel" class MINOR: lua: txn: object "txn" provides two objects "channel" MINOR: lua: core: can set the nice of the current task MINOR: lua: core: can yield an execution stack MINOR: lua: txn: add binding for closing the client connection. MEDIUM: lua: Lua initialisation "on demand" BUG/MAJOR: lua: send function fails and return bad bytes MINOR: remove unused declaration. MINOR: lua: remove some #define MINOR: lua: use bitfield and macro in place of integer and enum MINOR: lua: set skeleton for Lua execution expiration MEDIUM: lua: each yielding function returns a wake up time. MINOR: lua: adds "forced yield" flag MEDIUM: lua: interrupt the Lua execution for running other process MEDIUM: lua: change the sleep function core BUG/MEDIUM: lua: the execution timeout is ignored in yield case DOC: lua: Lua configuration documentation MINOR: lua: add the struct session in the lua channel struct BUG/MINOR: lua: set buffer if it is nnot avalaible. BUG/MEDIUM: lua: reset flags before resuming execution BUG/MEDIUM: lua: fix infinite loop about channel BUG/MEDIUM: lua: the Lua process is not waked up after sending data on requests side BUG/MEDIUM: lua: many errors when we try to send data with the channel API MEDIUM: lua: use the Lua-5.3 version of the library BUG/MAJOR: lua: some function are not yieldable, the forced yield causes errors BUG/MEDIUM: lua: can't handle the response bytes BUG/MEDIUM: lua: segfault with buffer_replace2 BUG/MINOR: lua: check buffers before initializing socket BUG/MINOR: log: segfault if there are no proxy reference BUG/MEDIUM: lua: sockets don't have buffer to write data BUG/MEDIUM: lua: cannot connect socket BUG/MINOR: lua: sockets receive behavior doesn't follows the specs BUG/BUILD: lua: The strict Lua 5.3 version check is not done. BUG/MEDIUM: buffer: one byte miss in buffer free space check MEDIUM: lua: make the functions hlua_gethlua() and hlua_sethlua() faster MINOR: replace the Core object by a simple model. MEDIUM: lua: change the objects configuration MEDIUM: lua: create a namespace for the fetches MINOR: converters: add function to browse converters MINOR: lua: wrapper for converters MINOR: lua: replace function (req|get)_channel by a variable MINOR: lua: fetches and converters can return an empty string in place of nil DOC: lua api BUG/MEDIUM: lua: bad argument number in analyser and in error message MEDIUM: lua: automatically converts strings in proxy, tables, server and ip BUG/MINOR: utf8: remove compilator warning MEDIUM: map: uses HAProxy facilities to store default value BUG/MINOR: lua: error in detection of mandatory arguments BUG/MINOR: lua: set current proxy as default value if it is possible BUG/MEDIUM: http: the action set-{method|path|query|uri} doesn't run. BUG/MEDIUM: lua: undetected infinite loop BUG/MAJOR: http: don't read past buffer's end in http_replace_value BUG/MEDIUM: http: the function "(req|res)-replace-value" doesn't respect the HTTP syntax MEDIUM/CLEANUP: http: rewrite and lighten http_transform_header() prototype BUILD: lua: it miss the '-ldl' directive MEDIUM: http: allows 'R' and 'S' in the protocol alphabet MINOR: http: split the function http_action_set_req_line() in two parts MINOR: http: split http_transform_header() function in two parts. MINOR: http: export function inet_set_tos() MINOR: lua: txn: add function set_(loglevel|tos|mark) MINOR: lua: create and register HTTP class DOC: lua: fix some typos MINOR: lua: add log functions BUG/MINOR: lua: Fix SSL initialisation DOC: lua: some fixes MINOR: lua: (req|res)_get_headers return more than one header value MINOR: lua: map system integration in Lua BUG/MEDIUM: http: functions set-{path,query,method,uri} breaks the HTTP parser MINOR: sample: add url_dec converter MEDIUM: sample: fill the struct sample with the session, proxy and stream pointers MEDIUM: sample change the prototype of sample-fetches and converters functions MINOR: sample: fill the struct sample with the options. MEDIUM: sample: change the prototype of sample-fetches functions MINOR: http: split the url_param in two parts CLEANUP: http: bad indentation MINOR: http: add body_param fetch MEDIUM: http: url-encoded parsing function can run throught wrapped buffer DOC: http: req.body_param documentation MINOR: proxy: custom capture declaration MINOR: capture: add two "capture" converters MEDIUM: capture: Allow capture with slot identifier MINOR: http: add array of generic pointers in http_res_rules MEDIUM: capture: adds http-response capture MINOR: common: escape CSV strings MEDIUM: stats: escape some strings in the CSV dump MINOR: tcp: add custom actions that can continue tcp-(request|response) processing MINOR: lua: Lua tcp action are not final action DOC: lua: schematics about lua socket organization BUG/MINOR: debug: display (null) in place of "meth" DOC: mention the "lua action" in documentation MINOR: standard: add function that converts signed int to a string BUG/MINOR: sample: wrong conversion of signed values MEDIUM: sample: Add type any MINOR: debug: add a special converter which display its input sample content. MINOR: tcp: increase the opaque data array MINOR: tcp/http/conf: extends the keyword registration options MINOR: build: fix build dependency MEDIUM: vars: adds support of variables MINOR: vars: adds get and set functions MINOR: lua: Variable access MINOR: samples: add samples which returns constants BUG/MINOR: vars/compil: fix some warnings BUG/MINOR: lua: type error in the arguments wrapper CLEANUP: vars: remove unused struct BUG/MINOR: http/sample: gmtime/localtime can fail MINOR: standard: add 64 bits conversion functions MAJOR: sample: converts uint and sint in 64 bits signed integer MAJOR: arg: converts uint and sint in sint MEDIUM: sample: switch to saturated arithmetic MINOR: vars: returns variable content MEDIUM: vars/sample: operators can use variables as parameter BUG/MEDIUM: lua: timeout error with converters, wrapper and actions. CLEANUP: proto_http: remove useless initialisation CLEANUP: http/tcp actions: remove the scope member BUG/MINOR: proto_tcp: custom action continue is ignored MINOR: proto_tcp: add session in the action prototype MINOR: vars: reduce the code size of some wrappers MINOR: Move http method enum from proto_http to sample MINOR: sample: Add ipv6 to ipv4 and sint to ipv6 casts MINOR: sample/proto_tcp: export "smp_fetch_src" MEDIUM: cli: rely on the map's output type instead of the sample type BUG/MEDIUM: stream: The stream doen't inherit SC from the session BUG/MEDIUM: vars: segfault during the configuration parsing BUG/MEDIUM: stick-tables: refcount error after copying SC for the session to the stream BUG/MEDIUM: lua: bad error processing MINOR: samples: rename a struct from sample_storage to sample_data MINOR: samples: rename some struct member from "smp" to "data" MEDIUM: samples: Use the "struct sample_data" in the "struct sample" MINOR: samples: extract the anonymous union and create the union sample_value MINOR: samples: rename union from "data" to "u" MEDIUM: 51degrees: Adapt the 51Degrees library MINOR: samples: data assignation simplification MEDIUM: pattern/map: Maps can returns various types MINOR: map: The map can return IPv4 and IPv6 MEDIUM: actions: Merge (http|tcp)-(request|reponse) action structs MINOR: actions: Remove the data opaque pointer MINOR: lua: use the hlua_rule type in place of opaque type MINOR: vars: use the vars types as argument in place of opaque type MINOR: proto_http: use an "expr" type in place of generic opaque type. MINOR: proto_http: replace generic opaque types by real used types for the actions on thr request line MINOR: proto_http: replace generic opaque types by real used types in "http_capture" MINOR: proto_http: replace generic opaque types by real used types in "http_capture" by id MEDIUM: track-sc: Move the track-sc configuration storage in the union MEDIUM: capture: Move the capture configuration storage in the union MINOR: actions: add "from" information MINOR: actions: remove the mark indicating the last entry in enum MINOR: actions: Declare all the embedded actions in the same header file MINOR: actions: change actions names MEDIUM: actions: Add standard return code for the action API MEDIUM: actions: Merge (http|tcp)-(request|reponse) keywords structs MINOR: proto_tcp: proto_tcp.h is now useles MINOR: actions: mutualise the action keyword lookup MEDIUM: actions: Normalize the return code of the configuration parsers MINOR: actions: Remove wrappers MAJOR: stick-tables: use sample types in place of dedicated types MEDIUM: stick-tables: use the sample type names MAJOR: stick-tables: remove key storage from the key struct MEDIUM: stick-tables: Add GPT0 in the stick tables MINOR: stick-tables: Add GPT0 access MINOR: stick-tables: Add GPC0 actions BUG/MEDIUM: lua: the lua fucntion Channel:close() causes a segfault DOC: ssl: missing LF MINOR: lua: add core.done() function DOC: fix function name BUG/MINOR: lua: in some case a sample may remain undefined DOC: fix "http_action_set_req_line()" comments MINOR: http: Action for manipulating the returned status code. MEDIUM: lua: turns txn:close into txn:done BUG/MEDIUM: lua: cannot process more Lua hooks after a "done()" function call MEDIUM: actions: remove ACTION_STOP BUG/MEDIUM: lua: outgoing connection was broken since 1.6-dev2 (bis) BUG/MINOR: lua: last log character truncated. CLEANUP: typo: bad indent CLEANUP: actions: missplaced includes MINOR: build: missing header CLEANUP: lua: Merge log functions BUG/MAJOR: lua: potential unexpected aborts() BUG/MINOR: lua: breaks the log message if his size exceed one buffer MINOR: action: add private configuration MINOR: action: add reference to the original keywork matched for the called parser. MINOR: lua: change actions registration MEDIUM: proto_http: smp_prefetch_http initialize txn MINOR: channel: rename function chn_sess to chn_strm CLEANUP: lua: align defines MINOR: http: export http_get_path() function MINOR: http: export the get_reason() function MINOR: http: export function http_msg_analyzer() MINOR: http: split initialization MINOR: lua: reset pointer after use MINOR: lua: identify userdata objects MEDIUM: lua: use the function lua_rawset in place of lua_settable BUG/MAJOR: lua: segfault after the channel data is modified by some Lua action. CLEANUP: lua: use calloc in place of malloc BUG/MEDIUM: lua: longjmp function must be unregistered BUG/MEDIUM: lua: forces a garbage collection BUG/MEDIUM: lua: wakeup task on bad conditions MINOR: standard: avoid DNS resolution from the function str2sa_range() MINOR: lua: extend socket address to support non-IP families MINOR: lua/applet: the cosocket applet should use appctx_wakeup in place of task_wakeup BUG/MEDIUM: lua: socket destroy before reading pending data MEDIUM: lua: change the GC policy OPTIM/MEDIUM: lua: executes the garbage collector only when using cosocket BUG/MEDIUM: lua: don't reset undesired flags in hlua_ctx_resume MINOR: applet: add init function MINOR: applet: add an execution timeout MINOR: stream/applet: add use-service action MINOR: lua: add AppletTCP class and service MINOR: lua: add AppletHTTP class and service DOC: lua: some documentation update MINOR: lua: remove the run flag MEDIUM: lua: change the timeout execution MINOR: lua: rename the tune.lua.applet-timeout DOC: lua: update Lua doc DOC: lua: update doc according with the last Lua changes MINOR: http/tcp: fill the avalaible actions BUG/MEDIUM: lua: direction test failed Thomas Holmes (9): BUILD: add 51degrees options to makefile. MINOR: global: add several 51Degrees members to global MINOR: config: add 51Degrees config parsing. MINOR: init: add 51Degrees initialisation code MEDIUM: sample: add fiftyone_degrees converter. MEDIUM: deinit: add cleanup for 51Degrees to deinit MEDIUM: sample: add trie support to 51Degrees DOC: add 51Degrees notes to configuration.txt. DOC: add build indications for 51Degrees to README. Vincent Bernat (3): BUG/MEDIUM: sample: fix random number upper-bound BUILD: link with libdl if needed for Lua support MINOR: lua: fix a spelling error in some error messages Warren Turkal (1): BUG/MINOR: stats:Fix incorrect printf type. William Lallemand (10): MEDIUM: cfgparse: introduce weak and strong quoting BUG/MEDIUM: cfgparse: incorrect memmove in quotes management MINOR: cfgparse: remove line size limitation MEDIUM: cfgparse: expand environment variables BUG/MINOR: cfgparse: fix typo in 'option httplog' error message BUG/MEDIUM: cfgparse: segfault when userlist is misused CLEANUP: cfgparse: remove reference to 'ruleset' section MEDIUM: cfgparse: check section maximum number of arguments MEDIUM: cfgparse: max arguments check in the global section MEDIUM: cfgparse: check max arguments in the proxies sections Willy Tarreau (598): [DEV] open new 1.6 development branch BUG/MAJOR: session: revert all the crappy client-side timeout changes BUG/MINOR: logs: properly initialize and count log sockets BUG/MEDIUM: http: fetch "base" is not compatible with set-header BUG/MINOR: counters: do not untrack counters before logging BUG/MAJOR: sample: correctly reinitialize sample fetch context before calling sample_process() MINOR: stick-table: make stktable_fetch_key() indicate why it failed BUG/MEDIUM: counters: fix track-sc* to wait on unstable contents BUILD: remove TODO from the spec file and add README MINOR: log: make MAX_SYSLOG_LEN overridable at build time MEDIUM: log: support a user-configurable max log line length DOC: provide an example of how to use ssl_c_sha1 BUILD: checks: external checker needs signal.h BUILD: checks: kill a minor warning on Solaris in external checks BUILD: http: fix isdigit & isspace warnings on Solaris BUG/MINOR: listener: set the listener's fd to -1 after deletion BUG/MEDIUM: unix: failed abstract socket binding is retryable MEDIUM: listener: implement a per-protocol pause() function MEDIUM: listener: support rebinding during resume() BUG/MEDIUM: unix: completely unbind abstract sockets during a pause() DOC: explicitly mention the limits of abstract namespace sockets DOC: minor fix on {sc,src}_kbytes_{in,out} DOC: fix alphabetical sort of converters MEDIUM: stick-table: implement lookup from a sample fetch MEDIUM: stick-table: add new converters to fetch table data MINOR: samples: add two converters for the date format BUG/MAJOR: http: correctly rewind the request body after start of forwarding DOC: remove references to CPU=native in the README DOC: mention that "compression offload" is ignored in defaults section DOC: mention that Squid correctly responds 400 to PPv2 header BUILD: fix dependencies between config and compat.h MINOR: session: export the function 'smp_fetch_sc_stkctr' MEDIUM: stick-table: make it easier to register extra data types BUG/MINOR: http: base32+src should use the big endian version of base32 MINOR: sample: allow IP address to cast to binary MINOR: sample: add new converters to hash input MINOR: sample: allow integers to cast to binary BUILD: report commit ID in git versions as well CLEANUP: session: move the stick counters declarations to stick_table.h MEDIUM: http: add the track-sc* actions to http-request rules BUG/MEDIUM: connection: fix proxy v2 header again! BUG/MAJOR: tcp: fix a possible busy spinning loop in content track-sc* OPTIM/MINOR: proxy: reduce struct proxy by 48 bytes on 64-bit archs MINOR: log: add a new field "%lc" to implement a per-frontend log counter BUG/MEDIUM: http: fix inverted condition in pat_match_meth() BUG/MEDIUM: http: fix improper parsing of HTTP methods for use with ACLs BUG/MINOR: pattern: remove useless allocation of unused trash in pat_parse_reg() BUG/MEDIUM: acl: correctly compute the output type when a converter is used CLEANUP: acl: cleanup some of the redundancy and spaghetti after last fix BUG/CRITICAL: http: don't update msg->sov once data start to leave the buffer MEDIUM: http: enable header manipulation for 101 responses BUG/MEDIUM: config: propagate frontend to backend process binding again. MEDIUM: config: properly propagate process binding between proxies MEDIUM: config: make the frontends automatically bind to the listeners' processes MEDIUM: config: compute the exact bind-process before listener's maxaccept MEDIUM: config: only warn if stats are attached to multi-process bind directives MEDIUM: config: report it when tcp-request rules are misplaced DOC: indicate in the doc that track-sc* can wait if data are missing MINOR: config: detect the case where a tcp-request content rule has no inspect-delay MEDIUM: systemd-wrapper: support multiple executable versions and names BUG/MEDIUM: remove debugging code from systemd-wrapper BUG/MEDIUM: http: adjust close mode when switching to backend BUG/MINOR: config: don't propagate process binding on fatal errors. BUG/MEDIUM: check: rule-less tcp-check must detect connect failures BUG/MINOR: tcp-check: report the correct failed step in the status DOC: indicate that weight zero is reported as DRAIN BUG/MEDIUM: config: avoid skipping disabled proxies BUG/MINOR: config: do not accept more track-sc than configured BUG/MEDIUM: backend: fix URI hash when a query string is present BUG/MEDIUM: http: don't dump debug headers on MSG_ERROR BUG/MAJOR: cli: explicitly call cli_release_handler() upon error BUG/MEDIUM: tcp: fix outgoing polling based on proxy protocol BUILD/MINOR: ssl: de-constify "ciphers" to avoid a warning on openssl-0.9.8 BUG/MEDIUM: tcp: don't use SO_ORIGINAL_DST on non-AF_INET sockets BUG/BUILD: revert accidental change in the makefile from latest SSL fix BUG/MEDIUM: ssl: force a full GC in case of memory shortage MEDIUM: ssl: add support for smaller SSL records MINOR: session: release a few other pools when stopping MINOR: task: release the task pool when stopping BUG/MINOR: config: don't inherit the default balance algorithm in frontends BUG/MAJOR: frontend: initialize capture pointers earlier BUG/MINOR: stats: correctly set the request/response analysers MAJOR: polling: centralize calls to I/O callbacks DOC: fix typo in the body parser documentation for msg.sov BUG/MINOR: peers: the buffer size is global.tune.bufsize, not trash.size MINOR: sample: add a few basic internal fetches (nbproc, proc, stopping) DEBUG: pools: apply poisonning on every allocated pool BUG/MAJOR: sessions: unlink session from list on out of memory BUG/MEDIUM: patterns: previous fix was incomplete BUG/MEDIUM: payload: ensure that a request channel is available BUG/MINOR: tcp-check: don't condition data polling on check type BUG/MEDIUM: tcp-check: don't rely on random memory contents BUG/MEDIUM: tcp-checks: disable quick-ack unless next rule is an expect BUG/MINOR: config: fix typo in condition when propagating process binding BUG/MEDIUM: config: do not propagate processes between stopped processes BUG/MAJOR: stream-int: properly check the memory allocation return BUG/MEDIUM: memory: fix freeing logic in pool_gc2() BUG/MAJOR: namespaces: conn->target is not necessarily a server BUG/MEDIUM: compression: correctly report zlib_mem CLEANUP: lists: remove dead code CLEANUP: memory: remove dead code CLEANUP: memory: replace macros pool_alloc2/pool_free2 with functions MINOR: memory: cut pool allocator in 3 layers MEDIUM: memory: improve pool_refill_alloc() to pass a refill count MINOR: stream-int: retrieve session pointer from stream-int MINOR: buffer: reset a buffer in b_reset() and not channel_init() MEDIUM: buffer: use b_alloc() to allocate and initialize a buffer MINOR: buffer: move buffer initialization after channel initialization MINOR: buffer: only use b_free to release buffers MEDIUM: buffer: always assign a dummy empty buffer to channels MEDIUM: buffer: add a new buf_wanted dummy buffer to report failed allocations MEDIUM: channel: do not report full when buf_empty is present on a channel MINOR: session: group buffer allocations together MINOR: buffer: implement b_alloc_fast() MEDIUM: buffer: implement b_alloc_margin() MEDIUM: session: implement a basic atomic buffer allocator MAJOR: session: implement a wait-queue for sessions who need a buffer MAJOR: session: only allocate buffers when needed MINOR: stats: report a "waiting" flags for sessions MAJOR: session: only wake up as many sessions as available buffers permit MINOR: config: implement global setting tune.buffers.reserve MINOR: config: implement global setting tune.buffers.limit MEDIUM: channel: implement a zero-copy buffer transfer MEDIUM: stream-int: support splicing from applets OPTIM: stream-int: try to send pending spliced data CLEANUP: session: remove session_from_task() DOC: add missing entry for log-format and clarify the text MINOR: logs: add a new per-proxy "log-tag" directive BUG/MEDIUM: http: fix header removal when previous header ends with pure LF MINOR: config: extend the default max hostname length to 64 and beyond BUG/MEDIUM: channel: fix possible integer overflow on reserved size computation BUG/MINOR: channel: compare to_forward with buf->i, not buf->size MINOR: channel: add channel_in_transit() MEDIUM: channel: make buffer_reserved() use channel_in_transit() MEDIUM: channel: make bi_avail() use channel_in_transit() BUG/MEDIUM: channel: don't schedule data in transit for leaving until connected CLEANUP: channel: rename channel_reserved -> channel_is_rewritable MINOR: channel: rename channel_full() to !channel_may_recv() MINOR: channel: rename buffer_reserved() to channel_reserved() MINOR: channel: rename buffer_max_len() to channel_recv_limit() MINOR: channel: rename bi_avail() to channel_recv_max() MINOR: channel: rename bi_erase() to channel_truncate() BUG/MAJOR: log: don't try to emit a log if no logger is set MINOR: tools: add new round_2dig() function to round integers MINOR: global: always export some SSL-specific metrics MINOR: global: report information about the cost of SSL connections MAJOR: init: automatically set maxconn and/or maxsslconn when possible MINOR: http: add a new fetch "query" to extract the request's query string MINOR: hash: add new function hash_crc32 MINOR: samples: provide a "crc32" converter MEDIUM: backend: add the crc32 hash algorithm for load balancing BUG/MINOR: args: add missing entry for ARGT_MAP in arg_type_names BUG/MEDIUM: http: make http-request set-header compute the string before removal MEDIUM: args: use #define to specify the number of bits used by arg types and counts MEDIUM: args: increase arg type to 5 bits and limit arg count to 5 MINOR: args: add type-specific flags for each arg in a list MINOR: args: implement a new arg type for regex : ARGT_REG MEDIUM: regex: add support for passing regex flags to regex_exec_match() MEDIUM: samples: add a regsub converter to perform regex-based transformations BUG/MINOR: sample: fix case sensitivity for the regsub converter MEDIUM: http: implement http-request set-{method,path,query,uri} DOC: fix missing closing brackend on regsub MEDIUM: samples: provide basic arithmetic and bitwise operators MEDIUM: init: continue to enforce SYSTEM_MAXCONN with auto settings if set BUG/MINOR: http: fix incorrect header value offset in replace-hdr/replace-value BUG/MINOR: http: abort request processing on filter failure MEDIUM: tcp: implement tcp-ut bind option to set TCP_USER_TIMEOUT MINOR: ssl/server: add the "no-ssl-reuse" server option BUG/MAJOR: peers: initialize s->buffer_wait when creating the session MINOR: http: add a new function to iterate over each header line MINOR: http: add the new sample fetches req.hdr_names and res.hdr_names MEDIUM: task: always ensure that the run queue is consistent BUILD: Makefile: add -Wdeclaration-after-statement BUILD/CLEANUP: ssl: avoid a warning due to mixed code and declaration BUILD/CLEANUP: config: silent 3 warnings about mixed declarations with code MEDIUM: protocol: use a family array to index the protocol handlers BUILD: lua: cleanup many mixed occurrences declarations & code BUG/MEDIUM: task: fix recently introduced scheduler skew BUG/MINOR: lua: report the correct function name in an error message BUG/MAJOR: http: fix stats regression consecutive to HTTP_RULE_RES_YIELD Revert "BUG/MEDIUM: lua: can't handle the response bytes" MINOR: lua: convert IP addresses to type string CLEANUP: lua: use the same function names in C and Lua REORG/MAJOR: move session's req and resp channels back into the session CLEANUP: remove now unused channel pool REORG/MEDIUM: stream-int: introduce si_ic/si_oc to access channels MEDIUM: stream-int: add a flag indicating which side the SI is on MAJOR: stream-int: only rely on SI_FL_ISBACK to find the requested channel MEDIUM: stream-interface: remove now unused pointers to channels MEDIUM: stream-int: make si_sess() use the stream int's side MEDIUM: stream-int: use si_task() to retrieve the task from the stream int MEDIUM: stream-int: remove any reference to the owner CLEANUP: stream-int: add si_ib/si_ob to dereference the buffers CLEANUP: stream-int: add si_opposite() to find the other stream interface REORG/MEDIUM: channel: only use chn_prod / chn_cons to find stream-interfaces MEDIUM: channel: add a new flag "CF_ISRESP" for the response channel MAJOR: channel: only rely on the new CF_ISRESP flag to find the SI MEDIUM: channel: remove now unused ->prod and ->cons pointers CLEANUP: session: simplify references to chn_{prod,cons}(&s->{req,res}) CLEANUP: session: use local variables to access channels / stream ints CLEANUP: session: don't needlessly pass a pointer to the stream-int CLEANUP: session: don't use si_{ic,oc} when we know the session. CLEANUP: stream-int: limit usage of si_ic/si_oc CLEANUP: lua: limit usage of si_ic/si_oc MINOR: channel: add chn_sess() helper to retrieve session from channel MEDIUM: session: simplify receive buffer allocator to only use the channel MEDIUM: lua: use CF_ISRESP to detect the channel's side CLEANUP: lua: remove the session pointer from hlua_channel CLEANUP: lua: hlua_channel_new() doesn't need the pointer to the session anymore MEDIUM: lua: remove struct hlua_channel MEDIUM: lua: remove hlua_sample_fetch [RELEASE] Released version 1.6-dev1 CLEANUP: stream-int: remove a redundant clearing of the linger_risk flag MINOR: connection: make conn_sock_shutw() actually perform the shutdown() call MINOR: stream-int: use conn_sock_shutw() to shutdown a connection MINOR: connection: perform the call to xprt->shutw() in conn_data_shutw() MEDIUM: stream-int: replace xprt->shutw calls with conn_data_shutw() MINOR: checks: use conn_data_shutw_hard() instead of call via xprt MINOR: connection: implement conn_sock_send() MEDIUM: stream-int: make conn_si_send_proxy() use conn_sock_send() MEDIUM: connection: make conn_drain() perform more controls REORG: connection: move conn_drain() to connection.c and rename it CLEANUP: stream-int: remove inclusion of fd.h that is not used anymore MEDIUM: channel: don't always set CF_WAKE_WRITE on bi_put* CLEANUP: lua: don't use si_ic/si_oc on known stream-ints BUG/MEDIUM: peers: correctly configure the client timeout MINOR: peers: centralize configuration of the peers frontend MINOR: proxy: store the default target into the frontend's configuration MEDIUM: stats: use frontend_accept() as the accept function MEDIUM: peers: use frontend_accept() instead of peer_accept() CLEANUP: listeners: remove unused timeout MEDIUM: listener: store the default target per listener BUILD: fix automatic inclusion of libdl. MEDIUM: lua: implement a simple memory allocator MEDIUM: compression: postpone buffer adjustments after compression MEDIUM: compression: don't send leading zeroes with chunk size BUG/MINOR: compression: consider the expansion factor in init MINOR: http: check the algo name "identity" instead of the function pointer CLEANUP: compression: statify all algo-specific functions MEDIUM: compression: add a distinction between UA- and config- algorithms MEDIUM: compression: add new "raw-deflate" compression algorithm MEDIUM: compression: split deflate_flush() into flush and finish CLEANUP: compression: remove unused reset functions MAJOR: compression: integrate support for libslz BUG/MEDIUM: http: hdr_cnt would not count any header when called without name BUG/MAJOR: http: null-terminate the http actions keywords list CLEANUP: lua: remove the unused hlua_sleep memory pool BUG/MAJOR: lua: use correct object size when initializing a new converter CLEANUP: lua: remove hard-coded sizeof() in object creations and mallocs CLEANUP: lua: fix confusing local variable naming in hlua_txn_new() CLEANUP: hlua: stop using variable name "s" alternately for hlua_txn and hlua_smp CLEANUP: lua: get rid of the last "*ht" for struct hlua_txn. CLEANUP: lua: rename last occurrences of "*s" to "*htxn" for hlua_txn CLEANUP: lua: rename variable "sc" for struct hlua_smp CLEANUP: lua: get rid of the last two "*hs" for hlua_smp REORG/MAJOR: session: rename the "session" entity to "stream" REORG/MEDIUM: stream: rename stream flags from SN_* to SF_* MINOR: session: start to reintroduce struct session MEDIUM: stream: allocate the session when a stream is created MEDIUM: stream: move the listener's pointer to the session MEDIUM: stream: move the frontend's pointer to the session MINOR: session: add a pointer to the session's origin MEDIUM: session: use the pointer to the origin instead of s->si[0].end CLEANUP: sample: remove useless tests in fetch functions for l4 != NULL MEDIUM: http: move header captures from http_txn to struct stream MINOR: http: create a dedicated pool for http_txn MAJOR: http: move http_txn out of struct stream MAJOR: sample: don't pass l7 anymore to sample fetch functions CLEANUP: lua: remove unused hlua_smp->l7 and hlua_txn->l7 MEDIUM: http: remove the now useless http_txn from {req/res} rules CLEANUP: lua: don't pass http_txn anymore to hlua_request_act_wrapper() MAJOR: sample: pass a pointer to the session to each sample fetch function MINOR: stream: provide a few helpers to retrieve frontend, listener and origin CLEANUP: stream: don't set ->target to the incoming connection anymore MINOR: stream: move session initialization before the stream's MINOR: session: store the session's accept date MINOR: session: don't rely on s->logs.logwait in embryonic sessions MINOR: session: implement session_free() and use it everywhere MINOR: session: add stick counters to the struct session REORG: stktable: move the stkctr_* functions from stream to sticktable MEDIUM: streams: support looking up stkctr in the session MEDIUM: session: update the session's stick counters upon session_free() MEDIUM: proto_tcp: track the session's counters in the connection ruleset MAJOR: tcp: make tcp_exec_req_rules() only rely on the session MEDIUM: stream: don't call stream_store_counters() in kill_mini_session() nor session_accept() MEDIUM: stream: move all the session-specific stuff of stream_accept() earlier MAJOR: stream: don't initialize the stream anymore in stream_accept MEDIUM: session: remove the task pointer from the session REORG: session: move the session parts out of stream.c MINOR: stream-int: make appctx_new() take the applet in argument MEDIUM: peers: move the appctx initialization earlier MINOR: session: introduce session_new() MINOR: session: make use of session_new() when creating a new session MINOR: peers: make use of session_new() when creating a new session MEDIUM: peers: initialize the task before the stream MINOR: session: set the CO_FL_CONNECTED flag on the connection once ready CLEANUP: stream.c: do not re-attach the connection to the stream MEDIUM: stream: isolate connection-specific initialization code MEDIUM: stream: also accept appctx as origin in stream_accept_session() MEDIUM: peers: make use of stream_accept_session() MEDIUM: frontend: make ->accept only return +/-1 MEDIUM: stream: return the stream upon accept() MEDIUM: frontend: move some stream initialisation to stream_new() MEDIUM: frontend: move the fd-specific settings to session_accept_fd() MEDIUM: frontend: don't restrict frontend_accept() to connections anymore MEDIUM: frontend: move some remaining stream settings to stream_new() CLEANUP: frontend: remove one useless local variable MEDIUM: stream: don't rely on the session's listener anymore in stream_new() MEDIUM: lua: make use of stream_new() to create an outgoing connection MINOR: lua: minor cleanup in hlua_socket_new() MINOR: lua: no need for setting timeouts / conn_retries in hlua_socket_new() MINOR: peers: no need for setting timeouts / conn_retries in peer_session_create() CLEANUP: stream-int: swap stream-int and appctx declarations CLEANUP: namespaces: fix protection against multiple inclusions MINOR: session: maintain the session count stats in the session, not the stream MEDIUM: session: adjust the connection flags before stream_new() MINOR: stream: pass the pointer to the origin explicitly to stream_new() CLEANUP: poll: move the conditions for waiting out of the poll functions BUG/MEDIUM: listener: don't report an error when resuming unbound listeners BUG/MEDIUM: init: don't limit cpu-map to the first 32 processes only BUG/MAJOR: tcp/http: fix current_rule assignment when restarting over a ruleset BUG/MEDIUM: stream-int: always reset si->ops when si->end is nullified DOC: update the entities diagrams BUG/MEDIUM: http: properly retrieve the front connection MINOR: applet: add a new "owner" pointer in the appctx MEDIUM: applet: make the applet not depend on a stream interface anymore REORG: applet: move the applet definitions out of stream_interface CLEANUP: applet: rename struct si_applet to applet REORG: stream-int: create si_applet_ops dedicated to applets MEDIUM: applet: add basic support for an applet run queue MEDIUM: applet: implement a run queue for active appctx MEDIUM: stream-int: add a new function si_applet_done() MAJOR: applet: now call si_applet_done() instead of si_update() in I/O handlers MAJOR: stream: use a regular ->update for all stream interfaces MEDIUM: dumpstats: don't unregister the applet anymore MEDIUM: applet: centralize the call to si_applet_done() in the I/O handler MAJOR: stream: do not allocate request buffers anymore when the left side is an applet MINOR: stream-int: add two flags to indicate an applet's wishes regarding I/O MEDIUM: applet: make the applets only use si_applet_{cant|want|stop}_{get|put} MEDIUM: stream-int: pause the appctx if the task is woken up BUG/MAJOR: tcp: only call registered actions when they're registered BUG/MEDIUM: peers: fix applet scheduling BUG/MEDIUM: peers: recent applet changes broke peers updates scheduling MINOR: tools: provide an rdtsc() function for time comparisons IMPORT: lru: import simple ebtree-based LRU functions IMPORT: hash: import xxhash-r39 MEDIUM: pattern: add a revision to all pattern expressions MAJOR: pattern: add LRU-based cache on pattern matching BUG/MEDIUM: http: remove content-length from chunked messages DOC: http: update the comments about the rules for determining transfer-length BUG/MEDIUM: http: do not restrict parsing of transfer-encoding to HTTP/1.1 BUG/MEDIUM: http: incorrect transfer-coding in the request is a bad request BUG/MEDIUM: http: remove content-length form responses with bad transfer-encoding MEDIUM: http: restrict the HTTP version token to 1 digit as per RFC7230 MEDIUM: http: disable support for HTTP/0.9 by default MEDIUM: http: add option-ignore-probes to get rid of the floods of 408 BUG/MINOR: config: clear proxy->table.peers.p for disabled proxies MEDIUM: init: don't stop proxies in parent process when exiting MINOR: stick-table: don't attach to peers in stopped state MEDIUM: config: initialize stick-tables after peers, not before MEDIUM: peers: add the ability to disable a peers section MINOR: peers: store the pointer to the signal handler MEDIUM: peers: unregister peers that were never started MEDIUM: config: propagate the table's process list to the peers sections MEDIUM: init: stop any peers section not bound to the correct process MEDIUM: config: validate that peers sections are bound to exactly one process MAJOR: peers: allow peers section to be used with nbproc > 1 DOC: relax the peers restriction to single-process DOC: document option http-ignore-probes DOC: fix the comments about the meaning of msg->sol in HTTP BUG/MEDIUM: http: wait for the exact amount of body bytes in wait_for_request_body BUG/MAJOR: http: prevent risk of reading past end with balance url_param MEDIUM: stream: move HTTP request body analyser before process_common MEDIUM: http: add a new option http-buffer-request MEDIUM: http: provide 3 fetches for the body DOC: update the doc on the proxy protocol BUILD: pattern: fix build warnings introduced in the LRU cache BUG/MEDIUM: stats: properly initialize the scope before dumping stats CLEANUP: config: fix misleading information in error message. MINOR: config: report the number of processes using a peers section in the error case BUG/MEDIUM: config: properly compute the default number of processes for a proxy MEDIUM: http: add new "capture" action for http-request BUG/MEDIUM: http: fix the http-request capture parser BUG/MEDIUM: http: don't forward client shutdown without NOLINGER except for tunnels BUILD/MINOR: ssl: fix build failure introduced by recent patch BUG/MAJOR: check: fix breakage of inverted tcp-check rules CLEANUP: checks: fix double usage of cur / current_step in tcp-checks BUG/MEDIUM: checks: do not dereference head of a tcp-check at the end CLEANUP: checks: simplify the loop processing of tcp-checks BUG/MAJOR: checks: always check for end of list before proceeding BUG/MEDIUM: checks: do not dereference a list as a tcpcheck struct BUG/MAJOR: checks: break infinite loops when tcp-checks starts with comment MEDIUM: http: make url_param iterate over multiple occurrences BUG/MEDIUM: peers: apply a random reconnection timeout MEDIUM: config: reject invalid config with name duplicates MEDIUM: config: reject conflicts in table names CLEANUP: proxy: make the proxy lookup functions more user-friendly MINOR: proxy: simply ignore duplicates in proxy name lookups MINOR: config: don't open-code proxy name lookups MEDIUM: config: clarify the conflicting modes detection for backend rules CLEANUP: proxy: remove now unused function findproxy_mode() MEDIUM: stick-table: remove the now duplicate find_stktable() function MAJOR: config: remove the deprecated reqsetbe / reqisetbe actions MINOR: proxy: add a new function proxy_find_by_id() MINOR: proxy: add a flag to memorize that the proxy's ID was forced MEDIUM: proxy: add a new proxy_find_best_match() function CLEANUP: http: explicitly reference request in http_apply_redirect_rules() MINOR: http: prepare support for parsing redirect actions on responses MEDIUM: http: implement http-response redirect rules MEDIUM: http: no need to close the request on redirect if data was parsed BUG/MEDIUM: http: fix body processing for the stats applet BUG/MINOR: da: fix log-level comparison to emove annoying warning CLEANUP: global: remove one ifdef USE_DEVICEATLAS CLEANUP: da: move the converter registration to da.c CLEANUP: da: register the config keywords in da.c CLEANUP: adjust the envelope name in da.h to reflect the file name CLEANUP: da: remove ifdef USE_DEVICEATLAS from da.c BUILD: make 51D easier to build by defaulting to 51DEGREES_SRC BUILD: fix build warning when not using 51degrees BUILD: make DeviceAtlas easier to build by defaulting to DEVICEATLAS_SRC BUILD: ssl: fix recent build breakage on older SSL libs [RELEASE] Released version 1.6-dev2 BUG/MINOR: ssl: fix smp_fetch_ssl_fc_session_id BUILD/MINOR: lua: fix a harmless build warning BUILD/MINOR: stats: fix build warning due to condition always true BUG/MAJOR: lru: fix unconditional call to free due to unexpected semi-colon BUG/MEDIUM: logs: fix improper systematic use of quotes with a few tags BUILD/MINOR: lua: ensure that hlua_ctx_destroy is properly defined BUG/MEDIUM: lru: fix possible memory leak when ->free() is used MINOR: vars: make the accounting not depend on the stream MEDIUM: vars: move the session variables to the session, not the stream BUG/MEDIUM: vars: do not freeze the connection when the expression cannot be fetched BUG/MAJOR: buffers: make the buffer_slow_realign() function respect output data BUG/MAJOR: tcp: tcp rulesets were still broken MINOR: stats: improve compression stats reporting MINOR: ssl: make self-generated certs also work with raw IPv6 addresses CLEANUP: ssl: make ssl_sock_generated_cert_serial() take a const CLEANUP: ssl: make ssl_sock_generate_certificate() use ssl_sock_generated_cert_serial() BUG/MINOR: log: missing some ARGC_* entries in fmt_directives() MINOR: args: add new context for servers MINOR: stream: maintain consistence between channel_forward and HTTP forward MINOR: ssl: provide ia function to set the SNI extension on a connection MEDIUM: ssl: add sni support on the server lines CLEANUP: stream: remove a useless call to si_detach() CLEANUP: stream-int: fix a few outdated comments about stream_int_register_handler() CLEANUP: stream-int: remove stream_int_unregister_handler() and si_detach() MINOR: stream-int: only use si_release_endpoint() to release a connection MINOR: standard: provide htonll() and ntohll() CLEANUP/MINOR: dns: dns_str_to_dn_label() only needs a const char BUG/MAJOR: dns: fix the length of the string to be copied [RELEASE] Released version 1.6-dev3 CLEANUP: backend: factor out objt_server() in connect_server() MEDIUM: backend: don't call si_alloc_conn() when we reuse a valid connection MEDIUM: stream-int: simplify si_alloc_conn() MINOR: stream-int: add new function si_detach_endpoint() MINOR: server: add a list of private idle connections MINOR: connection: add a new list member in the connection struct MEDIUM: stream-int: queue idle connections at the server MINOR: stream-int: make si_idle_conn() only accept valid connections MINOR: server: add a list of already used idle connections MINOR: connection: add a new flag CO_FL_PRIVATE MINOR: config: add new setting "http-reuse" MAJOR: backend: initial work towards connection reuse MAJOR: backend: improve the connection reuse mechanism MEDIUM: backend: implement "http-reuse safe" MINOR: server: add a list of safe, already reused idle connections MEDIUM: backend: add the "http-reuse aggressive" strategy DOC: document the new http-reuse directive DOC: internals: document next steps for HTTP connection reuse DOC: mention that %ms is left-padded with zeroes. MINOR: init: indicate to check 'bind' lines when no listeners were found. MAJOR: http: remove references to appsession CLEANUP: config: remove appsession initialization CLEANUP: appsession: remove appsession.c and sessionhash.c CLEANUP: tests: remove sessionhash_test.c and test-cookie-appsess.cfg CLEANUP: proxy: remove last references to appsession CLEANUP: appsession: remove the last include files DOC: remove documentation about appsession CLEANUP: .gitignore: ignore more test files CLEANUP: .gitignore: finally ignore everything but what is known. MEDIUM: config: emit a warning on a frontend without listener DOC: add doc/internals/entities-v2.txt DOC: add doc/linux-syn-cookies.txt DOC: add design thoughts on HTTP/2 DOC: add some thoughts on connection sharing for HTTP/2 DOC: add design thoughts on dynamic buffer allocation BUG/MEDIUM: counters: ensure that src_{inc,clr}_gpc0 creates a missing entry DOC: add new file intro.txt MAJOR: tproxy: remove support for cttproxy BUG/MEDIUM: lua: outgoing connection was broken since 1.6-dev2 DOC: lua: replace txn:close with txn:done in lua-api DOC: intro: minor updates and fixes DOC: intro: fix too long line. DOC: fix example of http-request using ssl_fc_session_id BUG/MEDIUM: lua: txn:done() still causes a segfault in TCP mode CLEANUP: lua: fix some indent issues BUG/MEDIUM: lua: fix a segfault in txn:done() if called twice DOC: lua: mention than txn:close was renamed txn:done. [RELEASE] Released version 1.6-dev4 BUG/MAJOR: http: don't manipulate the server connection if it's killed BUG/MINOR: http: remove stupid HTTP_METH_NONE entry BUG/MAJOR: http: don't call http_send_name_header() after an error MEDIUM: tools: make str2sa_range() optionally return the FQDN BUG/MINOR: tools: make str2sa_range() report unresolvable addresses BUG/MEDIUM: dns: use the correct server hostname when resolving [RELEASE] Released version 1.6-dev5 DOC: add the documentation about internal circular lists DOC: add a CONTRIBUTING file DOC: add a MAINTAINERS file BUG/MAJOR: peers: fix a crash when stopping peers on unbound processes DOC: update coding-style to reference checkpatch.pl BUG/MEDIUM: stick-tables: fix double-decrement of tracked entries BUG/MINOR: args: add name for ARGT_VAR DOC: add more entries to MAINTAINERS DOC: add more entries to MAINTAINERS CLEANUP: stream-int: remove obsolete function si_applet_call() BUG/MAJOR: cli: do not dereference strm_li()->proto->name BUG/MEDIUM: http: do not dereference strm_li(stream) BUG/MEDIUM: proxy: do not dereference strm_li(stream) BUG/MEDIUM: stream: do not dereference strm_li(stream) MINOR: stream-int: use si_release_endpoint() to close idle conns BUG/MEDIUM: payload: make req.payload and payload_lv aware of dynamic buffers BUG/MEDIUM: acl: always accept match "found" MINOR: applet: rename applet_runq to applet_active_queue BUG/MAJOR: applet: use a separate run queue to maintain list integrity MEDIUM: stream-int: split stream_int_update_conn() into si- and conn-specific parts MINOR: stream-int: implement a new stream_int_update() function MEDIUM: stream-int: factor out the stream update functions MEDIUM: stream-int: call stream_int_update() from si_update() MINOR: stream-int: export stream_int_update_* MINOR: stream-int: move the applet_pause call out of the stream updates MEDIUM: stream-int: clean up the conditions to enable reading in si_conn_wake_cb MINOR: stream-int: implement the stream_int_notify() function MEDIUM: stream-int: use the same stream notification function for applets and conns MEDIUM: stream-int: completely remove stream_int_update_embedded() MINOR: stream-int: rename si_applet_done() to si_applet_wake_cb() BUG/MEDIUM: applet: fix reporting of broken write situation BUG/MINOR: stats: do not call cli_release_handler 3 times BUG/MEDIUM: cli: properly handle closed output MINOR: cli: do not call the release handler on internal error. BUG/MEDIUM: stream-int: avoid double-call to applet->release DEBUG: add p_malloc() to return a poisonned memory area CLEANUP: lua: remove unneeded memset(0) after calloc() MINOR: lua: use the proper applet wakeup mechanism BUG/MEDIUM: lua: better fix for the protocol check BUG/MEDIUM: lua: properly set the target on the connection MEDIUM: actions: pass a new "flags" argument to custom actions MEDIUM: actions: add new flag ACT_FLAG_FINAL to notify about last call MEDIUM: http: pass ACT_FLAG_FINAL to custom actions MEDIUM: lua: only allow actions to yield if not in a final call DOC: clarify how to make use of abstract sockets in socat CLEANUP: config: make the errorloc/errorfile messages less confusing MEDIUM: action: add a new flag ACT_FLAG_FIRST BUG/MINOR: config: check that tune.bufsize is always positive MEDIUM: config: set tune.maxrewrite to 1024 by default DOC: add David Carlier as maintainer of da.c DOC: fix some broken unexpected unicode chars in the Lua doc. BUG/MEDIUM: proxy: ignore stopped peers BUG/MEDIUM: proxy: do not wake stopped proxies' tasks during soft_stop() MEDIUM: init: completely deallocate unused peers BUG/MEDIUM: tcp: fix inverted condition to call custom actions DOC: remove outdated actions lists on tcp-request/response MEDIUM: tcp: add new tcp action "silent-drop" DOC: add URLs to optional libraries in the README [RELEASE] Released version 1.6-dev6 DOC: reorder misplaced res.ssl_hello_type in the doc BUG/MINOR: tcp: make silent-drop always force a TCP reset CLEANUP: tcp: silent-drop: only drain the connection when quick-ack is disabled BUILD: tcp: use IPPROTO_IP when SOL_IP is not available BUILD: server: fix build warnings introduced by load-server-state BUG/MEDIUM: server: fix misuse of format string in load-server-state's warnings [RELEASE] Released version 1.6-dev7 CLEANUP: cli: ensure we can never double-free error messages BUG/MEDIUM: lua: force server-close mode on Lua services MEDIUM: init: support more command line arguments after pid list MEDIUM: init: support a list of files on the command line MINOR: debug: enable memory poisonning to use byte 0 BUILD: ssl: fix build error introduced by recent commit BUG/MINOR: config: make the stats socket pass the correct proxy to the parsers MEDIUM: server: implement TCP_USER_TIMEOUT on the server DOC: mention the "namespace" options for bind and server lines DOC: add the "management" documentation DOC: move the stats socket documentation from config to management MINOR: examples: update haproxy.spec to mention new docs DOC: mention management.txt in README DOC: remove haproxy-{en,fr}.txt BUILD: properly report when USE_ZLIB and USE_SLZ are used together MINOR: init: report use of libslz instead of "no compression" CLEANUP: examples: remove some obsolete and confusing files CLEANUP: examples: remove obsolete configuration file samples CLEANUP: examples: fix the example file content-sw-sample.cfg CLEANUP: examples: update sample file option-http_proxy.cfg CLEANUP: examples: update sample file ssl.cfg CLEANUP: tests: move a test file from examples/ to tests/ CLEANUP: examples: shut up warnings in transparent proxy example CLEANUP: tests: removed completely obsolete test files DOC: update ROADMAP to remove what was done in 1.6 [RELEASE] Released version 1.6.0 peter cai (1): BUG/MEDIUM: pattern: fixup use_after_free in the pat_ref_delete_by_id -- Willy