]> git.ipfire.org Git - thirdparty/haproxy.git/log
thirdparty/haproxy.git
9 years agoDOC: specify that stats socket doc (section 9.2) is in management
Kevin Decherf [Tue, 13 Oct 2015 21:26:44 +0000 (23:26 +0200)] 
DOC: specify that stats socket doc (section 9.2) is in management

Commit 44aed90ce102c4136a5eda66d541f6fa79e141e8 moved the stats socket
documentation from config to management but the remaining references to
section 9.2 were not updated; improve it to be less confusing.

Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
9 years ago[RELEASE] Released version 1.7-dev0 v1.7-dev0
Willy Tarreau [Tue, 13 Oct 2015 19:48:10 +0000 (21:48 +0200)] 
[RELEASE] Released version 1.7-dev0

Released version 1.7-dev0 with the following main changes :
    - exact copy of 1.6.0

9 years ago[RELEASE] Released version 1.6.0 v1.6.0
Willy Tarreau [Tue, 13 Oct 2015 16:52:22 +0000 (18:52 +0200)] 
[RELEASE] Released version 1.6.0

Released version 1.6.0 with the following main changes :
    - BUG/MINOR: Handle interactive mode in cli handler
    - DOC: global section missing parameters
    - DOC: backend section missing parameters
    - DOC: stats paramaters available in frontend
    - 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
    - BUG/MEDIUM: logs: fix time zone offset format in RFC5424
    - BUILD: Fix the build on OSX (htonll/ntohll)
    - BUILD: enable build on Linux/s390x
    - BUG/MEDIUM: lua: direction test failed
    - MINOR: lua: fix a spelling error in some error messages
    - 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
    - BUG/MEDIUM: pattern: fixup use_after_free in the pat_ref_delete_by_id

9 years agoDOC: update ROADMAP to remove what was done in 1.6
Willy Tarreau [Tue, 13 Oct 2015 16:38:15 +0000 (18:38 +0200)] 
DOC: update ROADMAP to remove what was done in 1.6

9 years agoBUG/MEDIUM: pattern: fixup use_after_free in the pat_ref_delete_by_id
peter cai [Wed, 7 Oct 2015 07:07:43 +0000 (00:07 -0700)] 
BUG/MEDIUM: pattern: fixup use_after_free in the pat_ref_delete_by_id

I found there is use_after_free bug in the pat_ref_delete_by_id.

[wt: it seems this fix must be backported to 1.5 as well]

9 years agoCLEANUP: tests: removed completely obsolete test files
Willy Tarreau [Tue, 13 Oct 2015 15:07:34 +0000 (17:07 +0200)] 
CLEANUP: tests: removed completely obsolete test files

A number of config files were present in the tests/ directory and which
would either test features that are easier to test using more recent files
or test obsolete features. All of them emit tons of useless warnings, and
instead of fixing them, better remove them since they have never been used
in the last 10 years or so.

The remaining files may still emit warnings and require some fixing but
they provide some value for some tests.

9 years agoCLEANUP: examples: shut up warnings in transparent proxy example
Willy Tarreau [Tue, 13 Oct 2015 13:46:50 +0000 (15:46 +0200)] 
CLEANUP: examples: shut up warnings in transparent proxy example

Just add some missing timeouts.

9 years agoCLEANUP: tests: move a test file from examples/ to tests/
Willy Tarreau [Tue, 13 Oct 2015 13:45:17 +0000 (15:45 +0200)] 
CLEANUP: tests: move a test file from examples/ to tests/

examples are for users, tests are for developers.

9 years agoCLEANUP: examples: update sample file ssl.cfg
Willy Tarreau [Tue, 13 Oct 2015 13:44:31 +0000 (15:44 +0200)] 
CLEANUP: examples: update sample file ssl.cfg

This one emitted an error due to the lack of "verify none" on the server line.

9 years agoCLEANUP: examples: update sample file option-http_proxy.cfg
Willy Tarreau [Tue, 13 Oct 2015 13:43:39 +0000 (15:43 +0200)] 
CLEANUP: examples: update sample file option-http_proxy.cfg

This one was still valid but emitted lots of warnings.

9 years agoCLEANUP: examples: fix the example file content-sw-sample.cfg
Willy Tarreau [Tue, 13 Oct 2015 13:38:46 +0000 (15:38 +0200)] 
CLEANUP: examples: fix the example file content-sw-sample.cfg

This one didn't load anymore, but it was worth updating it since it matches
most common needs.

9 years agoCLEANUP: examples: remove obsolete configuration file samples
Willy Tarreau [Tue, 13 Oct 2015 13:22:59 +0000 (15:22 +0200)] 
CLEANUP: examples: remove obsolete configuration file samples

This removes the obsolete CTTPROXY configuration, the tarpit example,
and the pre-content switching example involving 3 layers and cookie
rewriting to emulate the use_backend feature... (9 years old).

9 years agoCLEANUP: examples: remove some obsolete and confusing files
Willy Tarreau [Tue, 13 Oct 2015 13:15:10 +0000 (15:15 +0200)] 
CLEANUP: examples: remove some obsolete and confusing files

Some files are totally obsolete. The Formilux init scripts and packaging
scripts for haproxy 1.1.21 should go. Linux 2.4 kernel patch to enable
epoll() on EOLed RHEL3 should go. The tuning script is incomplete and
only suited to older kernels, better stop shipping this one.

9 years agoMINOR: init: report use of libslz instead of "no compression"
Willy Tarreau [Tue, 13 Oct 2015 14:46:28 +0000 (16:46 +0200)] 
MINOR: init: report use of libslz instead of "no compression"

It's confusing to see "no zlib support" followed by supported
compression algorithms. Fix this.

9 years agoBUILD: properly report when USE_ZLIB and USE_SLZ are used together
Willy Tarreau [Tue, 13 Oct 2015 14:45:21 +0000 (16:45 +0200)] 
BUILD: properly report when USE_ZLIB and USE_SLZ are used together

Use #error here otherwise the errors are hard to spot for the casual
user.

9 years agoDOC: remove haproxy-{en,fr}.txt
Willy Tarreau [Tue, 13 Oct 2015 14:34:46 +0000 (16:34 +0200)] 
DOC: remove haproxy-{en,fr}.txt

This long-awaited moment finally came!

9 years agoDOC: mention management.txt in README
Willy Tarreau [Tue, 13 Oct 2015 14:32:20 +0000 (16:32 +0200)] 
DOC: mention management.txt in README

and in intro.txt as well. Remove references to haproxy-{en,fr}.txt.

9 years agoMINOR: examples: update haproxy.spec to mention new docs
Willy Tarreau [Tue, 13 Oct 2015 14:33:57 +0000 (16:33 +0200)] 
MINOR: examples: update haproxy.spec to mention new docs

intro.txt and management.txt were added. haproxy-{en,fr}.txt were removed.

9 years agoDOC: move the stats socket documentation from config to management
Willy Tarreau [Tue, 13 Oct 2015 12:45:29 +0000 (14:45 +0200)] 
DOC: move the stats socket documentation from config to management

The documentation of the stats part is much more related to management
than to the configuration, move it there.

9 years agoDOC: add the "management" documentation
Willy Tarreau [Tue, 13 Oct 2015 12:40:55 +0000 (14:40 +0200)] 
DOC: add the "management" documentation

This doc explains how to start/stop haproxy, what signals are used
and a few debugging tricks. It's far from being complete but should
already help a number of users.

The stats part will be taken from the config doc.

9 years agoDOC: mention the "namespace" options for bind and server lines
Willy Tarreau [Tue, 13 Oct 2015 12:50:22 +0000 (14:50 +0200)] 
DOC: mention the "namespace" options for bind and server lines

It was only in the network-namespaces doc, but it needs to be
present in the config doc as well.

9 years agoMEDIUM: server: implement TCP_USER_TIMEOUT on the server
Willy Tarreau [Tue, 13 Oct 2015 14:16:41 +0000 (16:16 +0200)] 
MEDIUM: server: implement TCP_USER_TIMEOUT on the server

This is equivalent to commit 2af207a ("MEDIUM: tcp: implement tcp-ut
bind option to set TCP_USER_TIMEOUT") except that this time it works
on the server side. The purpose is to detect dead server connections
even when checks are rare, disabled, or after a soft reload (since
checks are disabled there as well), and to ensure client connections
will get killed faster.

9 years agoBUG/MINOR: config: make the stats socket pass the correct proxy to the parsers
Willy Tarreau [Tue, 13 Oct 2015 13:06:57 +0000 (15:06 +0200)] 
BUG/MINOR: config: make the stats socket pass the correct proxy to the parsers

Baptiste reported a segfault when the "id" keyword was passed on the
"stats socket" line. The problem is related to the fact that the stats
parser stats_parse_global() passes curpx instead of global.stats_fe to
the keyword parser. Indeed, curpx being a pointer to the proxy in the
current section, it is not correct here since the global section does
not describe a proxy. It's just by pure luck that only bind_parse_id()
uses the proxy since any other keyword parser could use it as well.

The bug has no impact since the id specified here is not usable at all
and can be discarded from a faulty configuration.

This fix must be backported to 1.5.

9 years agoBUG/MEDIUM: lua: direction test failed
Thierry FOURNIER [Tue, 13 Oct 2015 12:25:11 +0000 (14:25 +0200)] 
BUG/MEDIUM: lua: direction test failed

Lua needs to known the direction of the http data processed (request or
response). It checks the flag SMP_OPT_DIR_REQ, buf this flag is 0. This patch
correctly checks the flags after applying the SMP_OPT_DIR mask.

9 years agoDOC: stats paramaters available in frontend
Baptiste Assmann [Mon, 12 Oct 2015 18:30:24 +0000 (20:30 +0200)] 
DOC: stats paramaters available in frontend

All stats directive are now available in both frontend and backend
sections.

9 years agoDOC: backend section missing parameters
Baptiste Assmann [Mon, 12 Oct 2015 18:22:55 +0000 (20:22 +0200)] 
DOC: backend section missing parameters

One parameter was missing in the proxy paramater list.
One parameter was not alphabeticaly sorted.

9 years agoDOC: global section missing parameters
Baptiste Assmann [Mon, 12 Oct 2015 18:21:23 +0000 (20:21 +0200)] 
DOC: global section missing parameters

Some parameters were missing in the global paramater list.
A few parameters were not alphabeticaly sorted.

9 years agoBUILD: enable build on Linux/s390x
Neale Ferguson [Mon, 12 Oct 2015 18:58:51 +0000 (20:58 +0200)] 
BUILD: enable build on Linux/s390x

I would like to contribute the following fix to enable the Linux s390x
platform. The fix was built against today's git master. I've attached the
patch for review. Depending on your buildbot/jenkins/? requirements I can
set up a virtual machine for automated building/testing of the package in
this environment.

9 years agoBUG/MINOR: Handle interactive mode in cli handler
Andrew Hayworth [Fri, 2 Oct 2015 15:08:10 +0000 (15:08 +0000)] 
BUG/MINOR: Handle interactive mode in cli handler

A previous commit broke the interactive stats cli prompt. Specifically,
it was not clear that we could be in STAT_CLI_PROMPT when we get to
the output functions for the cli handler, and the switch statement did
not handle this case. We would then fall through to the default
statement, which was recently changed to set error flags on the socket.
This in turn causes the socket to be closed, which is not what we wanted
in this specific case.

To fix, we add a case for STAT_CLI_PROMPT, and simply break out of the
switch statement.

Testing:
 - Connected to unix stats socket, issued 'prompt', observed that I
   could issue multiple consecutive commands.
 - Connected to unix stats socket, issued 'prompt', observed that socket
   timed out after inactivity expired.
 - Connected to unix stats socket, issued 'prompt' then 'set timeout cli
   5', observed that socket timed out after 5 seconds expired.
 - Connected to unix stats socket, issued invalid commands, received
   usage output.
 - Connected to unix stats socket, issued 'show info', received info
   output and socket disconnected.
 - Connected to unix stats socket, issued 'show stat', received stats
   output and socket disconnected.
 - Repeated above tests with TCP stats socket.

[wt: no backport needed, this was introduced during the applet rework in 1.6]

9 years agoMINOR: lua: fix a spelling error in some error messages
Vincent Bernat [Tue, 6 Oct 2015 14:05:59 +0000 (16:05 +0200)] 
MINOR: lua: fix a spelling error in some error messages

"unknown" was spelled "unkown".

9 years agoBUG/MEDIUM: logs: fix time zone offset format in RFC5424
Dragan Dosen [Fri, 9 Oct 2015 19:31:43 +0000 (21:31 +0200)] 
BUG/MEDIUM: logs: fix time zone offset format in RFC5424

The time zone offset format used in function update_log_hdr_rfc5424() was
missing ":" as a separator.

9 years agoMINOR: ssl: Add callbacks to set DH/ECDH params for generated certificates
Christopher Faulet [Fri, 9 Oct 2015 09:46:32 +0000 (11:46 +0200)] 
MINOR: ssl: Add callbacks to set DH/ECDH params for generated certificates

Now, A callback is defined for generated certificates to set DH parameters for
ephemeral key exchange when required.
In same way, when possible, we also defined Elliptic Curve DH (ECDH) parameters.

9 years agoMINOR: ssl: Add support for EC for the CA used to sign generated certificates
Christopher Faulet [Fri, 9 Oct 2015 09:15:03 +0000 (11:15 +0200)] 
MINOR: ssl: Add support for EC for the CA used to sign generated certificates

This is done by adding EVP_PKEY_EC type in supported types for the CA private
key when we get the message digest used to sign a generated X509 certificate.
So now, we support DSA, RSA and EC private keys.

And to be sure, when the type of the private key is not directly supported, we
get its default message digest using the function
'EVP_PKEY_get_default_digest_nid'.

We also use the key of the default certificate instead of generated it. So we
are sure to use the same key type instead of always using a RSA key.

9 years agoMINOR: ssl: Read the file used to generate certificates in any order
Christopher Faulet [Fri, 9 Oct 2015 08:53:31 +0000 (10:53 +0200)] 
MINOR: ssl: Read the file used to generate certificates in any order

the file specified by the SSL option 'ca-sign-file' can now contain the CA
certificate used to dynamically generate certificates and its private key in any
order.

9 years agoBUILD: ssl: fix build error introduced by recent commit
Willy Tarreau [Fri, 9 Oct 2015 10:10:13 +0000 (12:10 +0200)] 
BUILD: ssl: fix build error introduced by recent commit

Commit d2cab92 ("BUG/MINOR: ssl: fix management of the cache where forged
certificates are stored") removed some needed #ifdefs resulting in ssl not
building on older openssl versions where SSL_CTRL_SET_TLSEXT_HOSTNAME is
not defined :

src/ssl_sock.c: In function 'ssl_sock_load_ca':
src/ssl_sock.c:2504: error: 'ssl_ctx_lru_tree' undeclared (first use in this function)
src/ssl_sock.c:2504: error: (Each undeclared identifier is reported only once
src/ssl_sock.c:2504: error: for each function it appears in.)
src/ssl_sock.c:2505: error: 'ssl_ctx_lru_seed' undeclared (first use in this function)
src/ssl_sock.c: In function 'ssl_sock_close':
src/ssl_sock.c:3095: error: 'ssl_ctx_lru_tree' undeclared (first use in this function)
src/ssl_sock.c: In function '__ssl_sock_deinit':
src/ssl_sock.c:5367: error: 'ssl_ctx_lru_tree' undeclared (first use in this function)
make: *** [src/ssl_sock.o] Error 1

Reintroduce the ifdefs around the faulty areas.

9 years agoMINOR: ssl: Release Servers SSL context when HAProxy is shut down
Christopher Faulet [Wed, 29 Jul 2015 11:02:40 +0000 (13:02 +0200)] 
MINOR: ssl: Release Servers SSL context when HAProxy is shut down

[wt: could be backported to 1.5 as well]

9 years agoBUG/MINOR: ssl: fix management of the cache where forged certificates are stored
Christopher Faulet [Tue, 28 Jul 2015 14:03:47 +0000 (16:03 +0200)] 
BUG/MINOR: ssl: fix management of the cache where forged certificates are stored

First, the LRU cache must be initialized after the configuration parsing to
correctly set its size.
Next, the function 'ssl_sock_set_generated_cert' returns -1 when an error occurs
(0 if success). In that case, the caller is responsible to free the memory
allocated for the certificate.
Finally, when a SSL certificate is generated by HAProxy but cannot be inserted
in the cache, it must be freed when the SSL connection is closed. This happens
when 'tune.ssl.ssl-ctx-cache-size' is set to 0.

9 years agoBUG/MINOR: http: Add OPTIONS in supported http methods (found by find_http_meth)
Christopher Faulet [Fri, 31 Jul 2015 12:26:57 +0000 (14:26 +0200)] 
BUG/MINOR: http: Add OPTIONS in supported http methods (found by find_http_meth)

The 'OPTIONS' method was not in the list of supported HTTP methods and
find_http_meth return HTTP_METH_OTHER instead of HTTP_METH_OPTIONS.

[wt: this fix needs to be backported at least to 1.5, 1.4 and 1.3]

9 years agoMINOR: lru: do not allocate useless memory in lru64_lookup
Christopher Faulet [Tue, 28 Jul 2015 14:01:07 +0000 (16:01 +0200)] 
MINOR: lru: do not allocate useless memory in lru64_lookup

lru64_lookup function was added in a previous patch of mine. This one
just remove a useless memory allocation.

9 years agoBUILD: Fix the build on OSX (htonll/ntohll)
Joseph Lynch [Wed, 7 Oct 2015 02:43:18 +0000 (19:43 -0700)] 
BUILD: Fix the build on OSX (htonll/ntohll)

htonll and ntohll were defined in 5b4dd683cb but on osx they are already
defined in sys/_endian.h. So, we check if they are defined before
declaring them.

[wt: no backport needed]

9 years agoMINOR: debug: enable memory poisonning to use byte 0
Willy Tarreau [Thu, 8 Oct 2015 12:12:13 +0000 (14:12 +0200)] 
MINOR: debug: enable memory poisonning to use byte 0

When debugging an issue, sometimes it can be useful to be able to use
byte 0 to poison memory areas, resulting in the same effect as a calloc().
This patch changes the default mem_poison_byte to -1 to disable it so that
all positive values are usable.

9 years agoMEDIUM: init: support a list of files on the command line
Willy Tarreau [Thu, 8 Oct 2015 09:58:48 +0000 (11:58 +0200)] 
MEDIUM: init: support a list of files on the command line

HAProxy could already support being passed a file list on the command
line, by passing multiple times "-f" followed by a file name. People
have been complaining that it made it hard to pass file lists from init
scripts.

This patch introduces an end of arguments using the common "--" tag,
after which only file names may appear. These files are then added to
the existing list of other files specified using -f and are loaded in
their declaration order. Thus it becomes possible to do something like
this :

    haproxy -sf $(pidof haproxy) -- /etc/haproxy/global.cfg /etc/haproxy/customers/*.cfg

9 years agoMEDIUM: init: support more command line arguments after pid list
Willy Tarreau [Thu, 8 Oct 2015 09:32:32 +0000 (11:32 +0200)] 
MEDIUM: init: support more command line arguments after pid list

Given that all command line arguments start with a '-' and that
no pid number can start with this character, there's no constraint
to make the pid list the last argument. Let's relax this rule.

9 years agoBUG/MEDIUM: lua: force server-close mode on Lua services
Willy Tarreau [Wed, 7 Oct 2015 18:20:28 +0000 (20:20 +0200)] 
BUG/MEDIUM: lua: force server-close mode on Lua services

Thierry reported that keep-alive still didn't cope well with Lua
services. The reason is that for now applets have to be closed at
the end of a transaction so we want to work in server-close mode,
which isn't noticeable by the client since it still sees keep-alive.
Additionally we want to enable the request body transfer analyser
which will be needed to synchronize with the response analyser to
indicate the end of the transfer.

9 years agoCLEANUP: cli: ensure we can never double-free error messages
Willy Tarreau [Wed, 7 Oct 2015 18:00:24 +0000 (20:00 +0200)] 
CLEANUP: cli: ensure we can never double-free error messages

The release handler used to be called twice for some time and just by
pure luck we never ended up double-freeing the data there. Add a NULL
to ensure this can never happen should a future change permit this
situation again.

9 years ago[RELEASE] Released version 1.6-dev7 v1.6-dev7
Willy Tarreau [Tue, 6 Oct 2015 10:13:56 +0000 (12:13 +0200)] 
[RELEASE] Released version 1.6-dev7

Released version 1.6-dev7 with the following main changes :
    - MINOR: cli: Dump all resolvers stats if no resolver section is given
    - BUG: config: external-check command validation is checking for incorrect arguments.
    - DOC: documentation format cleanups
    - DOC: lua: few typos.
    - BUG/MEDIUM: str2ip: make getaddrinfo() consider local address selection policy
    - BUG/MEDIUM: logs: segfault writing to log from Lua
    - DOC: fix lua use-service example
    - MINOR: payload: add support for tls session ticket ext
    - 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
    - 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

9 years agoMINOR: cli: Dump all resolvers stats if no resolver section is given
Andrew Hayworth [Fri, 2 Oct 2015 20:33:01 +0000 (20:33 +0000)] 
MINOR: cli: Dump all resolvers stats if no resolver section is given

This commit adds support for dumping all resolver stats. Specifically
if a command 'show stats resolvers' is issued withOUT a resolver section
id, we dump all known resolver sections. If none are configured, a
message is displayed indicating that.

9 years agoBUG: config: external-check command validation is checking for incorrect arguments.
Ben Cabot [Wed, 16 Sep 2015 11:07:51 +0000 (12:07 +0100)] 
BUG: config: external-check command validation is checking for incorrect arguments.

When using the external-check command option HAProxy was failing to
start with a fatal error "'external-check' cannot handle unexpected
argument". When looking at the code it was looking for an incorrect
argument. Also correcting an Alert message text as spotted by by
PiBa-NL.

9 years agoDOC: lua: few typos.
David Carlier [Fri, 2 Oct 2015 10:59:38 +0000 (11:59 +0100)] 
DOC: lua: few typos.

9 years agoMINOR: http/tcp: fill the avalaible actions
Thierry FOURNIER [Fri, 2 Oct 2015 06:24:51 +0000 (08:24 +0200)] 
MINOR: http/tcp: fill the avalaible actions

This patch adds a function that generates the list of avalaible actions
for the error message.

9 years agoDOC: lua: update doc according with the last Lua changes
Thierry FOURNIER [Thu, 1 Oct 2015 13:00:42 +0000 (15:00 +0200)] 
DOC: lua: update doc according with the last Lua changes

The impact of the register_action() was not repported.

9 years agoDOC: lua: update Lua doc
Thierry FOURNIER [Thu, 1 Oct 2015 12:49:33 +0000 (14:49 +0200)] 
DOC: lua: update Lua doc

 - Removes the Lua action reference
 - Update the tune.lu.service-timeout

9 years agoMINOR: lua: rename the tune.lua.applet-timeout
Thierry FOURNIER [Thu, 1 Oct 2015 06:42:31 +0000 (08:42 +0200)] 
MINOR: lua: rename the tune.lua.applet-timeout

The name of applet is "service", so this patch renames the
tune.lua.applet-timeout to tune.lua.service-timeout

9 years agoBUG/MEDIUM: str2ip: make getaddrinfo() consider local address selection policy
Dmitry Sivachenko [Thu, 1 Oct 2015 23:01:58 +0000 (01:01 +0200)] 
BUG/MEDIUM: str2ip: make getaddrinfo() consider local address selection policy

When first parameter to getaddrinfo() is not NULL (it is always not NULL
in str2ip()), on Linux AI_PASSIVE value for ai_flags is ignored. On
FreeBSD, when AI_PASSIVE is specified and hostname parameter is not NULL,
getaddrinfo() ignores local address selection policy, always returning
AAAA record. Pass zero ai_flags to behave correctly on FreeBSD, this
change should be no-op for Linux.

This fix should be backported to 1.5 as well, after some observation
period.

9 years agoBUG/MEDIUM: logs: segfault writing to log from Lua
Dragan Dosen [Thu, 1 Oct 2015 11:18:13 +0000 (13:18 +0200)] 
BUG/MEDIUM: logs: segfault writing to log from Lua

Michael Ezzell reported a bug causing haproxy to segfault during startup
when trying to send syslog message from Lua. The function __send_log() can
be called with *p that is NULL and/or when the configuration is not fully
parsed, as is the case with Lua.

This patch fixes this problem by using individual vectors instead of the
pre-generated strings log_htp and log_htp_rfc5424.

Also, this patch fixes a problem causing haproxy to write the wrong pid in
the logs -- the log_htp(_rfc5424) strings were generated at the haproxy
start, but "pid" value would be changed after haproxy is started in
daemon/systemd mode.

9 years agoDOC: fix lua use-service example
Pieter Baauw [Thu, 1 Oct 2015 20:47:12 +0000 (22:47 +0200)] 
DOC: fix lua use-service example

9 years agoMEDIUM: lua: change the timeout execution
Thierry FOURNIER [Mon, 28 Sep 2015 23:59:42 +0000 (01:59 +0200)] 
MEDIUM: lua: change the timeout execution

Now, the Lua timeout is relative to the effective run time.
When the Lua is waiting for I/O, this time is not took in
lua run time account.

9 years agoMINOR: lua: remove the run flag
Thierry FOURNIER [Mon, 28 Sep 2015 23:41:25 +0000 (01:41 +0200)] 
MINOR: lua: remove the run flag

Only the main execution function can set the run flag, because it is
the last function before the execution time.

This patch removes the flag set by another function. It will be used
by the new lua timeout counter.

9 years agoBUG/MEDIUM: server: fix misuse of format string in load-server-state's warnings
Willy Tarreau [Tue, 29 Sep 2015 16:38:47 +0000 (18:38 +0200)] 
BUG/MEDIUM: server: fix misuse of format string in load-server-state's warnings

Commit e11cfcd ("MINOR: config: new backend directives:
load-server-state-from-file and server-state-file-name") introduced a bug
which can cause haproxy to crash upon startup by sending user-controlled
data in a format string when emitting a warning. Fix the way the warning
message is built to avoid this.

No backport is needed, this was introduced in 1.6-dev6 only.

9 years agoBUILD: server: fix build warnings introduced by load-server-state
Willy Tarreau [Tue, 29 Sep 2015 16:32:57 +0000 (18:32 +0200)] 
BUILD: server: fix build warnings introduced by load-server-state

Commit e11cfcd ("MINOR: config: new backend directives:
load-server-state-from-file and server-state-file-name") caused these
warnings when building with Clang :

src/server.c:1972:21: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
                            (srv_uweight < 0) || (srv_uweight > SRV_UWGHT_MAX))
                             ~~~~~~~~~~~ ^ ~
src/server.c:1980:21: warning: comparison of unsigned expression < 0 is always false [-Wtautological-compare]
                            (srv_iweight < 0) || (srv_iweight > SRV_UWGHT_MAX))
                             ~~~~~~~~~~~ ^ ~

Indeed, srv_iweight and srv_uweight are unsigned. Just drop the offending test.

9 years agoBUILD: tcp: use IPPROTO_IP when SOL_IP is not available
Willy Tarreau [Tue, 29 Sep 2015 16:19:32 +0000 (18:19 +0200)] 
BUILD: tcp: use IPPROTO_IP when SOL_IP is not available

Dmitry Sivachenko reported a build failure on FreeBSD due to SOL_IP not
being defined. IPPROTO_IP must be used there instead.

9 years agoCLEANUP: tcp: silent-drop: only drain the connection when quick-ack is disabled
Willy Tarreau [Tue, 29 Sep 2015 16:15:01 +0000 (18:15 +0200)] 
CLEANUP: tcp: silent-drop: only drain the connection when quick-ack is disabled

The conn_sock_drain() call is only there to force the system to ACK
pending data in case of TCP_QUICKACK so that the client doesn't retransmit,
otherwise it leads to a real RST making the feature useless. There's no
point in draining the connection when quick ack cannot be disabled, so
let's move the call inside the ifdef part.

9 years agoBUG/MINOR: tcp: make silent-drop always force a TCP reset
Willy Tarreau [Tue, 29 Sep 2015 16:11:32 +0000 (18:11 +0200)] 
BUG/MINOR: tcp: make silent-drop always force a TCP reset

The silent-drop action is supposed to close with a TCP reset that is
either not sent or not too far. But since it's on the client-facing
side, the socket's lingering is enabled by default and the RST only
occurs if some pending unread data remain in the queue when closing.
This causes some clean shutdowns to occur with retransmits, which is
not good at all. Force linger_risk on the socket to flush all data
and destroy the socket.

No backport is needed, this was introduced in 1.6-dev6.

9 years agoDOC: reorder misplaced res.ssl_hello_type in the doc
Willy Tarreau [Tue, 29 Sep 2015 12:06:59 +0000 (14:06 +0200)] 
DOC: reorder misplaced res.ssl_hello_type in the doc

Entries are supposed to be in alphabetical order.

9 years agoMINOR: payload: add support for tls session ticket ext
Pradeep Jindal [Tue, 29 Sep 2015 04:42:57 +0000 (10:12 +0530)] 
MINOR: payload: add support for tls session ticket ext

req.ssl_st_ext : integer
  Returns 0 if the client didn't send a SessionTicket TLS Extension (RFC5077)
  Returns 1 if the client sent SessionTicket TLS Extension
  Returns 2 if the client also sent non-zero length TLS SessionTicket

9 years agoDOC: documentation format cleanups
Cyril Bonté [Mon, 28 Sep 2015 21:16:06 +0000 (23:16 +0200)] 
DOC: documentation format cleanups

Chapter "Mailers" was missing from the summary, tabulations were used and
several lines exceeded 80 columns : some lines still exceeds the 80 columns
limit but are left as is, as it mostly concerns syntax and configuration
examples.

9 years ago[RELEASE] Released version 1.6-dev6 v1.6-dev6
Willy Tarreau [Mon, 28 Sep 2015 21:46:27 +0000 (23:46 +0200)] 
[RELEASE] Released version 1.6-dev6

Released version 1.6-dev6 with the following main changes :
    - 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
    - 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
    - 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: 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.
    - 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
    - DOC: add references to rise/fall for the fastinter explanation
    - MINOR: support cpu-map feature through the compile option USE_CPU_AFFINITY on FreeBSD
    - 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
    - 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

9 years agoDOC: add URLs to optional libraries in the README
Willy Tarreau [Mon, 28 Sep 2015 20:36:21 +0000 (22:36 +0200)] 
DOC: add URLs to optional libraries in the README

It's nice to suggest people how to build with certain libraries but
it's nicer to tell them where to fetch them.

9 years agoMEDIUM: tcp: add new tcp action "silent-drop"
Willy Tarreau [Sun, 23 Aug 2015 23:43:45 +0000 (01:43 +0200)] 
MEDIUM: tcp: add new tcp action "silent-drop"

This stops the evaluation of the rules and makes the client-facing
connection suddenly disappear using a system-dependant way that tries
to prevent the client from being notified. The effect it then that the
client still sees an established connection while there's none on
HAProxy. The purpose is to achieve a comparable effect to "tarpit"
except that it doesn't use any local resource at all on the machine
running HAProxy. It can resist much higher loads than "tarpit", and
slow down stronger attackers. It is important to undestand the impact
of using this mechanism. All stateful equipments placed between the
client and HAProxy (firewalls, proxies, load balancers) will also keep
the established connection for a long time and may suffer from this
action. On modern Linux systems running with enough privileges, the
TCP_REPAIR socket option is used to block the emission of a TCP
reset. On other systems, the socket's TTL is reduced to 1 so that the
TCP reset doesn't pass the first router, though it's still delivered to
local networks.

9 years agoDOC: remove outdated actions lists on tcp-request/response
Willy Tarreau [Mon, 28 Sep 2015 16:47:38 +0000 (18:47 +0200)] 
DOC: remove outdated actions lists on tcp-request/response

The valid actions are enumerated in the text, and the small set listed
in the definition is not accurate.

9 years agoBUG/MEDIUM: tcp: fix inverted condition to call custom actions
Willy Tarreau [Mon, 28 Sep 2015 15:50:10 +0000 (17:50 +0200)] 
BUG/MEDIUM: tcp: fix inverted condition to call custom actions

tcp-request connection had an inverted condition on action_ptr, resulting
in no registered actions to be usable since commit 4214873 ("MEDIUM: actions:
remove ACTION_STOP") merged in 1.6-dev5. Very few new actions were impacted.
No backport is needed.

9 years agoMEDIUM: logs: pass the trailing "\n" as an iovec
Dragan Dosen [Mon, 28 Sep 2015 14:01:03 +0000 (16:01 +0200)] 
MEDIUM: logs: pass the trailing "\n" as an iovec

This patch passes the trailing "\n" as an iovec in the function
__send_log(), so that we don't need to modify the original log message.

9 years agoMEDIUM: logs: have global.log_send_hostname not contain the trailing space
Dragan Dosen [Mon, 28 Sep 2015 11:28:21 +0000 (13:28 +0200)] 
MEDIUM: logs: have global.log_send_hostname not contain the trailing space

This patch unifies global.log_send_hostname addition in the log header
processing.

9 years agoDOC: mention support for the RFC5424 syslog message format
Dragan Dosen [Mon, 28 Sep 2015 15:16:47 +0000 (17:16 +0200)] 
DOC: mention support for the RFC5424 syslog message format

Document the new log "format" argument and the "log-format-sd" statement.

9 years agoMEDIUM: init: completely deallocate unused peers
Willy Tarreau [Mon, 28 Sep 2015 14:39:25 +0000 (16:39 +0200)] 
MEDIUM: init: completely deallocate unused peers

When peers are stopped due to not being running on the appropriate
process, we want to completely release them and unregister their signals
and task in order to ensure there's no way they may be called in the
future.

Note: ideally we should have a list of all tables attached to a peers
section being disabled in order to unregister them and void their
sync_task. It doesn't appear to be *that* easy for now.

9 years agoBUG/MEDIUM: proxy: do not wake stopped proxies' tasks during soft_stop()
Willy Tarreau [Mon, 28 Sep 2015 14:35:04 +0000 (16:35 +0200)] 
BUG/MEDIUM: proxy: do not wake stopped proxies' tasks during soft_stop()

When performing a soft stop, we used to wake up every proxy's task and
each of their table's task. The problem is that since we're able to stop
proxies and peers not bound to a specific process, we may end up calling
random junk by doing so of the proxy we're waking up is already stopped.
This causes a segfault to appear during soft reloads for old processes
not bound to a peers section if such a section exists in other processes.

Let's only consider proxies that are not stopped when doing this.

This fix must be backported to 1.5 which also has the same issue.

9 years agoBUG/MEDIUM: proxy: ignore stopped peers
Willy Tarreau [Mon, 28 Sep 2015 14:27:44 +0000 (16:27 +0200)] 
BUG/MEDIUM: proxy: ignore stopped peers

Since commit f83d3fe ("MEDIUM: init: stop any peers section not bound
to the correct process"), it is possible to stop unused peers on certain
processes. The problem is that the pause/resume/stop functions are not
aware of this and will pass a NULL proxy pointer to the respective
functions, resulting in segfaults in unbound processes during soft
restarts.

Properly check that the peers' frontend is still valid before calling
them.

This bug also affects 1.5 so the fix must be backported. Note that this
fix is not enough to completely get rid of the segfault, the next one
is needed as well.

9 years agoDOC: fix some broken unexpected unicode chars in the Lua doc.
Willy Tarreau [Mon, 28 Sep 2015 13:39:10 +0000 (15:39 +0200)] 
DOC: fix some broken unexpected unicode chars in the Lua doc.

A few chars didn't render properly in some terminals and had no
reason for being there.

9 years agoDOC: lua: some documentation update
Thierry FOURNIER [Fri, 25 Sep 2015 19:43:56 +0000 (21:43 +0200)] 
DOC: lua: some documentation update

this update embbeds some fix of existing function, and the applet documentation.

9 years agoDOC: add David Carlier as maintainer of da.c
Willy Tarreau [Mon, 28 Sep 2015 11:37:30 +0000 (13:37 +0200)] 
DOC: add David Carlier as maintainer of da.c

David is willing to handle any issue related to da.c.

9 years agoDOC: README: DeviceAtlas sample configuration updates
David Carlier [Fri, 25 Sep 2015 13:06:08 +0000 (14:06 +0100)] 
DOC: README: DeviceAtlas sample configuration updates

Needs to distinguish the convertor and the fetch type samples.
More explanations are made about their specific purposes.

9 years agoDOC: DeviceAtlas new keywords
David Carlier [Fri, 25 Sep 2015 13:09:21 +0000 (14:09 +0100)] 
DOC: DeviceAtlas new keywords

A new entry in the configuration's documentation to set optionally
the name of the client's cookie used for the detection.

9 years agoMAJOR: da: Update of the DeviceAtlas API module
David Carlier [Fri, 25 Sep 2015 13:16:30 +0000 (14:16 +0100)] 
MAJOR: da: Update of the DeviceAtlas API module

Introduction of the new keyword about the client's cookie name
via a new config entry.

Splits the work between the original convertor and the new fetch type.
The latter iterates through the whole list of HTTP headers but first,
make sure the request data are ready to process and set the input
to the string type rightly.

The API is then able to filter itself which headers are gueninely useful,
with a special care of the Client's cookie.

[WT: the immediate impact for the end user is that configs making use of
    "da-csv" won't load anymore and will need to be modified to use either
    "da-csv-conv" or "da-csv-fetch"]

9 years agoMINOR: global: Few new struct fields for da module
David Carlier [Fri, 25 Sep 2015 13:13:44 +0000 (14:13 +0100)] 
MINOR: global: Few new struct fields for da module

The name and length of the client cookie, useful for extracting
cookie value's function and a simple bitfield one to define if
set or not.

9 years agoMINOR: proto_http: Externalisation of previously internal functions
David Carlier [Fri, 25 Sep 2015 13:10:50 +0000 (14:10 +0100)] 
MINOR: proto_http: Externalisation of previously internal functions

Needs to expose the HTTP headers 'iterator' and the client's cookie
value extraction functions.

9 years agoMEDIUM: logs: add a new RFC5424 log-format for the structured-data
Dragan Dosen [Fri, 25 Sep 2015 17:17:44 +0000 (19:17 +0200)] 
MEDIUM: logs: add a new RFC5424 log-format for the structured-data

This patch adds a new RFC5424-specific log-format for the structured-data
that is automatically send by __send_log() when the sender is in RFC5424
mode.

A new statement "log-format-sd" should be used in order to set log-format
for the structured-data part in RFC5424 formatted syslog messages.
Example:

    log-format-sd [exampleSDID@1234\ bytes=\"%B\"\ status=\"%ST\"]

9 years agoMEDIUM: logs: add support for RFC5424 header format per logger
Dragan Dosen [Tue, 22 Sep 2015 14:05:32 +0000 (16:05 +0200)] 
MEDIUM: logs: add support for RFC5424 header format per logger

The function __send_log() iterates over senders and passes the header as
the first vector to sendmsg(), thus it can send a logger-specific header
in each message.

A new logger arguments "format rfc5424" should be used in order to enable
RFC5424 header format. For example:

    log 10.2.3.4:1234 len 2048 format rfc5424 local2 info

9 years agoMEDIUM: logs: remove the hostname, tag and pid part from the logheader
Dragan Dosen [Sat, 19 Sep 2015 20:35:44 +0000 (22:35 +0200)] 
MEDIUM: logs: remove the hostname, tag and pid part from the logheader

At the moment we have to call snprintf() for every log line just to
rebuild a constant. Thanks to sendmsg(), we send the message in 3 parts:
time-based header, proxy-specific hostname+log-tag+pid, session-specific
message.

9 years agoMEDIUM: log: use a separate buffer for the header and for the message
Dragan Dosen [Sat, 19 Sep 2015 20:09:02 +0000 (22:09 +0200)] 
MEDIUM: log: use a separate buffer for the header and for the message

Make sendmsg() use two vectors, one for the message header that is updated
by update_log_hdr() and one for the message buffer.

9 years agoMEDIUM: log: replace sendto() with sendmsg() in __send_log()
Dragan Dosen [Wed, 16 Sep 2015 16:25:42 +0000 (18:25 +0200)] 
MEDIUM: log: replace sendto() with sendmsg() in __send_log()

This patch replaces sendto() with sendmsg() in __send_log() and makes use
of an iovec to send the log message.

9 years agoBUG/MEDIUM: main: Freeing a bunch of static pointers
David Carlier [Fri, 25 Sep 2015 11:02:25 +0000 (12:02 +0100)] 
BUG/MEDIUM: main: Freeing a bunch of static pointers

static_table_key, get_http_auth_buff and swap_buffer static variables
are now freed during deinit and the two previously new functions are
called as well. In addition, the 'trash' string buffer is cleared.

9 years agoMINOR: chunk: New function free_trash_buffers()
David Carlier [Fri, 25 Sep 2015 10:58:12 +0000 (11:58 +0100)] 
MINOR: chunk: New function free_trash_buffers()

This new function is meant to be called in the general deinit phase,
to free those two internal chunks.

9 years agoMINOR: cfgparse: New function cfg_unregister_sections()
David Carlier [Fri, 25 Sep 2015 10:49:18 +0000 (11:49 +0100)] 
MINOR: cfgparse: New function cfg_unregister_sections()

A new function introduced meant to be called during general deinit phase.
During the configuration parsing, the section entries are all allocated.
This new function free them.

9 years agoMEDIUM: config: set tune.maxrewrite to 1024 by default
Willy Tarreau [Mon, 28 Sep 2015 11:53:23 +0000 (13:53 +0200)] 
MEDIUM: config: set tune.maxrewrite to 1024 by default

The tune.maxrewrite parameter used to be pre-initialized to half of
the buffer size since the very early days when buffers were very small.
It has grown to absurdly large values over the years to reach 8kB for a
16kB buffer. This prevents large requests from being accepted, which is
the opposite of the initial goal.

Many users fix it to 1024 which is already quite large for header
addition.

So let's change the default setting policy :
  - pre-initialize it to 1024
  - let the user tweak it
  - in any case, limit it to tune.bufsize / 2

This results in 15kB usable to buffer HTTP messages instead of 8kB, and
doesn't affect existing configurations which already force it.

9 years agoBUG/MINOR: config: check that tune.bufsize is always positive
Willy Tarreau [Mon, 28 Sep 2015 11:49:53 +0000 (13:49 +0200)] 
BUG/MINOR: config: check that tune.bufsize is always positive

We must not accept negative values for tune.bufsize as they will only
result in crashing the process during the parsing.

9 years agoMINOR: lua: add AppletHTTP class and service
Thierry FOURNIER [Fri, 18 Sep 2015 07:04:27 +0000 (09:04 +0200)] 
MINOR: lua: add AppletHTTP class and service

This class is used by Lua code for running as an applet called in HTTP mode
It defines also the associated lua service

9 years agoMINOR: lua: add AppletTCP class and service
Thierry FOURNIER [Sat, 19 Sep 2015 10:36:17 +0000 (12:36 +0200)] 
MINOR: lua: add AppletTCP class and service

This class is used by Lua code for running as an applet called in TCP mode.
It defines also the lua service.

9 years agoMINOR: stream/applet: add use-service action
Thierry FOURNIER [Sun, 27 Sep 2015 17:29:33 +0000 (19:29 +0200)] 
MINOR: stream/applet: add use-service action

This new target can be called from the frontend or the backend. It
is evaluated just before the backend choice and just before the server
choice. So, the input stream or HTTP request can be forwarded to a
server or to an internal service.

9 years agoMINOR: applet: add an execution timeout
Thierry FOURNIER [Mon, 21 Sep 2015 22:02:58 +0000 (00:02 +0200)] 
MINOR: applet: add an execution timeout

This patch only declares the execution timeout variable. The applet
must be respect or ignore it. For example an applet who doing some
network accesses and doesn't control its execution yime should use
this timeout.

9 years agoMINOR: applet: add init function
Thierry FOURNIER [Fri, 11 Sep 2015 06:50:34 +0000 (08:50 +0200)] 
MINOR: applet: add init function

this patch adds init function for the applet. the HAProxy standard
applet (peers, stats, lua) have no standard way for the applet
initialisation. This new function pointer have for goal to try to
standardize the applet initialization.