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