Hi,
as promised, here comes version 1.6.3 which fixes a significant number
of bugs since 1.6.2. This is expected to be the last version of the year.
Let's try to summarize the most important ones :
- HTTP responses forged in Lua could be truncated
- POST data could occasionally experience a 200ms delay due to a
missing CF_NEVER_WAIT flag
- sometimes a close from the server could propagate to the client
and terminate a keep-alive connection
- an occasional CPU busy loop could happen when client-fin and
server-fin were used
- urlp coudln't match an empty value
- the DeviceAtlas converter could segfault if the user-agent was
removed using req*del
- email-alerts would not work in default sections
- http-reuse would sometimes not properly reuse idle connections
- the automatic maxconn calculation would be incorrect when nbproc > 1
- two bugs affecting peers could cause some entries not to be immediately
pushed to the peers.
- Lua couldn't access HTTP headers from a POST request, please see the
doc for the changes that were necessary to make it work.
- Lua services cannot reliably use L7 fetches. Now we check for this
case and doc was updated to mention it.
- Lua services didn't refuse to be called from TCP rulesets.
- HTTP analysers must not be forced in Lua services. This was causing
crashes in buffer_insert_line2().
Note that I got a report of urlp_val() not always properly retrieving the
value, which I could reproduce once and never since. I audited the code
and found nothing explaining this. I suspected an improperly initialized
variable but I couldn't find anything looking like this. If anyone believes
to have found a bug there as well, I'm interested in their feedback on the
subject. The urlp_val() was used as an ACL from a TCP ruleset in an HTTP
frontend if that matters.
Most of the other patches are doc and code cleanups, and a few minor fixes,
as can be seen in the full changelog below :
- BUG/MINOR: http rule: http capture 'id' rule points to a non existing id
- BUG/MINOR: server: check return value of fgets() in apply_server_state()
- BUG/MINOR: acl: don't use record layer in req_ssl_ver
- BUILD: freebsd: double declaration
- BUG/MEDIUM: lua: clean output buffer
- BUILD: check for libressl to be able to build against it
- DOC: lua-api/index.rst small example fixes, spelling correction.
- DOC: lua: architecture and first steps
- DOC: relation between timeout http-request and option http-buffer-request
- BUILD: Make deviceatlas require PCRE
- BUG: http: do not abort keep-alive connections on server timeout
- BUG/MEDIUM: http: switch the request channel to no-delay once done.
- BUG/MINOR: lua: don't force-sslv3 LUA's SSL socket
- 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: sample: urlp can't match an empty value
- BUILD: dumpstats: silencing warning for printf format specifier / time_t
- CLEANUP: proxy: calloc call inverted arguments
- 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.
- DOC: Edited 51Degrees section of README/
- 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/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
- BUG/MEDIUM: http: fix http-reuse when frontend and backend differ
- DOC: prefer using http-request/response over reqXXX/rspXXX directives
- BUG/MEDIUM: config: properly adjust maxconn with nbproc when memmax is
forced
- 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.
- CLEANUP: haproxy: using _GNU_SOURCE instead of __USE_GNU macro.
- 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
- DOC: mailers: typo in 'hostname' description
- DOC: compression: missing mention of libslz for compression algorithm
- BUILD/MINOR: regex: missing header
- BUG/MINOR: stream: bad return code
- DOC: lua: fix somme errors and add implicit types
The usual URLs come below :
Site index : http://www.haproxy.org/
Discourse : http://discourse.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.io/haproxy-dconv/
Willy