Hi,
HAProxy 1.7.0 was released on 2016/11/25. It added 107 new commits
after version 1.7-dev6. Most of them were late minor bug fixes and code
cleanups. Over the last two weeks we finally managed to clean a lot of
historical mess, just by splitting some huge code parts into several
files, or moving them into the appropriate file. It's better done
before than after a release since it will make backports easier for the
maintenance branch. To be honnest there's nothing outstanding compared
to 1.7-dev6 so I won't comment on these very latest changes.
Haproxy 1.7 now is what I would have liked 1.6 to be, and is what I
consider the cleanest version we've ever produced. When 1.6 was released
one year ago, I predicted that we'd face one year worth of bug fixes due
to the important changes that were brought to the connection management,
and it indeed took almost one year to get rid of all of them. Now we
mostly focused on fixes, cleanups and modularity, but not on earth-shaking
changes.
It's interesting to note that among the 706 commits that were produced
between 1.6.0 and 1.7.0, no less than 207 were bug fixes (roughly 1/3),
around 70 were build fixes and code reorganizations, and around 60 were
doc updates, so 1.7 was where the fixes for 1.6 were developped, and that
brings it its current level of maturity. We have almost not observed any
1.7-specific regression during its development for now which is a very
good sign of the code becoming more modular and much less tricky than
what it used to be. We had to emit 1.6.1 only one week after 1.6.0 due
to a major bug, I bet we'll be able to wait longer before requiring such
an update, time will tell.
Despite this it still brings quite some significant improvements over
1.6 :
- significant improvements of the CLI : it is now possible to easily
register new commands without causing some inter-dependencies between
the CLI code and the functional code, so we could already improve a
large number of commands with better help and extra arguments. In
addition to this, the Lua code can also register CLI commands, pushing
the limits as far as your imagination goes.
- typed statistics : will make it easier to aggregate statistics over
multiple processes. Additionally, all the fields that used to be
available in HTML are now also exported in the CSV output, such as
the server's address and port, cookie, average response times, etc.
- SPOE (stream processing offload engine) : ability to delegate some
slow, unreliable or dangerous processing to external processes,
ensuring it will be much less necessary to touch the core parts to
add new features, and that some parts could possibly work across
multiple versions.
- filters : these are a new type of internal hooks to many events and
around most analysers in order to plug code that can manipulate data
and headers. The compression was moved to a filter, and it will be
easy to write new code using filters. SPOE was built entirely as a
filter.
- log-format : the parser now honnors error processing. It's been a
huge source of complaints over the last few years where some log
fields were empty because improperly typed in the config, but the
much more modular architecture now made this possible.
- support of directories for config files : now if the argument to -f
is a directory, all files found there are loaded in alphabetical
order. Additionally, files can be specified after "--" without having
to repeat "-f".
- config : it is now possible to set/unset/preset environment variables
directly in the global section, and even to consult them on the CLI.
- init-addr : it is now possible to decide in which order the FQDN
should be resolved on "server" lines, and even accept to start with
no address, waiting for a run-time resolution.
- server update on the CLI : the CLI makes it possible to change a
server's address, port, maxconn, check address and port so that it
is not required anymore to reload haproxy just to update an address.
In conjunction with init-addr, it even allows to pre-populate some
server pools that are filled at run time.
- state change via the DNS : a valid DNS resolution can now start a
server, and repeated failures can stop it (configurable). This is
another step in the direction of a more dynamic configuration.
- agent-check : an agent can now change the server's maxconn setting. A
server may now take its own load into consideration when deciding what
its connection limit should be.
- support for OpenSSL 1.1.0 : this makes this new version future-proof
given that 1.1.0 is about to ship in some future distros. Compatibility
with older versions was validated on 0.9.8, 1.0.1 and 1.0.2.
- support of multi-certs : different certificates for a same domain so
that the best one can be picked according to browser support. The main
use is to be able to deliver ECDSA certificates to clients supporting
them, without breaking compatibility with older clients.
- updates to support OpenBSD 5.7. This brings accept4() and a few other
features I've totally forgotten.
- WURFL : this is another device detection engine, made by Scientiamobile.
Now we have 3 of them (DeviceAtlas and 51Degrees being the two others),
users will have a broad choice to compare based on their needs. Nothing
technically prevents them from being built in together.
- 51Degrees moved to a new API (v3) which is supposedly faster and cleaner,
it's different from v2 used in haproxy 1.6 so the lib has to be rebuilt
but the databases remain compatible.
- performance improvements : version 1.7 is about 10% faster than 1.6
on large requests or responses thanks to some speed ups in the HTTP
message parser.
- peers v2.1 : a small, backwards compatible, upgrade to the peers
protocol has consisted in transmitting expiration dates so that old
entries are not constantly refreshed upon reloads. This is important
for people who reload often.
- stick-tables : now support automatic type casting on the input sample.
This avoids a useless conversion to a string which can possibly lose
some information sometimes and which is not efficient. Now the tables
use the native sample type. It's also faster to perform lookups.
- hash-balance-factor : the consistent hash can now improve the balancing
to avoid a single node being overloaded. It progressively spreads the
excess load to adjacent nodes when the load difference is above a
configurable threshold. Very useful for large cache farms.
- "tcp-request session" rules : it was often painful not to be able to
track an IP address transferred via the proxy protocol without having
to pollute the "tcp-request content" rules which are called for each
request in case of HTTP keep-alive. This is now possible. It will also
be possible to take early decisions based on SSL layer information.
- a number of new actions, like "set-src", "set-dst", etc... which make
it possible to assign the source and destination addresses to what was
found in a HTTP header for example. This can also be used to build an
explicit (non-resolving) proxy when running in transparent mode.
- on Linux kernels 4.2 and above, IP_BIND_ADDRESS_NO_PORT is used on
outgoing connections so that the kernel knows it can reuse the same
source port. This is useful when dealing with hundreds of thousands
of concurrent connections.
- SO_REUSEPORT is now configurable and can be disabled. Some people
indeed prefer a second bind to fail instead of having two processes.
- a new completely rewritten and much safer DNS response parser. The
original one was fragile and required an extreme care. The new one
fills structures that are exploited by the requester, making it less
likely to do something wrong.
- "%Tq" decomposition : the "%Tq" timer in the logs has became useless
with keep-alive, showing large request times which were in fact idle
time. And with browsers' pre-connect, it has become even worse given
that even the first connection could appear long. Now we have extra
fields to separately report the idle and SSL handshake times so that
logs become accurate again.
- tcp: we now have many new sample fetch functions reporting tcp-level
information on the client-to-haproxy connection. This makes it possible
for example to collect statistics, or to decide to perform a redirect
to another site or to deliver compressed objects when the RTT is too
high.
- http-response track-sc : it's possible to track some information coming
from the response. One example consists in collecting statistics on
content-length or HTTP statuses. Another example is a counter to see if
a client-provided cookie was already seen on the server side.
- accept-netscaler-cip : it's an alternative to the PROXY protocol,
implemented in Citrix's NetScaler load balancers. Thanks to this, both
HAProxy and NetScaler can cooperate.
- Lua: a lot of additions, various classes to access many internal
objects like listeners, servers, proxies and I don't know what else.
- mailers : various improvements such as timeouts and better SMTP protocol
compliance.
- maps : support a new type of maps consisting in regex with replacement
values (a-la "sed").
And that's about all. This work was contributed by 62 different persons,
out of which about 2/3 were new contributors. It's the same progression
as we had in 1.6. Do not hesitate to say "thanks" to them when you meet
them, and particularly if they contributed a feature which made your life
easier. Please see the full log at the bottom of this e-mail for more
information.
Now enough typing, I still have quite a few instances to upgrade, and the
web site to update :-)
Please find the usual URLs below :
Site index : http://www.haproxy.org/
Discourse : http://discourse.haproxy.org/
Sources : http://www.haproxy.org/download/1.7/src/
Git repository : http://git.haproxy.org/git/haproxy-1.7.git/
Git Web browsing : http://git.haproxy.org/?p=haproxy-1.7.git
Changelog : http://www.haproxy.org/download/1.7/src/CHANGELOG
Cyril's HTML doc : http://cbonte.github.io/haproxy-dconv/
Willy
---
Complete changelog since 1.7-dev6 :
- SCRIPTS: make publish-release also copy the new SPOE doc
- BUILD: http: include types/sample.h in proto_http.h
- BUILD: debug/flags: remove test for SF_COMP_READY
- CONTRIB: debug/flags: add check for SF_ERR_CHK_PORT
- MINOR: lua: add function which return true if the channel is full.
- MINOR: lua: add ip addresses and network manipulation function
- CONTRIB: tcploop: scriptable TCP I/O for debugging purposes
- CONTRIB: tcploop: implement fork()
- CONTRIB: tcploop: implement logging when called with -v
- CONTRIB: tcploop: update the usage output
- CONTRIB: tcploop: support sending plain strings
- CONTRIB: tcploop: don't report failed send() or recv()
- CONTRIB: tcploop: add basic loops via a jump instruction
- BUG/MEDIUM: channel: bad unlikely macro
- CLEANUP: lua: move comment
- CLEANUP: lua: control executed twice
- BUG/MEDIUM: ssl: Store certificate filename in a variable
- BUG/MINOR: ssl: Print correct filename when error occurs reading OCSP
- CLEANUP: ssl: Remove goto after return dead code
- CLEANUP: ssl: Fix bind keywords name in comments
- DOC: ssl: Use correct wording for ca-sign-pass
- CLEANUP: lua: avoid directly calling getsockname/getpeername()
- BUG/MINOR: stick-table: handle out-of-memory condition gracefully
- MINOR: cli: add private pointer and release function
- MEDIUM: lua: Add cli handler for Lua
- BUG/MEDIUM: connection: check the control layer before stopping polling
- DEBUG: connection: mark the closed FDs with a value that is easier to detect
- BUG/MEDIUM: stick-table: fix regression caused by recent fix for
out-of-memory
- BUG/MINOR: cli: properly decrement ref count on tables during failed dumps
- BUG/MEDIUM: lua: In some case, the return of sample-fetche is ignored
- MINOR: filters: Add check_timeouts callback to handle timers expiration on
streams
- MINOR: spoe: Add 'timeout processing' option to limit time to process an
event
- MINOR: spoe: Remove useless 'timeout ack' option
- MINOR: spoe: Add 'option continue-on-error' statement in spoe-agent section
- MINOR: spoe: Add "maxconnrate" and "maxerrrate" statements
- MINOR: spoe: Add "option set-on-error" statement
- MINOR: stats: correct documentation of process ID for typed output
- BUILD: contrib: fix ip6range build on Centos 7
- BUILD: fix build on Solaris 10/11
- BUG/MINOR: cli: fix pointer size when reporting data/transport layer name
- BUG/MINOR: cli: dequeue from the proxy when changing a maxconn
- BUG/MINOR: cli: wake up the CLI's task after a timeout update
- MINOR: connection: add a few functions to report the data and xprt layers'
names
- MINOR: connection: add names for transport and data layers
- REORG: cli: split dumpstats.c in src/cli.c and src/stats.c
- REORG: cli: split dumpstats.h in stats.h and cli.h
- REORG: cli: move ssl CLI functions to ssl_sock.c
- REORG: cli: move map and acl code to map.c
- REORG: cli: move show stat resolvers to dns.c
- MINOR: cli: create new function cli_has_level() to validate permissions
- MINOR: server: create new function cli_find_server() to find a server
- MINOR: proxy: create new function cli_find_frontend() to find a frontend
- REORG: cli: move 'set server' to server.c
- REORG: cli: move 'show pools' to memory.c
- REORG: cli: move 'show servers' to proxy.c
- REORG: cli: move 'show sess' to stream.c
- REORG: cli: move 'show backend' to proxy.c
- REORG: cli: move get/set weight to server.c
- REORG: cli: move "show stat" to stats.c
- REORG: cli: move "show info" to stats.c
- REORG: cli: move dump_text(), dump_text_line(), and dump_binary() to
standard.c
- REORG: cli: move table dump/clear/set to stick_table.c
- REORG: cli: move "show errors" out of cli.c
- REORG: cli: make "show env" also use the generic keyword registration
- REORG: cli: move "set timeout" to its own handler
- REORG: cli: move "clear counters" to stats.c
- REORG: cli: move "set maxconn global" to its own handler
- REORG: cli: move "set maxconn server" to server.c
- REORG: cli: move "set maxconn frontend" to proxy.c
- REORG: cli: move "shutdown sessions server" to stream.c
- REORG: cli: move "shutdown session" to stream.c
- REORG: cli: move "shutdown frontend" to proxy.c
- REORG: cli: move "{enable|disable} frontend" to proxy.c
- REORG: cli: move "{enable|disable} server" to server.c
- REORG: cli: move "{enable|disable} health" to server.c
- REORG: cli: move "{enable|disable} agent" to server.c
- REORG: cli: move the "set rate-limit" functions to their own parser
- CLEANUP: cli: rename STAT_CLI_* to CLI_ST_*
- CLEANUP: cli: simplify the request parser a little bit
- CLEANUP: cli: remove assignments to st0 and st2 in keyword parsers
- BUILD: server: remove a build warning introduced by latest series
- BUG/MINOR: log-format: uncatched memory allocation functions
- CLEANUP: log-format: useless file and line in json converter
- CLEANUP/MINOR: log-format: unexport functions parse_logformat_var_args()
and parse_logformat_var()
- CLEANUP: log-format: fix return code of the function parse_logformat_var()
- CLEANUP: log-format: fix return code of function parse_logformat_var_args()
- CLEANUP: log-format: remove unused arguments
- MEDIUM: log-format: strict parsing and enable fail
- MEDIUM: log-format/conf: take into account the parse_logformat_string()
return code
- BUILD: ssl: make the SSL layer build again with openssl 0.9.8
- BUILD: vars: remove a build warning on vars.c
- MINOR: lua: add utility function for check boolean argument
- MINOR: lua: Add tokenize function.
- BUG/MINOR: conf: calloc untested
- MINOR: http/conf: store the use_backend configuration file and line for logs
- MEDIUM: log-format: Use standard HAProxy log system to report errors
- CLEANUP: sample: report "converter" instead of "conv method" in error
messages
- BUG: spoe: Fix parsing of SPOE actions in ACK frames
- MINOR: cli: make "show stat" support a proxy name
- MINOR: cli: make "show errors" support a proxy name
- MINOR: cli: make "show errors" capable of dumping only request or response
- BUG/MINOR: freq-ctr: make swrate_add() support larger values
- CLEANUP: counters: move from 3 types to 2 types
- CLEANUP: cfgparse: cascade the warnif_misplaced_* rules
- REORG: tcp-rules: move tcp rules processing to their own file
- REORG: stkctr: move all the stick counters processing to stick-tables.c
- DOC: update the roadmap file with the latest changes
And full changelog since 1.6.0 :
Andreas Seltenreich (5):
CLEANUP: stats: Avoid computation with uninitialized bits.
CLEANUP: pattern: Ignore unknown samples in pat_match_ip().
CLEANUP: map: Avoid memory leak in out-of-memory condition.
BUG/MINOR: standard: Avoid free of non-allocated pointer
BUG/MINOR: pattern: Avoid memory leak on out-of-memory condition
Andrew Hayworth (2):
MEDIUM: dns: Don't use the ANY query type
MINOR: cli: ability to set per-server maxconn
Andrew Rodland (5):
MINOR: proxy: add 'served' field to proxy, equal to total of all servers'
MINOR: backend: add hash-balance-factor option for hash-type consistent
MINOR: server: compute a "cumulative weight" to allow chash balancing to
hit its target
MEDIUM: server: Implement bounded-load hash algorithm
DOC: fix the entry for hash-balance-factor config option
Baptiste Assmann (53):
BUG/MINOR: dns: parsing error of some DNS response
BUG/MAJOR: dns: first DNS response packet not matching queried hostname
may lead to a loop
BUG/MINOR: dns: unable to parse CNAMEs response
DOC: typo on capture.res.hdr and capture.req.hdr
BUG/MINOR: dns: check for duplicate nameserver id in a resolvers section
was missing
BUG/MINOR: http rule: http capture 'id' rule points to a non existing id
DOC: relation between timeout http-request and option http-buffer-request
BUG/MINOR: tcpcheck: conf parsing error when no port configured on server
and last rule is a CONNECT with no port
BUG/MINOR: tcpcheck: conf parsing error when no port configured on server
and first rule(s) is (are) COMMENT
DOC: mailers: typo in 'hostname' description
DOC: compression: missing mention of libslz for compression algorithm
MINOR: lru: new function to delete <nb> least recently used keys
MINOR: server state: missing LF (\n) on error message printed when
parsing server state file
BUG/MEDIUM: dns: no DNS resolution happens if no ports provided to the
nameserver
BUG/MAJOR: servers state: server port is erased when dns resolution is
enabled on a server
MINOR: cfgparse: warn when uid parameter is not a number
MINOR: cfgparse: warn when gid parameter is not a number
DOC: "addr" parameter applies to both health and agent checks
DOC: timeout client: pointers to timeout http-request
DOC: typo on stick-store response
DOC: stick-table: amend paragraph blaming the loss of table upon reload
DOC: typo: ACL subdir match
DOC: typo: maxconn paragraph is wrong due to a wrong buffer size
DOC: regsub: parser limitation about the inability to use closing square
brackets
DOC: typo: req.uri is now replaced by capture.req.uri
BUG/MINOR: dns: inapropriate way out after a resolution timeout
BUG/MINOR: dns: trigger a DNS query type change on resolution timeout
BUG/MINOR: DNS: resolution structure change
BUILD: make proto_tcp.c compatible with musl library
MINOR: standard.c: ipcmp() function to compare 2 IP addresses stored in 2
struct sockaddr_storage
MINOR: standard.c: ipcpy() function to copy an IP address from a struct
sockaddr_storage into an other one
MAJOR: listen section: don't use first bind port anymore when no server
ports are provided
MINOR: cli: change a server health check port through the stats socket
MAJOR: check: find out which port to use for health check at run time
MINOR: server: introduction of 3 new server flags
MINOR: new update_server_addr_port() function to change both server's
ADDR and service PORT
MINOR: cli: ability to change a server's port
CLEANUP/MINOR dns: comment do not follow up code update
MINOR: chunk: new strncat function
MINOR: dns: wrong DNS_MAX_UDP_MESSAGE value
MINOR: dns: new MAX values
MINOR: dns: new macro to compute DNS header size
MINOR: dns: new DNS structures to store received packets
MEDIUM: dns: new DNS response parser
MINOR: dns: query type change when last record is a CNAME
MINOR: dns: proper domain name validation when receiving DNS response
MINOR: dns: comments in types/dns.h about structures endianness
MINOR: init: move apply_server_state in haproxy.c before MODE_CHECK
MAJOR: server: postpone address resolution
MINOR: new srv_admin flag: SRV_ADMF_RMAINT
MINOR: dns: implement extra 'hold' timers.
MAJOR: dns: runtime resolution can change server admin state
MEDIUM: server: add a new init-addr server line setting
Ben Cabot (1):
BUG/MEDIUM: config: Adding validation to stick-table expire value.
Ben Shillito (8):
DOC: Edited 51Degrees section of README/
DOC: add Ben Shillito as the maintainer of 51d
BUILD/MAJOR:updated 51d Trie implementation to incorperate latest update
to 51Degrees.c
BUG/MINOR: 51d: Ensures a unique domain for each configuration
BUG/MINOR: 51d: Aligns Pattern cache implementation with HAProxy best
practices.
BUG/MINOR: 51d: Releases workset back to pool.
BUG/MINOR: 51d: Aligned const pointers to changes in 51Degrees.
CLEANUP: 51d: Aligned if statements with HAProxy best practices and
removed casts from malloc.
Benoit GARNIER (2):
BUG/MINOR: log: GMT offset not updated when entering/leaving DST
BUG/MINOR: log: Don't use strftime() which can clobber timezone if
chrooted
Bertrand Jacquin (8):
MINOR: listener: add the "accept-netscaler-cip" option to the "bind"
keyword
MINOR: tcp: add "tcp-request connection expect-netscaler-cip layer4"
MINOR: build: Allow linking to device-atlas library file
BUG/MEDIUM: ssl: Store certificate filename in a variable
BUG/MINOR: ssl: Print correct filename when error occurs reading OCSP
CLEANUP: ssl: Remove goto after return dead code
CLEANUP: ssl: Fix bind keywords name in comments
DOC: ssl: Use correct wording for ca-sign-pass
Bertrand Paquet (1):
BUG/MINOR : allow to log cookie for tarpit and denied request
Chad Lavoie (2):
MINOR: cli: allow the semi-colon to be escaped on the CLI
MINOR: stats: Escape equals sign on socket dump
Chris Short (1):
BUG/MINOR: examples: Fixing haproxy.spec to remove references to .cfg
files
Christopher Faulet (58):
BUILD: ssl: fix build error introduced in commit 7969a3 with OpenSSL <
1.0.0
BUG/MINOR: http: Be sure to process all the data received from a server
MINOR: filters/http: Use a wrapper function instead of
stream_int_retnclose
BUG: stream_interface: Reuse connection even if the output channel is
empty
BUG/MINOR: ssl: Be sure to use unique serial for regenerated certificates
MAJOR: filters: Add filters support
MINOR: filters: Do not reset stream analyzers if the client is gone
REORG: filters: Prepare creation of the HTTP compression filter
MAJOR: filters/http: Rewrite the HTTP compression as a filter
MEDIUM: filters: Use macros to call filters callbacks to speed-up
processing
MEDIUM: filters: remove http_start_chunk, http_last_chunk and
http_chunk_end
MEDIUM: filters: Replace filter_http_headers callback by an analyzer
MEDIUM: filters/http: Move body parsing of HTTP messages in dedicated
functions
MINOR: filters: Add stream_filters structure to hide filters info
MAJOR: filters: Require explicit registration to filter HTTP body and TCP
data
MINOR: filters: Remove unused or useless stuff and do small optimizations
MEDIUM: filters: Optimize the HTTP compression for chunk encoded response
MINOR: filters/http: Slightly update the parsing of chunks
MINOR: filters/http: Forward remaining data when a channel has no "data"
filters
MINOR: filters: Add an filter example
MINOR: filters: Extract proxy stuff from the struct filter
MINOR: filters: Print the list of existing filters during HA startup
MINOR: filters: Typo in an error message
MINOR: filters: Filters must define the callbacks struct during config
parsing
DOC: filters: Add filters documentation
BUG/MINOR: dumpstats: Fix the "Total bytes saved" counter in backends
stats
MEDIUM: filters: Move HTTP headers filtering in its own callback
MINOR: filters: Simplify calls to analyzers using 2 new macros
MEDIUM: filters: Add pre and post analyzer callbacks
DOC: filters: Update the filters documentation accordingly to recent
changes
BUG/MEDIUM: filters: Fix data filtering when data are modified
BUG/MINOR: filters: Fix HTTP parsing when a filter loops on data
forwarding
BUG/MINOR: Rework slightly commit 9962f8fc to clean code and avoid
mistakes
BUG/MEDIUM: http/compression: Fix how chunked data are copied during the
HTTP body parsing
BUG: vars: Fix 'set-var' converter because of a typo
CLEANUP: remove last references to 'ruleset' section
MEDIUM: filters: Add attch/detach and stream_set_backend callbacks
MINOR: filters: Update filters documentation accordingly to recent changes
MINOR: filters: Call stream_set_backend callbacks before updating backend
stats
MINOR: filters: Remove backend filters attached to a stream only for HTTP
streams
MINOR: flt_trace: Add hexdump option to dump forwarded data
MINOR: cfgparse: Add functions to backup and restore registered sections
MINOR: cfgparse: Parse scope lines and save the last one parsed
REORG: sample: move code to release a sample expression in sample.c
MINOR: vars: Allow '.' in variable names
MINOR: vars: Add vars_set_by_name_ifexist function
MEDIUM: vars: Add a per-process scope for variables
MINOR: vars: Add 'unset-var' action/converter
MAJOR: spoe: Add an experimental Stream Processing Offload Engine
MINOR: spoe: add random ip-reputation service as SPOA example
MINOR: spoe/checks: Add support for SPOP health checks
MINOR: filters: Add check_timeouts callback to handle timers expiration
on streams
MINOR: spoe: Add 'timeout processing' option to limit time to process an
event
MINOR: spoe: Remove useless 'timeout ack' option
MINOR: spoe: Add 'option continue-on-error' statement in spoe-agent
section
MINOR: spoe: Add "maxconnrate" and "maxerrrate" statements
MINOR: spoe: Add "option set-on-error" statement
BUG: spoe: Fix parsing of SPOE actions in ACK frames
Coen Rosdorff (1):
DOC: fix discrepancy in the example for http-request redirect
Conrad Hoffmann (1):
BUG/MINOR: dumpstats: fix write to global chunk
Cyril Bonté (16):
BUG/MEDIUM: sample: http_date() doesn't provide the right day of the week
DOC: fix a typo for a "deviceatlas" keyword
FIX: small typo in an example using the "Referer" header
BUG/MEDIUM: sample: urlp can't match an empty value
BUG/MEDIUM: checks: email-alert not working when declared in defaults
BUG/MINOR: checks: email-alert causes a segfault when an unknown mailers
section is configured
BUG/MINOR: checks: typo in an email-alert error message
BUG/MEDIUM: stats: stats bind-process doesn't propagate the process mask
correctly
BUG/MEDIUM: cfgparse: wrong argument offset after parsing server "sni"
keyword
BUG/MINOR: fix maxaccept computation according to the frontend process
range
BUG/MEDIUM: stats: show servers state may show an empty or incomplete
result
BUG/MEDIUM: stats: show backend may show an empty or incomplete result
MINOR: stats: fix typo in help messages
MINOR: stats: show stat resolvers missing in the help message
BUG/MEDIUM: stats: show servers state may show an servers from another
backend
DOC: stats: provide state details for show servers state
Dan Lloyd (1):
DOC: spelling fixes
Daniel Jakots (2):
BUILD: check for libressl to be able to build against it
BUILD: Make use of accept4() on OpenBSD.
Daniel Schneller (3):
DOC: Clarify tunes.vars.xxx-max-size settings
MINOR: acl: Add predefined METH_DELETE, METH_PUT
DOC: Clarify IPv4 address / mask notation rules
David Carlier (21):
BUILD: Make deviceatlas require PCRE
CLEANUP: proxy: calloc call inverted arguments
CLEANUP: connection: fix double negation on memcmp()
DOC: deviceatlas: more example use cases.
BUILD: dumpstats: silencing warning for printf format specifier / time_t
MINOR: da: silent logging by default and displaying DeviceAtlas support
if built.
BUG/MEDIUM: da: stop DeviceAtlas processing in the convertor if there is
no input.
CLEANUP: haproxy: using _GNU_SOURCE instead of __USE_GNU macro.
MINOR: sample: Moves ARGS underlying type from 32 to 64 bits.
MINOR: da: Using ARG12 macro for the sample fetch and the convertor.
CLEANUP: chunk: adding NULL check to chunk_dup allocation.
CLEANUP: proto_http: few corrections for gcc warnings.
BUG/MINOR: server: risk of over reading the pref_net array.
BUG/MINOR: cfgparse: couple of small memory leaks.
BUG/MEDIUM: sample: initialize the pointer before parse_binary call.
BUG/MEDIUM: lua: protects the upper boundary of the argument list for
converters/fetches.
MINOR: lua: migrate the argument mask to 64 bits type.
CLEANUP: dumpstats: u64 field is an unsigned type.
CLEANUP: connection: using internal struct to hold source and dest port.
MINOR: cfgparse: few memory leaks fixes.
BUILD: fix build on Solaris 10/11
Dinko Korunic (1):
BUG/MINOR: Fix OSX compilation errors
Dirkjan Bussink (1):
MEDIUM: ssl: Add support for OpenSSL 1.1.0
Dragan Dosen (9):
BUG/MINOR: server: check return value of fgets() in apply_server_state()
MINOR: standard: add function "escape_chunk"
MEDIUM: log: add a new log format flag "E"
MINOR: stream: export the function 'smp_create_src_stkctr'
BUG/MINOR: http: url32+src should use the big endian version of url32
BUG/MINOR: http: url32+src should check cli_conn before using it
DOC: http: add documentation for url32 and url32+src
MINOR: standard: add function "escape_string"
BUG/MEDIUM: log: use function "escape_string" instead of "escape_chunk"
Emeric Brun (4):
BUG/MEDIUM: peers: table entries learned from a remote are pushed to
others after a random delay.
BUG/MEDIUM: peers: old stick table updates could be repushed.
BUG/MINOR: peers: some updates are pushed twice after a resync.
BUG/MINOR: peers: empty chunks after a resync.
Emmanuel Hocdet (2):
MEDIUM: ssl: support SNI filters with multicerts
MINOR: ssl: crt-list parsing factor
Erwan Velu (3):
CLEANUP: proto_http: Removing useless variable assignation
CLEANUP: dumpstats: Removing useless variables allocation
CLEANUP: dns: Removing usless variable & assignation
Frederik Deweerdt (1):
OPTIM/MINOR: session: abort if possible before connecting to the backend
Frédéric Lécaille (2):
BUG/MINOR: peers: Fix peers data decoding issue
MEDIUM: peers: Fix a peer stick-tables synchronization issue.
Godbach (1):
DOC: LUA: fix some typos and syntax errors
Grant (1):
MINOR: examples: Update haproxy.spec URLs to haproxy.org
Herve COMMOWICK (1):
DOC: fix json converter example and error message
Hubert Verstraete (2):
MINOR: new function my_realloc2 = realloc + free upon failure
CLEANUP: fixed some usages of realloc leading to memory leak
Ian Miell (1):
CLEANUP: cfgparse: Very minor spelling correction
James Brown (1):
MINOR: check: add agent-send server parameter
Jerome Duval (2):
BUG/BUILD: replace haproxy-systemd-wrapper with $(EXTRA) in install-bin.
BUILD: add Haiku as supported target.
Joe Williams (1):
MINOR: tcp: add further tcp info fetchers
Jorrit Schippers (1):
DOC: Fix typo in description of `-st` parameter in man page
Kevin Decherf (1):
DOC: specify that stats socket doc (section 9.2) is in management
Lukas Tribus (10):
BUG/MINOR: acl: don't use record layer in req_ssl_ver
BUG/MINOR: lua: don't force-sslv3 LUA's SSL socket
MINOR: unix: don't mention free ports on EAGAIN
DOC: remove old tunnel mode assumptions
BUG/MEDIUM: dns: unbreak DNS resolver after header fix
BUG/MINOR: displayed PCRE version is running release
MINOR: show Built with PCRE version
MINOR: show Running on zlib version
MEDIUM: make SO_REUSEPORT configurable
MINOR: enable IP_BIND_ADDRESS_NO_PORT on backend connections
Mac Browning (1):
DOC: add encoding to json converter example
Marcoen Hirschberg (1):
BUG/MEDIUM: ssl: fix off-by-one in ALPN list allocation
Maxime de Roucy (4):
MINOR: add list_append_word function
MEDIUM: init: use list_append_word in haproxy.c
MEDIUM: init: allow directory as argument of -f
BUG/MEDIUM: init: don't use environment locale
Nenad Merdanovic (8):
BUG/MEDIUM: Fix RFC5077 resumption when more than TLS_TICKETS_NO are
present
BUG/MAJOR: Fix crash in http_get_fhdr with exactly MAX_HDR_HISTORY headers
MINOR: Add ability for agent-check to set server maxconn
CLEANUP: Use server_parse_maxconn_change_request for maxconn CLI updates
BUG/MINOR: log: fix a typo that would cause %HP to log <BADREQ>
DOC: Fix typo so fetch is properly parsed by Cyril's converter
BUG/MINOR: Fix endiness issue in DNS header creation code
MINOR: Add fe_req_rate sample fetch
Olivier Doucet (1):
DOC: minor typo fixes to improve HTML parsing by haproxy-dconv
Panagiotis Panagiotopoulos (1):
DOC: add server name at rate-limit sessions example
Pavlos Parissis (2):
MINOR: systemd: Use variable for config and pidfile paths
MINOR: systemd: Perform sanity check on config before reload
Pieter Baauw (5):
DOC: lua-api/index.rst small example fixes, spelling correction.
MEDIUM: cfgparse: reject incorrect 'timeout retry' keyword spelling in
resolvers
MINOR: mailers: increase default timeout to 10 seconds
MINOR: mailers: use <CRLF> for all line endings
MINOR: mailers: make it possible to configure the connection timeout
Raghu Udiyar (1):
BUG/MINOR: stats: fix missing comma in stats on agent drain
Remi Gacogne (1):
BUG/MINOR: ssl: fix potential memory leak in ssl_sock_load_dh_params()
Roberto Guimaraes (1):
BUG/MINOR: ssl: fix potential memory leak in ssl_sock_load_dh_params()
Ruoshan Huang (3):
DOC: prefer using http-request/response over reqXXX/rspXXX directives
BUG/MINOR: fix http-response set-log-level parsing error
MEDIUM: http: implement http-response track-sc* directive
Simon Horman (1):
MINOR: stats: correct documentation of process ID for typed output
Thiago Farina (2):
MINOR: fix the return type for dns_response_get_query_id() function
DOC: fix "needed" typo
Thierry FOURNIER (100):
CLEANUP: use direction names in place of numeric values
BUG/MEDIUM: lua: sample fetches based on response doesn't work
BUILD: freebsd: double declaration
BUG/MEDIUM: lua: clean output buffer
DOC: lua: architecture and first steps
MINOR: lua: service/applet can have access to the HTTP headers when a
POST is received
REORG/MINOR: lua: convert boolean "int" to bitfield
BUG/MEDIUM: lua: Lua applets must not fetch samples using http_txn
BUG/MINOR: lua: Lua applets must not use http_txn
BUG/MEDIUM: lua: Forbid HTTP applets from being called from tcp rulesets
BUG/MAJOR: lua: Do not force the HTTP analysers in use-services
CLEANUP: lua: bad error messages
DOC: lua: fix lua API
BUILD/MINOR: regex: missing header
BUG/MINOR: stream: bad return code
DOC: lua: fix somme errors and add implicit types
MINOR: lua: add set/get priv for applets
DOC: lua: fix somme errors
BUG/MEDIUM: lua: the function txn_done() from sample fetches can crash
BUG/MEDIUM: lua: the function txn_done() from action wrapper can crash
DOC: lua: remove old functions
BUG/MEDIUM: lua: somme HTTP manipulation functions are called without
valid requests
MEDIUM: log: Decompose %Tq in %Th %Ti %TR
MINOR: ssl: add debug traces
BUILD/CLEANUP: ssl: Check BIO_reset() return code
BUG/MINOR: ssl: Check malloc return code
BUG/MINOR: ssl: prevent multiple entries for the same certificate
MINOR: lua: add function which return true if the channel is full.
MINOR: lua: add ip addresses and network manipulation function
BUG/MEDIUM: channel: bad unlikely macro
CLEANUP: lua: move comment
CLEANUP: lua: control executed twice
MINOR: cli: add private pointer and release function
MEDIUM: lua: Add cli handler for Lua
BUG/MEDIUM: lua: In some case, the return of sample-fetche is ignored
BUG/MINOR: log-format: uncatched memory allocation functions
CLEANUP: log-format: useless file and line in json converter
CLEANUP/MINOR: log-format: unexport functions parse_logformat_var_args()
and parse_logformat_var()
CLEANUP: log-format: fix return code of the function parse_logformat_var()
CLEANUP: log-format: fix return code of function
parse_logformat_var_args()
CLEANUP: log-format: remove unused arguments
MEDIUM: log-format: strict parsing and enable fail
MEDIUM: log-format/conf: take into account the parse_logformat_string()
return code
MINOR: lua: add utility function for check boolean argument
MINOR: lua: Add tokenize function.
BUG/MINOR: conf: calloc untested
MINOR: http/conf: store the use_backend configuration file and line for
logs
MEDIUM: log-format: Use standard HAProxy log system to report errors
MINOR: map: Add regex matching replacement
BUG/MINOR: lua: unsafe initialization
MINOR: lua: file dedicated to unsafe functions
MINOR: lua: add "now" time function
MINOR: standard: add RFC HTTP date parser
MINOR: lua: Add date functions
MINOR: lua: move common function
MINOR: lua: merge function
MINOR: lua: Add concat class
BUG/MAJOR: lua: segfault using Concat object
DOC: lua: copyrights
MINOR: common: mask conversion
MEDIUM: dns: extract options
MEDIUM: dns: add a "resolve-net" option which allow to prefer an ip in a
network
BUG/MAJOR: lua: applets can't sleep.
BUG/MINOR: server: some prototypes are renamed
BUG/MINOR: lua: Useless copy
BUG/MINOR: server: fix the format of the warning on address change
CLEANUP: server: add "const" to some message strings
MINOR: server: generalize the "updater" source
BUG/MINOR: conf: "listener id" expects integer, but its not checked
BUG/MINOR: lua: can't load external libraries
BUG/MINOR: prevent the dump of uninitialized vars
CLEANUP: map: it seems that the map were planed to be chained
MINOR: lua: move class registration facilities
MINOR: lua: remove some useless checks
CLEANUP: lua: Remove two same functions
MINOR: lua: refactor the Lua object registration
MINOR: lua: precise message when a critical error is catched
MINOR: lua: post initialization
MINOR: lua: Add internal function which strip spaces
MINOR: lua: convert field to lua type
DOC: name set-gpt0 mismatch with the expected keyword
MINOR: http: sample fetch which returns unique-id
MINOR: dumpstats: extract stats fields enum and names
MINOR: dumpstats: split stats_dump_info_to_buffer() in two parts
MINOR: dumpstats: split stats_dump_fe_stats() in two parts
MINOR: dumpstats: split stats_dump_li_stats() in two parts
MINOR: dumpstats: split stats_dump_sv_stats() in two parts
MINOR: dumpstats: split stats_dump_be_stats() in two parts
MINOR: lua: dump general info
MINOR: lua: add class proxy
MINOR: lua: add class server
MINOR: lua: add class listener
BUG/MEDIUM: stick-tables: some sample-fetch doesn't work in the
connection state.
DOC: http: rename the unique-id sample and add the documentation
MINOR: filters: add opaque data
BUG/MEDIUM: sticktables: segfault in some configuration error cases
BUG/MEDIUM: lua: converters doesn't work
BUG/MINOR: http: add-header: header name copied twice
BUG/MEDIUM: http: add-header: buffer overwritten
MINOR: tcp: Return TCP statistics like RTT and RTT variance
Vincent Bernat (10):
BUILD: install only relevant and existing documentation
CLEANUP: don't ignore debian/ directory if present
CLEANUP: remove unneeded casts
CLEANUP: uniformize last argument of malloc/calloc
CLEANUP: .gitignore cleanup
BUG/MINOR: dns: fix DNS header definition
BUG/MEDIUM: dns: fix alignment issue when building DNS queries
BUG/MAJOR: fix listening IP address storage for frontends
BUG/MINOR: fix listening IP address storage for frontends (cont)
BUG/MINOR: stick-table: handle out-of-memory condition gracefully
William Lallemand (23):
MINOR: rename master process name in -Ds (systemd mode)
BUG/MEDIUM: trace.c: rdtsc() is defined in two files
BUG/MEDIUM: fix risk of segfault with "show tls-keys"
MEDIUM: dumpstats: 'show tls-keys' is now able to show secrets
DOC: update doc about tls-tickets-keys dump
MEDIUM: tcp: add 'set-src' to 'tcp-request connection'
MINOR: set the CO_FL_ADDR_FROM_SET flags with 'set-src'
MEDIUM: tcp/http: add 'set-src-port' action
MEDIUM: tcp/http: new set-dst/set-dst-port actions
BUG/MEDIUM: dumpstats: undefined behavior in stats_tlskeys_list()
MEDIUM: dumpstats: make stats_tlskeys_list() yield-aware during tls-keys
dump
MEDIUM: cli: register CLI keywords with cli_register_kw()
REORG: cli: split dumpstats.c in src/cli.c and src/stats.c
REORG: cli: split dumpstats.h in stats.h and cli.h
REORG: cli: move ssl CLI functions to ssl_sock.c
REORG: cli: move map and acl code to map.c
REORG: cli: move show stat resolvers to dns.c
REORG: cli: move 'set server' to server.c
REORG: cli: move 'show pools' to memory.c
REORG: cli: move 'show servers' to proxy.c
REORG: cli: move 'show sess' to stream.c
REORG: cli: move 'show backend' to proxy.c
REORG: cli: move get/set weight to server.c
Willy Tarreau (292):
[RELEASE] Released version 1.7-dev0
BUG/MEDIUM: namespaces: don't fail if no namespace is used
BUG/MAJOR: ssl: free the generated SSL_CTX if the LRU cache is disabled
DEBUG/MINOR: memory: add a build option to disable memory pools sharing
DEBUG/MEDIUM: memory: optionally protect free data in pools
DEBUG/MEDIUM: memory: add optional control pool memory operations
MEDIUM: memory: add accounting for failed allocations
BUG/MEDIUM: config: count memory limits on 64 bits, not 32
BUG/MAJOR: http: don't requeue an idle connection that is already queued
BUG/MEDIUM: http: switch the request channel to no-delay once done.
BUILD/MINOR: http: proto_http.h needs sample.h
BUG/MEDIUM: http: don't enable auto-close on the response side
BUG/MEDIUM: stream: fix half-closed timeout handling
CLEANUP: compression: don't allocate DEFAULT_MAXZLIBMEM without USE_ZLIB
BUG/MEDIUM: cli: changing compression rate-limiting must require admin
level
BUG/MEDIUM: http: fix http-reuse when frontend and backend differ
BUILD: ssl: set SSL_SOCK_NUM_KEYTYPES with openssl < 1.0.2
MINOR: config: make tune.recv_enough configurable
BUG/MEDIUM: config: properly adjust maxconn with nbproc when memmax is
forced
CONTRIB: initiate a debugging suite to make debugging easier
[RELEASE] Released version 1.7-dev1
BUG/MINOR: http: fix several off-by-one errors in the url_param parser
BUG/MINOR: chunk: make chunk_dup() always check and set dst->size
MINOR: chunks: ensure that chunk_strcpy() adds a trailing zero
MINOR: chunks: add chunk_strcat() and chunk_newstr()
MINOR: chunk: make chunk_initstr() take a const string
MEDIUM: tools: add csv_enc_append() to preserve the original chunk
MINOR: tools: make csv_enc_append() always start at the first byte of the
chunk
DOC: fix "workaround" spelling
BUG/MEDIUM: servers state: server port is used uninitialized
BUG/MEDIUM: channel: fix miscalculation of available buffer space.
MEDIUM: pools: add a new flag to avoid rounding pool size up
BUG/MEDIUM: buffers: do not round up buffer size during allocation
BUG/MINOR: stream: don't force retries if the server is DOWN
BUG/MINOR: counters: make the sc-inc-gpc0 and sc-set-gpt0 touch the table
BUG/CLEANUP: CLI: report the proper field states in "show sess"
MINOR: stats: send content-length with the redirect to allow keep-alive
BUG/MAJOR: http-reuse: fix risk of orphaned connections
BUG/MEDIUM: http-reuse: do not share private connections across backends
BUG/MEDIUM: ssl: fix off-by-one in NPN list allocation
MINOR: cli: add a new "show env" command
MEDIUM: config: allow to manipulate environment variables in the global
section
BUG/MEDIUM: chunks: always reject negative-length chunks
BUG/MINOR: systemd: ensure we don't miss signals
BUG/MINOR: systemd: report the correct signal in debug message output
BUG/MINOR: systemd: propagate the correct signal to haproxy
MINOR: systemd: ensure a reload doesn't mask a stop
BUG/MINOR: tcpcheck: fix incorrect list usage resulting in failure to
load certain configs
BUG/MAJOR: samples: check smp->strm before using it
MINOR: sample: add a new helper to initialize the owner of a sample
MINOR: sample: always set a new sample's owner before evaluating it
BUG/MAJOR: vars: always retrieve the stream and session from the sample
CLEANUP: payload: remove useless and confusing nullity checks for channel
buffer
BUG/MINOR: ssl: fix usage of the various sample fetch functions
MINOR: stats: create fields types suitable for all CSV output data
MINOR: stats: add all the "show info" fields in a table
MEDIUM: stats: fill all the show info elements prior to displaying them
MINOR: stats: add a function to emit fields into a chunk
MINOR: stats: add stats_dump_info_fields() to dump one field per line
MEDIUM: stats: make use of stats_dump_info_fields() for "show info"
MINOR: stats: add a declaration of all stats fields
MINOR: stats: don't hard-code the CSV fields list anymore
MINOR: stats: create stats fields storage and CSV dump function
MEDIUM: stats: convert stats_dump_fe_stats() to use
stats_dump_fields_csv()
MEDIUM: stats: make stats_dump_fe_stats() use stats fields for HTML dump
MEDIUM: stats: convert stats_dump_li_stats() to use
stats_dump_fields_csv()
MEDIUM: stats: make stats_dump_li_stats() use stats fields for HTML dump
MEDIUM: stats: convert stats_dump_be_stats() to use
stats_dump_fields_csv()
MEDIUM: stats: make stats_dump_be_stats() use stats fields for HTML dump
MEDIUM: stats: convert stats_dump_sv_stats() to use
stats_dump_fields_csv()
MEDIUM: stats: make stats_dump_sv_stats() use the stats field for HTML
MEDIUM: stats: move the server state coloring logic to the server dump
function
MINOR: stats: do not use srv->admin & STATS_ADMF_MAINT in HTML dumps
MINOR: stats: do not check srv->state for SRV_ST_STOPPED in HTML dumps
MINOR: stats: make CSV report server check status only when enabled
MINOR: stats: only report backend's down time if it has servers
MINOR: stats: prepend '*' in front of the check status when in progress
MINOR: stats: make HTML stats dump rely on the table for the check status
MINOR: stats: add agent_status, agent_code, agent_duration to output
MINOR: stats: add check_desc and agent_desc to the output fields
MINOR: stats: add check and agent's health values in the output
MEDIUM: stats: make the HTML server state dump use the CSV states
MEDIUM: stats: only report observe errors when observe is set
MEDIUM: stats: expose the same flags for CLI and HTTP accesses
MEDIUM: stats: report server's address in the CSV output
MEDIUM: stats: report the cookie value in the server & backend CSV dumps
MEDIUM: stats: compute the color code only in the HTML form
MEDIUM: stats: report the listeners' address in the CSV output
MEDIUM: stats: make it possible to report the WAITING state for listeners
REORG: stats: dump the frontend's HTML stats via a generic function
REORG: stats: dump the socket stats via the generic function
REORG: stats: dump the server stats via the generic function
REORG: stats: dump the backend stats via the generic function
MEDIUM: stats: add a new "mode" column to report the proxy mode
MINOR: stats: report the load balancing algorithm in CSV output
MINOR: stats: add 3 fields to report the frontend-specific connection
stats
MINOR: stats: report number of intercepted requests for frontend and
backends
MINOR: stats: introduce stats_dump_one_line() to dump one stats line
CLEANUP: stats: make stats_dump_fields_html() not rely on proxy anymore
MINOR: stats: add ST_SHOWADMIN to pass the admin info in the regular flags
MINOR: stats: make stats_dump_fields_html() not use &trash by default
MINOR: stats: add functions to emit typed fields into a chunk
MEDIUM: stats: support "show info typed" on the CLI
MEDIUM: stats: implement a typed output format for stats
DOC: document the "show info typed" and "show stat typed" output formats
CLEANUP: http: fix a build warning introduced by a recent fix
[RELEASE] Released version 1.7-dev2
BUILD: namespaces: fix a potential build warning in namespaces.c
BUG/MEDIUM: peers: fix incorrect age in frequency counters
MEDIUM: proxy: use dynamic allocation for error dumps
BUG/MEDIUM: ssl: rewind the BIO when reading certificates
BUG/MEDIUM: channel: fix miscalculation of available buffer space (2nd
try)
CLEANUP: fix inconsistency between fd->iocb, proto->accept and accept()
BUG/MEDIUM: fix maxaccept computation on per-process listeners
BUG/MINOR: listener: stop unbound listeners on startup
TESTS: add blocksig.c to run tests with all signals blocked
MEDIUM: unblock signals on startup.
BUG/MEDIUM: channel: don't allow to overwrite the reserve until connected
BUG/MEDIUM: channel: incorrect polling condition may delay event delivery
BUG/MEDIUM: channel: fix miscalculation of available buffer space (3rd
try)
BUG/MEDIUM: log: fix risk of segfault when logging HTTP fields in TCP mode
BUG/MEDIUM: http: fix incorrect reporting of server errors
MINOR: channel: add new function channel_congested()
BUG/MEDIUM: http: fix risk of CPU spikes with pipelined requests from
dead client
BUG/MAJOR: channel: fix miscalculation of available buffer space (4th try)
BUG/MEDIUM: stream: ensure the SI_FL_DONT_WAKE flag is properly cleared
BUG/MEDIUM: channel: fix inconsistent handling of 4GB-1 transfers
CLEANUP: don't ignore scripts in .gitignore
BUILD: add a few release and backport scripts in scripts/
[RELEASE] Released version 1.7-dev3
CLEANUP: config: detect double registration of a config section
MINOR: log: add the %Td log-format specifier
SCRIPTS: teach git-show-backports how to report upstream commits
SCRIPTS: make git-show-backports capable of limiting its history
BUG/MAJOR: http: fix breakage of "reqdeny" causing random crashes
BUG/MEDIUM: stick-tables: fix breakage in table converters
MINOR: stick-table: change all stick-table converters' inputs to SMP_T_ANY
BUILD: fix build on Solaris 11
BUG/MEDIUM: config: fix multiple declaration of section parsers
BUILD/MEDIUM: rebuild everything when an include file is changed
BUILD/MEDIUM: force a full rebuild if some build options change
BUILD: ssl: fix typo causing a build failure in the multicert patch
BUG/MINOR: init: always ensure that global.rlimit_nofile matches actual
limits
BUG/MINOR: init: ensure that FD limit is raised to the max allowed
BUG/MEDIUM: external-checks: close all FDs right after the fork()
BUG/MAJOR: external-checks: use asynchronous signal delivery
BUG/MINOR: external-checks: do not unblock undesired signals
CLEANUP: external-check: don't block/unblock SIGCHLD when manipulating
the list
BUG/MINOR: srv-state: fix incorrect output of state file
BUG/MINOR: http: fix misleading error message for response captures
BUG/BUILD: don't automatically run "make" on "make install"
DOC: add missing doc for http-request deny [deny_status <status>]
BUG/MEDIUM: http: unbreak uri/header/url_param hashing
Revert "BUG/MINOR: ssl: fix potential memory leak in
ssl_sock_load_dh_params()"
BUG/MEDIUM: dns: fix alignment issues in the DNS response parser
BUG/MINOR: peers: don't count track-sc multiple times on errors
BUG/MEDIUM: stream-int: completely detach connection on connect error
BUG/MAJOR: compression: initialize avail_in/next_in even during flush
BUG/MEDIUM: samples: make smp_dup() always duplicate the sample
MINOR: sample: implement smp_is_safe() and smp_make_safe()
MINOR: sample: provide smp_is_rw() and smp_make_rw()
BUG/MAJOR: server: the "sni" directive could randomly cause trouble
BUG/MEDIUM: stick-tables: do not fail on string keys with no allocated
size
BUG/MEDIUM: stick-table: properly convert binary samples to keys
MINOR: sample: use smp_make_rw() in upper/lower converters
MINOR: tcp: add dst_is_local and src_is_local
BUILD: protocol: fix some build errors on OpenBSD
BUILD: log: iovec requires to include sys/uio.h on OpenBSD
BUILD: tcp: do not include netinet/ip.h for IP_TTL
BUILD: connection: fix build breakage on openbsd due to missing in_systm.h
BUILD: checks: remove the last strcat and eliminate a warning on OpenBSD
BUILD: tcp: define SOL_TCP when only IPPROTO_TCP exists
BUILD: compression: remove a warning when no compression lib is used
BUILD: poll: remove unused hap_fd_isset() which causes a warning with
clang
BUG/MAJOR: stick-counters: possible crash when using sc_trackers with
wrong table
[RELEASE] Released version 1.7-dev4
CLEANUP: logs: remove unused log format field definitions
BUG/MAJOR: stream: properly mark the server address as unset on connect
retry
BUG/MINOR: payload: fix SSLv2 version parser
BUG/MINOR: stats: report the correct conn_time in backend's html output
BUG/MEDIUM: dns: don't randomly crash on out-of-memory
MINOR: tcp: make set-src/set-src-port and set-dst/set-dst-port commutative
DOC: fix missed entry for "set-{src,dst}{,-port}"
BUG/MINOR: vars: use sess and not s->sess in action_store()
BUG/MINOR: vars: make smp_fetch_var() more robust against misuses
BUG/MINOR: vars: smp_fetch_var() doesn't depend on HTTP but on the session
MINOR: stats: output dcon
CLEANUP: tcp rules: mention everywhere that tcp-conn rules are L4
MINOR: counters: add new fields for denied_sess
MEDIUM: tcp: add registration and processing of TCP L5 rules
MINOR: stats: emit dses
DOC: document tcp-request session
BUG/MINOR: systemd: make the wrapper return a non-null status code on
error
BUG/MINOR: systemd: always restore signals before execve()
BUG/MINOR: systemd: check return value of calloc()
MINOR: systemd: report it when execve() fails
BUG/MEDIUM: systemd: let the wrapper know that haproxy has completed or
failed
SCRIPTS: make git-show-backports also dump a "git show" command
[RELEASE] Released version 1.7-dev5
BUG/MEDIUM: peers: on shutdown, wake up the appctx, not the stream
BUG/MEDIUM: peers: fix use after free in peer_session_create()
MINOR: peers: make peer_session_forceshutdown() use the appctx and not
the stream
MINOR: peers: remove the pointer to the stream
BUG/MEDIUM: systemd-wrapper: return correct exit codes
MEDIUM: tools: make str2ip2() preserve existing ports
CLEANUP: tools: make ipcpy() preserve the original port
OPTIM: http: move all http character classs tables into a single one
OPTIM: http: improve parsing performance of long header lines
OPTIM: http: improve parsing performance of long URIs
OPTIM: http: optimize lookup of comma and quote in header values
BUG/MEDIUM: srv-state: properly restore the DRAIN state
BUG/MINOR: srv-state: allow to have both CMAINT and FDRAIN flags
MINOR: server: do not emit warnings/logs/alerts on server state changes
at boot
BUG/MEDIUM: servers: properly propagate the maintenance states during
startup
DOC: move the device detection modules documentation to their own files
CLEANUP: wurfl: reduce exposure in the rest of the code
MINOR: stream: make option contstats usable again
MEDIUM: tools: make str2sa_range() return the FQDN even when not resolving
MINOR: server: indicate in the logs when RMAINT is cleared
MINOR: stats: indicate it when a server is down due to resolution
MINOR: server: make srv_set_admin_state() capable of telling why this
happens
MEDIUM: cli: leave the RMAINT state when setting an IP address on the CLI
MEDIUM: server: make use of init-addr
MINOR: server: implement init-addr none
MEDIUM: server: make libc resolution failure non-fatal
MINOR: server: add support for explicit numeric address in init-addr
DOC: add some documentation for the "init-addr" server keyword
MINOR: init: add -dr to ignore server address resolution failures
MEDIUM: server: do not restrict anymore usage of IP address from the
state file
DOC: update ROADMAP file
[RELEASE] Released version 1.7-dev6
SCRIPTS: make publish-release also copy the new SPOE doc
BUILD: http: include types/sample.h in proto_http.h
BUILD: debug/flags: remove test for SF_COMP_READY
CONTRIB: debug/flags: add check for SF_ERR_CHK_PORT
CONTRIB: tcploop: scriptable TCP I/O for debugging purposes
CONTRIB: tcploop: implement fork()
CONTRIB: tcploop: implement logging when called with -v
CONTRIB: tcploop: update the usage output
CONTRIB: tcploop: support sending plain strings
CONTRIB: tcploop: don't report failed send() or recv()
CONTRIB: tcploop: add basic loops via a jump instruction
CLEANUP: lua: avoid directly calling getsockname/getpeername()
BUG/MEDIUM: connection: check the control layer before stopping polling
DEBUG: connection: mark the closed FDs with a value that is easier to
detect
BUG/MEDIUM: stick-table: fix regression caused by recent fix for
out-of-memory
BUG/MINOR: cli: properly decrement ref count on tables during failed dumps
BUILD: contrib: fix ip6range build on Centos 7
BUG/MINOR: cli: fix pointer size when reporting data/transport layer name
BUG/MINOR: cli: dequeue from the proxy when changing a maxconn
BUG/MINOR: cli: wake up the CLI's task after a timeout update
MINOR: connection: add a few functions to report the data and xprt
layers' names
MINOR: connection: add names for transport and data layers
MINOR: cli: create new function cli_has_level() to validate permissions
MINOR: server: create new function cli_find_server() to find a server
MINOR: proxy: create new function cli_find_frontend() to find a frontend
REORG: cli: move "show stat" to stats.c
REORG: cli: move "show info" to stats.c
REORG: cli: move dump_text(), dump_text_line(), and dump_binary() to
standard.c
REORG: cli: move table dump/clear/set to stick_table.c
REORG: cli: move "show errors" out of cli.c
REORG: cli: make "show env" also use the generic keyword registration
REORG: cli: move "set timeout" to its own handler
REORG: cli: move "clear counters" to stats.c
REORG: cli: move "set maxconn global" to its own handler
REORG: cli: move "set maxconn server" to server.c
REORG: cli: move "set maxconn frontend" to proxy.c
REORG: cli: move "shutdown sessions server" to stream.c
REORG: cli: move "shutdown session" to stream.c
REORG: cli: move "shutdown frontend" to proxy.c
REORG: cli: move "{enable|disable} frontend" to proxy.c
REORG: cli: move "{enable|disable} server" to server.c
REORG: cli: move "{enable|disable} health" to server.c
REORG: cli: move "{enable|disable} agent" to server.c
REORG: cli: move the "set rate-limit" functions to their own parser
CLEANUP: cli: rename STAT_CLI_* to CLI_ST_*
CLEANUP: cli: simplify the request parser a little bit
CLEANUP: cli: remove assignments to st0 and st2 in keyword parsers
BUILD: server: remove a build warning introduced by latest series
BUILD: ssl: make the SSL layer build again with openssl 0.9.8
BUILD: vars: remove a build warning on vars.c
CLEANUP: sample: report "converter" instead of "conv method" in error
messages
MINOR: cli: make "show stat" support a proxy name
MINOR: cli: make "show errors" support a proxy name
MINOR: cli: make "show errors" capable of dumping only request or response
BUG/MINOR: freq-ctr: make swrate_add() support larger values
CLEANUP: counters: move from 3 types to 2 types
CLEANUP: cfgparse: cascade the warnif_misplaced_* rules
REORG: tcp-rules: move tcp rules processing to their own file
REORG: stkctr: move all the stick counters processing to stick-tables.c
DOC: update the roadmap file with the latest changes
[RELEASE] Released version 1.7.0
fengpeiyuan (1):
DOC: fix a few spelling mistakes
[email protected] (1):
BUG/MINOR: examples/haproxy.init: missing brace in quiet_check()
lsenta (1):
BUG: http: do not abort keep-alive connections on server timeout
mildis (2):
MINOR: config: allow IPv6 bracketed literals
BUG/MINOR: ssl: close ssl key file on error
scientiamobile (1):
MEDIUM: wurfl: add Scientiamobile WURFL device detection module
yanbzhu (7):
MINOR: ssl: Added cert_key_and_chain struct
MEDIUM: ssl: Added support for creating SSL_CTX with multiple certs
MINOR: ssl: Added multi cert support for crt-list config keyword
MEDIUM: ssl: Added multi cert support for loading crt directories
MEDIUM: ssl: Added support for Multi-Cert OCSP Stapling
DOC: ssl: Adding docs for Multi-Cert bundling
DOC: ssl: fixed some formatting errors in crt tag
---