]> git.ipfire.org Git - thirdparty/haproxy.git/log
thirdparty/haproxy.git
18 years ago[MINOR] store HTTP error messages into a chunk array
Willy Tarreau [Sat, 23 Dec 2006 19:51:41 +0000 (20:51 +0100)] 
[MINOR] store HTTP error messages into a chunk array

HTTP error messages were all specific cases handled by an IF.
Now they are all in an array so that it will be easier to add
new ones. Also, the return functions now use chunks as inputs
so that it should be easier to provide alternative return
messages if needed.

18 years ago[BUILD] makefile now detects and uses git to set the version
Willy Tarreau [Sat, 23 Dec 2006 10:12:04 +0000 (11:12 +0100)] 
[BUILD] makefile now detects and uses git to set the version

If git is found during the build process, then it will be used
to set the version, the commit number and the commit date. This
way, it will not be needed anymore to update the code to change
the version. The version is the last tag, and the commit number
is the number of commits since the last tag.

18 years ago[BUILD] version and date now come from the makefile
Willy Tarreau [Fri, 22 Dec 2006 14:28:43 +0000 (15:28 +0100)] 
[BUILD] version and date now come from the makefile

18 years agoMerge branch 'master' of home:/data/git/public/haproxy-1.3
Willy Tarreau [Fri, 22 Dec 2006 13:41:19 +0000 (14:41 +0100)] 
Merge branch 'master' of home:/data/git/public/haproxy-1.3

18 years ago[MINOR] forgot to include common/tools.h in the archive.
Willy Tarreau [Fri, 22 Dec 2006 13:40:41 +0000 (14:40 +0100)] 
[MINOR] forgot to include common/tools.h in the archive.

tools.h contains several commonly-used macros such as MIN()
and MAX().

18 years ago[BUILD] updated .gitignore
Willy Tarreau [Tue, 19 Dec 2006 17:03:12 +0000 (18:03 +0100)] 
[BUILD] updated .gitignore

18 years ago[DOC] added a short descriptive of the backend mechanism
Willy Tarreau [Sun, 17 Dec 2006 23:24:49 +0000 (00:24 +0100)] 
[DOC] added a short descriptive of the backend mechanism

18 years ago[BUILD] fixed the "git-tar" target in the Makefile
Willy Tarreau [Sun, 17 Dec 2006 23:15:06 +0000 (00:15 +0100)] 
[BUILD] fixed the "git-tar" target in the Makefile

The git-tar target did not work correctly anymore, probably because
of a recent change in the output of "git-describe --tags". This is
now fixed.

18 years ago[DOC] updated TODO with remaining l7-switch work
Willy Tarreau [Sun, 17 Dec 2006 22:32:53 +0000 (23:32 +0100)] 
[DOC] updated TODO with remaining l7-switch work

18 years ago[MAJOR] merged the 'setbe' actions to switch the backend on a regex
Willy Tarreau [Sun, 17 Dec 2006 22:15:24 +0000 (23:15 +0100)] 
[MAJOR] merged the 'setbe' actions to switch the backend on a regex

Sin Yu's patch to permit to change the proxy from a regex was merged
with little changes :
  - req_cap/rsp_cap are not reassigned to the new proxy, they stay
    attached to the frontend

  - the actions have been renamed "reqsetbe" and "reqisetbe" for
    "set BackEnd".

  - the buffer is not reset after the switch, instead, the headers are
    parsed again by the backend

  - in Sin's patch, it was theorically possible to switch multiple times,
    but the switching track was lost, making it impossible to apply
    server responsesin the reverse order. Now switching is limited to
    1 action (separation between frontend and backend) but the filters
    remain.

Now it will be extremely easy to add other switching conditions, such
as host matching, URI matching, etc...

There's still a hard work to be done on the logs and stats.

18 years ago[MEDIUM] tried to clean the logs up a little bit
Willy Tarreau [Sun, 17 Dec 2006 21:55:52 +0000 (22:55 +0100)] 
[MEDIUM] tried to clean the logs up a little bit

The logs have become a real mess. It is now very hard to tell which
frontend/backend will impose its configuration for the logs. This
needs a complete rework but at least it should work.

18 years ago[MEDIUM] separated nbconn into feconn and beconn
Willy Tarreau [Sun, 17 Dec 2006 21:14:12 +0000 (22:14 +0100)] 
[MEDIUM] separated nbconn into feconn and beconn

The nbconn attribute in the proxies was not relevant anymore because
a frontend A may use backend B and both of them must account for their
respective connections. For this reason, there now are two separate
counters for frontend and backend connections.

The stats page has been updated to reflect the backend, but a separate
line entry for the frontend with error counts would be good.

Note that as of now, beconn may be higher than maxconn, because maxconn
applies to the frontend, while beconn may be increased due to sessions
passed from another frontend.

18 years ago[MAJOR] reworked ->be, ->fe and ->fi in sessions
Willy Tarreau [Sun, 17 Dec 2006 18:31:23 +0000 (19:31 +0100)] 
[MAJOR] reworked ->be, ->fe and ->fi in sessions

There was a confusion about the way to find filters and backend
parameters from sessions. The chaining has been changed between
the session and the proxy.

Now, a session knows only two proxies : one frontend (->fe) and
one backend (->be). Each proxy has a link to the proxy providing
filters and to the proxy providing backend parameters (both self
by default).

The captures (cookies and headers) have been attached to the
frontend's filters for now.

The uri_auth and the statistics are attached to the backend's
filters so that the uri can depend on a hostname for instance.

18 years ago[MINOR] add the fiprm and beprm indirections to struct proxy
Willy Tarreau [Sun, 17 Dec 2006 17:02:30 +0000 (18:02 +0100)] 
[MINOR] add the fiprm and beprm indirections to struct proxy

A proxy will be able to borrow parameters from another one.
In particular, the filters will be inheritable from another
proxy, and the backend parameters too.

18 years ago[MEDIUM] moved uri_auth check to a separate function
Willy Tarreau [Sun, 17 Dec 2006 13:52:38 +0000 (14:52 +0100)] 
[MEDIUM] moved uri_auth check to a separate function

The check of uri_auth is now in a separate function which is
checked after every backend switch, so that it will be possible
to have an uri_auth for the frontend and another one for the
backend.

18 years ago[MINOR] removed the SN_POST flag and string checks on method
Willy Tarreau [Sun, 17 Dec 2006 12:50:27 +0000 (13:50 +0100)] 
[MINOR] removed the SN_POST flag and string checks on method

Now that hreq.meth is known, use it everywhere a method is required.

18 years ago[MEDIUM] check the HTTP method after all filters have been applied
Willy Tarreau [Sun, 17 Dec 2006 12:37:46 +0000 (13:37 +0100)] 
[MEDIUM] check the HTTP method after all filters have been applied

The HTTP method is now checked and saved into hreq.meth. It will be
usable at several places instead of those dirty string comparisons.

18 years ago[MEDIUM] optimized the request parser a bit more
Willy Tarreau [Sun, 17 Dec 2006 11:05:00 +0000 (12:05 +0100)] 
[MEDIUM] optimized the request parser a bit more

Some while() constructs are not very efficient with gcc, yet they are
used to scan all the text in the start line and the headers. Replacing
them with more efficient (but ugly) loops provides a global gain of
about 2%, which is not bad at all !

18 years ago[MINOR] reorganized the request parser states to improve speed
Willy Tarreau [Sun, 17 Dec 2006 09:06:03 +0000 (10:06 +0100)] 
[MINOR] reorganized the request parser states to improve speed

The most commonly branched states have been grouped in the first
ifs.

18 years ago[MEDIUM] reorganized request handling to prepare for content-switching
Willy Tarreau [Sun, 17 Dec 2006 07:37:22 +0000 (08:37 +0100)] 
[MEDIUM] reorganized request handling to prepare for content-switching

The filters are now iterated for FE, FI, BE.

Some grey areas remain :
  - uri_auth has been propagated to the backend, but in fact it
    should be checked at every level (fe, fi, be), depending
    where it is declared, and before the filters.

  - the HTTP method and URI should be stored and propagated everywhere
    they are used. For this, we would need to first apply filters to
    be aware of filter changes which affect them.

  - there seems to be no need anymore for hdr_idx[0] being empty.
    It may contain the start line, which will slightly improve
    performance and make the code easier to read.

18 years ago[MEDIUM] move all HTTP Request-related session material to struct hreq
Willy Tarreau [Sat, 16 Dec 2006 23:05:15 +0000 (00:05 +0100)] 
[MEDIUM] move all HTTP Request-related session material to struct hreq

The req_cap, hdr_state, hdr_idx, auth_hdr and req_line have been moved
to a dedicated hreq structure in the session. It makes is easier to
add HTTP-specific fields such as SOR (start of request) and EOF (end
of headers).

It also made it possible to fix two bugs introduced by last commit :
 - end of headers not correctly detected
 - hdr_idx not freed upon one specific error during session creation

When the backend side will be reworked, it should rely on a similar
structure.

18 years ago[BUILD] debug.h had a typo. Also add FSM_PRINTF to debug FSM only.
Willy Tarreau [Sat, 16 Dec 2006 22:22:58 +0000 (23:22 +0100)] 
[BUILD] debug.h had a typo. Also add FSM_PRINTF to debug FSM only.

18 years ago[MEDIUM] make process_cli() not depend on req->h anymore
Willy Tarreau [Sat, 16 Dec 2006 18:57:26 +0000 (19:57 +0100)] 
[MEDIUM] make process_cli() not depend on req->h anymore

Local variables now keep the start and end of line at any moment.
req->h has been removed and will soon be removable from the buffer.

18 years ago[MINOR] add .gitignore
Willy Tarreau [Sat, 16 Dec 2006 18:56:22 +0000 (19:56 +0100)] 
[MINOR] add .gitignore

18 years ago[MINOR] added include/common/debug.h
Willy Tarreau [Sat, 16 Dec 2006 18:54:02 +0000 (19:54 +0100)] 
[MINOR] added include/common/debug.h

This file will provide debugging macros such as DPRINTF.

18 years ago[BUILD] last commit did not build
Willy Tarreau [Sat, 16 Dec 2006 18:00:29 +0000 (19:00 +0100)] 
[BUILD] last commit did not build

18 years ago[MEDIUM] reference and index appended request headers
Willy Tarreau [Thu, 14 Dec 2006 21:26:42 +0000 (22:26 +0100)] 
[MEDIUM] reference and index appended request headers

When headers are appended to the end of a request, they must
be indexed.

18 years ago[MAJOR] finished replacement of the client-side HTTP parser with a new one
Willy Tarreau [Mon, 4 Dec 2006 23:05:46 +0000 (00:05 +0100)] 
[MAJOR] finished replacement of the client-side HTTP parser with a new one

The code is working again, but not as clean as it could be.
Many blocks should still move to dedicated functions. req->h
must be removed everywhere and updated everytime needed.

A few functions or macros should take care of the headers
during header insertion/deletion/change.

18 years ago[MAJOR] replaced the client-side HTTP parser with a new one
Willy Tarreau [Mon, 4 Dec 2006 01:26:12 +0000 (02:26 +0100)] 
[MAJOR] replaced the client-side HTTP parser with a new one

The new parser uses an FSM to strictly follow RFC2616.
Headers are indexed and parsed only once they're all available.
That way, complex regexes make more sense.

HTTP processing is now performed in several phases by calling
multiple functions, making the code cleaner and easier to read.

Note that req[i]pass does not work anymore because it would
require that we mark a header to be ignored. What is really
needed is to have the ability to add an exception to a matching
(match xx except yy).

Several bugs have been fixed in appsession during the conversion
to the new FSM (method length and recovery on malloc errors).

The code does build and work with the debug examples, but is
not usable yet to connect to anything as it does not forward
the requests yet.

18 years ago[BUG] files were missing for hdr_idx in previous commit
Willy Tarreau [Mon, 4 Dec 2006 01:20:02 +0000 (02:20 +0100)] 
[BUG] files were missing for hdr_idx in previous commit

18 years ago[MEDIUM] added the hdr_idx structure for future HTTP header indexing
Willy Tarreau [Sun, 3 Dec 2006 14:21:35 +0000 (15:21 +0100)] 
[MEDIUM] added the hdr_idx structure for future HTTP header indexing

This structure will consume 4 bytes per header to keep track of
headers within a request or a response without having to parse
the whole request for each regex. As it's not possible to allocate
only 4 bytes, we define a max number of HTTP headers. We set it
to (BUFSIZE+79)/80 so that 8kB buffers can contain 100 headers
(like Apache), resulting in 400 bytes dedicated to indexation,
or about 400/(2*8kB) ~= 2.4% of the memory usage.

18 years agoMerge branch 'rfc2616' into switch
Willy Tarreau [Sat, 2 Dec 2006 19:13:39 +0000 (20:13 +0100)] 
Merge branch 'rfc2616' into switch

18 years ago[BUG] implemented support for multi-line headers as required by RFC2616.
Willy Tarreau [Sat, 2 Dec 2006 19:12:09 +0000 (20:12 +0100)] 
[BUG] implemented support for multi-line headers as required by RFC2616.

  This patch was added in 1.2.9 but was then incidentely reverted by
  manipulation error when merging next patch (enforce max number of
  conns). It's now merged again.

18 years ago[MAJOR] separate sess->proxy into sess->{fe,fi,be}
Willy Tarreau [Thu, 30 Nov 2006 10:40:23 +0000 (11:40 +0100)] 
[MAJOR] separate sess->proxy into sess->{fe,fi,be}

The references to the proxy from the session have been turned into
Frontend (fe), Filters (fi) and Backend (be). This should ease the
migration to the L7 switching features. Next step will be to kill
the struct proxy and have 3 independant structs instead, each
referenced from entities called listener, frontend, filters and
backend.

18 years ago[MEDIUM] use tproxy address as source of health checks
Willy Tarreau [Tue, 14 Nov 2006 15:18:41 +0000 (16:18 +0100)] 
[MEDIUM] use tproxy address as source of health checks

If a tproxy address is defined, then use it for health checks too.

18 years ago[BUILD] remove a warning in backend.c
Willy Tarreau [Tue, 14 Nov 2006 14:40:51 +0000 (15:40 +0100)] 
[BUILD] remove a warning in backend.c

include <string.h> to remove a warning on memset

18 years ago[MEDIUM] add support for SO_REUSEPORT on Linux
Willy Tarreau [Mon, 13 Nov 2006 00:22:38 +0000 (01:22 +0100)] 
[MEDIUM] add support for SO_REUSEPORT on Linux

SO_REUSEPORT does not exist on Linux but the checks are available in
the code. With a little patch, it's possible to implement the feature,
but the value of SO_REUSEPORT will still have to be known from userland.
This patch adds a workaround to this problem by figuring out the value
for the one used by SO_REUSEADDR.

18 years ago[MAJOR] support for source binding via cttproxy
Willy Tarreau [Sun, 12 Nov 2006 22:57:19 +0000 (23:57 +0100)] 
[MAJOR] support for source binding via cttproxy

Using the cttproxy kernel patch, it's possible to bind to any source
address. It is highly recommended to use the 03-natdel patch with the
other ones.

A new keyword appears as a complement to the "source" keyword : "usesrc".
The source address is mandatory and must be valid on the interface which
will see the packets. The "usesrc" option supports "client" (for full
client_ip:client_port spoofing), "client_ip" (for client_ip spoofing)
and any 'IP[:port]' combination to pretend to be another machine.

Right now, the source binding is missing from server health-checks if
set to another address. It must be implemented (think restricted firewalls).
The doc is still missing too.

18 years ago[MEDIUM] import ip_tproxy.h from cttproxy
Willy Tarreau [Sun, 12 Nov 2006 22:50:48 +0000 (23:50 +0100)] 
[MEDIUM] import ip_tproxy.h from cttproxy

The file "ip_tproxy.h" will be needed to build with cttproxy support.
Let's include it to ease the build process.

18 years ago[RELEASE] released 1.3.3 v1.3.3
Willy Tarreau [Sun, 15 Oct 2006 22:03:35 +0000 (00:03 +0200)] 
[RELEASE] released 1.3.3

Released 1.3.3 with the following changes :
    - fix broken redispatch option in case the connection has already
      been marked "in progress" (ie: nearly always).
    - support regparm on x86 to speed up some often called functions
    - removed a few useless calls to gettimeofday() in log functions.
    - lots of 'const char*' cleanups
    - turn every FD_* into functions which are faster on recent CPUs
    - builds again on OpenBSD and Solaris

18 years ago[BUILD] Makefile.bsd is functionnal again.
Willy Tarreau [Sun, 15 Oct 2006 21:50:42 +0000 (23:50 +0200)] 
[BUILD] Makefile.bsd is functionnal again.

18 years ago[BUILD] only enable regparm on x86 to avoid useless warnings
Willy Tarreau [Sun, 15 Oct 2006 21:43:42 +0000 (23:43 +0200)] 
[BUILD] only enable regparm on x86 to avoid useless warnings

It complains at least on Solaris/sparc64 and OpenBSD/vax.

18 years ago[BUILD] make clean did not work on anything but bash
Willy Tarreau [Sun, 15 Oct 2006 21:40:58 +0000 (23:40 +0200)] 
[BUILD] make clean did not work on anything but bash

18 years ago[BUILD] replaced u_int32_t with unsigned int.
Willy Tarreau [Sun, 15 Oct 2006 21:32:18 +0000 (23:32 +0200)] 
[BUILD] replaced u_int32_t with unsigned int.

Linux and BSD know about u_int32_t, while Solaris knows about uint32_t.
This is getting boring and unsigned int perfectly fits the goal for the
moment. Further investigation will be performed anyway.

18 years ago[BUILD] types/proxy.h: reorder a few includes.
Willy Tarreau [Sun, 15 Oct 2006 21:18:47 +0000 (23:18 +0200)] 
[BUILD] types/proxy.h: reorder a few includes.

OpenBSD is very sensible on the order of includes :
sys/types.h, sys/socket.h, netinet/in.h and arpa/inet.h must be
included in this exact order.

18 years ago[CLEANUP] fd.c : regparm was hardcoded too.
Willy Tarreau [Sun, 15 Oct 2006 21:10:10 +0000 (23:10 +0200)] 
[CLEANUP] fd.c : regparm was hardcoded too.

18 years ago[BUILD] <stdint> is not present on OpenBSD. Prefer <sys/types.h>
Willy Tarreau [Sun, 15 Oct 2006 20:57:13 +0000 (22:57 +0200)] 
[BUILD] <stdint> is not present on OpenBSD. Prefer <sys/types.h>

18 years ago[CLEANUP] fd.h : regparm was hardcoded.
Willy Tarreau [Sun, 15 Oct 2006 20:56:02 +0000 (22:56 +0200)] 
[CLEANUP] fd.h : regparm was hardcoded.

18 years ago[CLEANUP] added the correct cast to call localtime()
Willy Tarreau [Sun, 15 Oct 2006 20:54:47 +0000 (22:54 +0200)] 
[CLEANUP] added the correct cast to call localtime()

Calling localtime() with a timeval.tv_sec causes a warning on
OpenBSD where the tv_sec is declared long.

18 years ago[MEDIUM] use regparm on a few tv_* functions
Willy Tarreau [Sun, 15 Oct 2006 13:38:50 +0000 (15:38 +0200)] 
[MEDIUM] use regparm on a few tv_* functions

Some of the tv_* functions are called very often. Passing their
arguments as registers is quite faster. This can be disabled
by setting CONFIG_HAP_DISABLE_REGPARM.

18 years ago[MEDIUM] remove useless calls to gettimeofday()
Willy Tarreau [Sun, 15 Oct 2006 13:25:48 +0000 (15:25 +0200)] 
[MEDIUM] remove useless calls to gettimeofday()

send_log(), Alert() and Warning() used gettimeofday() while using
<now> should have been preferred.

18 years ago[CLEANUP] add a few "const char *" where appropriate
Willy Tarreau [Sun, 15 Oct 2006 13:17:57 +0000 (15:17 +0200)] 
[CLEANUP] add a few "const char *" where appropriate

As suggested by Markus Elfring, a few "const char *" have replaced
some "char *" declarations where a function is not expected to
modify a value. It does not change the code but it helps detecting
coding errors.

18 years ago[CLEANUP] add a few checks for functions return values
Willy Tarreau [Sun, 15 Oct 2006 12:59:03 +0000 (14:59 +0200)] 
[CLEANUP] add a few checks for functions return values

Markus Elfring suggested adding a few checks which were missing
after a bunch of getsockopt() and 2 strdup(). While those are
unlikely to fail where they are used, it makes the code cleaner.

18 years ago[MINOR] turn every FD_* into functions
Willy Tarreau [Sun, 15 Oct 2006 12:52:29 +0000 (14:52 +0200)] 
[MINOR] turn every FD_* into functions

On recent CPUs, functions are about twice as fast as inline FD_*, so
there is now a #define CONFIG_HAP_INLINE_FD_SET to choose between the
two modes.

18 years ago[MEDIUM] fix broken redispatch option
Willy Tarreau [Sun, 15 Oct 2006 12:26:02 +0000 (14:26 +0200)] 
[MEDIUM] fix broken redispatch option

Since the connection queueing was introduced, the "redispatch"
option could not cover the cases where a connection has been
refused by the server after having been marked "in progress".
The fix consists in doing a redispatch in the delayed connection
handling code.

Problem reported by Konrad Rzentarzewski.

18 years ago[BUILD] added the 'git-tar' target to the Makefile
Willy Tarreau [Sun, 15 Oct 2006 12:24:14 +0000 (14:24 +0200)] 
[BUILD] added the 'git-tar' target to the Makefile

Now, doing a "make git-tar" will automaticall build the tar.gz archive
from the versionned tree.

18 years ago[RELEASE] released 1.3.2 v1.3.2
Willy Tarreau [Sun, 3 Sep 2006 09:23:06 +0000 (11:23 +0200)] 
[RELEASE] released 1.3.2

    - started the changes towards I/O completion callbacks. stream_sock* have
      replaced event_*.
    - added the new "reqtarpit" and "reqitarpit" protection features

18 years ago[MINOR] tarpit: close the connection if the client closes.
Willy Tarreau [Sun, 3 Sep 2006 08:47:37 +0000 (10:47 +0200)] 
[MINOR] tarpit: close the connection if the client closes.

There's no point at maintaining an open tarpitted connection
if the client has left.

18 years ago[DOC] add docs and examples of tarpit configuration
Willy Tarreau [Sun, 3 Sep 2006 08:19:38 +0000 (10:19 +0200)] 
[DOC] add docs and examples of tarpit configuration

18 years ago[MEDIUM] added the "reqtarpit" and "reqitarpit" features
Willy Tarreau [Sun, 3 Sep 2006 07:56:00 +0000 (09:56 +0200)] 
[MEDIUM] added the "reqtarpit" and "reqitarpit" features

It is now possible to tarpit connections based on regex matches.
The tarpit timeout is equal to the contimeout. A 500 server error
response is faked, and the logs show the status flags as "PT" which
indicate the connection has been tarpitted.

18 years ago[MEDIUM] got rid of event_{cli,srv}_write() in favor of stream_sock_write()
Willy Tarreau [Sat, 29 Jul 2006 17:01:31 +0000 (19:01 +0200)] 
[MEDIUM] got rid of event_{cli,srv}_write() in favor of stream_sock_write()

The timeouts, expiration timers and results are now stored in the buffers.
The timers will have to change a bit to become more flexible, and when the
I/O completion functions will be written, the connect_complete() will have
to be extracted from the write() function.

18 years ago[MEDIUM] got rid of event_{cli,srv}_read() in favor of stream_sock_read()
Willy Tarreau [Sat, 29 Jul 2006 16:36:34 +0000 (18:36 +0200)] 
[MEDIUM] got rid of event_{cli,srv}_read() in favor of stream_sock_read()

18 years ago[MEDIUM] removed all res_* and RES_*
Willy Tarreau [Sat, 29 Jul 2006 15:39:25 +0000 (17:39 +0200)] 
[MEDIUM] removed all res_* and RES_*

The read-, write-, end- and error- status are now stored in the buffer.

18 years ago[MEDIUM] started the changes towards I/O completion callbacks
Willy Tarreau [Sat, 29 Jul 2006 14:59:06 +0000 (16:59 +0200)] 
[MEDIUM] started the changes towards I/O completion callbacks

Now the event_* functions find their buffer in the fdtab itself.

18 years ago[TESTS] added two new test configurations
Willy Tarreau [Sat, 29 Jul 2006 14:47:12 +0000 (16:47 +0200)] 
[TESTS] added two new test configurations

- one for basic features
- one for httpterm

19 years ago[RELEASE] released 1.3.1 after resyncing with 1.2.15 v1.3.1
Willy Tarreau [Sun, 9 Jul 2006 15:11:39 +0000 (17:11 +0200)] 
[RELEASE] released 1.3.1 after resyncing with 1.2.15

Released 1.3.1 with the following changes from 1.2.15 :
   - now, haproxy warns about missing timeout during startup to try to
     eliminate all those buggy configurations.
   - added "Content-Type: text/html" in responses wherever appropriate, as
     suggested by Cameron Simpson.
   - implemented "option ssl-hello-chk" to use SSLv3 CLIENT HELLO messages to
     test server's health
   - implemented "monitor-uri" so that haproxy can reply to a specific URI with
     an "HTTP/1.0 200 OK" response. This is useful to validate multiple proxies
     at once.

19 years ago[DOC] provided an example of configuration involving URL switching.
Willy Tarreau [Sun, 9 Jul 2006 07:08:05 +0000 (09:08 +0200)] 
[DOC] provided an example of configuration involving URL switching.

19 years ago[MEDIUM] implemented the 'monitor-uri' keyword.
Willy Tarreau [Sun, 9 Jul 2006 06:22:27 +0000 (08:22 +0200)] 
[MEDIUM] implemented the 'monitor-uri' keyword.

It is used to test haproxy's status with an HTTP request to which
it will reply with HTTP/1.0 200 OK.

19 years ago[MEDIUM] implement 'option ssl-hello-chk' to use CLIENT HELLO health checks.
Willy Tarreau [Sun, 9 Jul 2006 14:42:34 +0000 (16:42 +0200)] 
[MEDIUM] implement 'option ssl-hello-chk' to use CLIENT HELLO health checks.

This makes it possible to relay SSL connections in pure TCP instances while
ensuring the remote end really receives our data eventhough intermediate
agents (firewalls, proxies, ...) might acknowledge the connection.

19 years ago[MEDIUM] now upon startup, haproxy will warn about missing timeouts.
Willy Tarreau [Sat, 8 Jul 2006 15:28:09 +0000 (17:28 +0200)] 
[MEDIUM] now upon startup, haproxy will warn about missing timeouts.

Too many problem reports were caused by missing timeouts. While
there has never been any default value since version 1.0, having
no timeout is abnormal in networked environments, and will lead
to various problems such as CLOSE_WAIT sockets accumulating and
nasty things like this. For this reason, it's better to annoy
the users until they fix their configs than letting them run
buggy configurations.

19 years ago[MINOR] added lots of Content-Type: text/html to HTML responses and stats.
Willy Tarreau [Sat, 8 Jul 2006 14:53:38 +0000 (16:53 +0200)] 
[MINOR] added lots of Content-Type: text/html to HTML responses and stats.

This suggestion from Cameron Simpson is perfectly valid and should have been
implemented from the beginning.

19 years ago[RELEASE] version 1.3.0 v1.3.0
Willy Tarreau [Mon, 3 Jul 2006 08:32:46 +0000 (10:32 +0200)] 
[RELEASE] version 1.3.0

Released version 1.3.0 which differs from 1.2.14 only by the fact
that the code is now classed in multiple .c and .h files.

19 years ago[CLEANUP] included common/version.h everywhere
Willy Tarreau [Thu, 29 Jun 2006 16:54:54 +0000 (18:54 +0200)] 
[CLEANUP] included common/version.h everywhere

19 years ago[CLEANUP] renamed include/haproxy to include/common
Willy Tarreau [Thu, 29 Jun 2006 15:53:05 +0000 (17:53 +0200)] 
[CLEANUP] renamed include/haproxy to include/common

19 years ago[BIGMOVE] exploded the monolithic haproxy.c file into multiple files.
Willy Tarreau [Mon, 26 Jun 2006 00:48:02 +0000 (02:48 +0200)] 
[BIGMOVE] exploded the monolithic haproxy.c file into multiple files.

The files are now stored under :
  - include/haproxy for the generic includes
  - include/types.h for the structures needed within prototypes
  - include/proto.h for function prototypes and inline functions
  - src/*.c for the C files

Most include files are now covered by LGPL. A last move still needs
to be done to put inline functions under GPL and not LGPL.

Version has been set to 1.3.0 in the code but some control still
needs to be done before releasing.

19 years ago[BUILD] fixed build on alpha-linux + epoll
Willy TARREAU [Fri, 16 Jun 2006 22:04:47 +0000 (00:04 +0200)] 
[BUILD] fixed build on alpha-linux + epoll

19 years ago[LICENSE] licensing clarifications
Willy TARREAU [Thu, 15 Jun 2006 19:48:13 +0000 (21:48 +0200)] 
[LICENSE] licensing clarifications

19 years ago[BUG] neither stats nor error messages could be returned without clitimeout
willy tarreau [Tue, 13 Jun 2006 17:28:58 +0000 (19:28 +0200)] 
[BUG] neither stats nor error messages could be returned without clitimeout

19 years ago[DOC] renamed 'haproxy' instead of 'ha-proxy' or 'h a p r o x y'
Willy Tarreau [Wed, 31 May 2006 04:40:15 +0000 (06:40 +0200)] 
[DOC] renamed 'haproxy' instead of 'ha-proxy' or 'h a p r o x y'

File indexation systems (including search engines) did not read
'haproxy' when needed, which made it more difficult to find the
doc on the net.

19 years ago[RELEASE] released 1.2.14 v1.2.14
willy tarreau [Sun, 21 May 2006 21:26:20 +0000 (23:26 +0200)] 
[RELEASE] released 1.2.14

Released 1.2.14 with the following changes :

   - new HTML status report with the 'stats' keyword.
   - added the 'abortonclose' option to better resist traffic surges
   - implemented dynamic traffic regulation with the 'minconn' option
   - show request time on denied requests
   - definitely fixed hot reconf on OpenBSD by the use of SO_REUSEPORT
   - now a proxy instance is allowed to run without servers, which is
     useful to dedicate one instance to stats
   - added lots of error counters
   - a missing parenthesis preventd matching of cacheable cookies
   - a missing parenthesis in poll_loop() might have caused missed events.

19 years ago[DOC] french doc update
willy tarreau [Sun, 21 May 2006 21:05:54 +0000 (23:05 +0200)] 
[DOC] french doc update

19 years ago[MINOR] display "<STATS>" in the logs for statistics access.
willy tarreau [Sun, 21 May 2006 20:08:00 +0000 (22:08 +0200)] 
[MINOR] display "<STATS>" in the logs for statistics access.

19 years ago[MINOR] always ensure that minconn < maxconn or override it.
willy tarreau [Sun, 21 May 2006 20:07:31 +0000 (22:07 +0200)] 
[MINOR] always ensure that minconn < maxconn or override it.

19 years ago[DOC] add some informations about 'stats' and 'option httpclose'.
willy tarreau [Sun, 21 May 2006 19:54:14 +0000 (21:54 +0200)] 
[DOC] add some informations about 'stats' and 'option httpclose'.

19 years agoMerge branch 'abort-close' into merge
willy tarreau [Sun, 21 May 2006 19:43:58 +0000 (21:43 +0200)] 
Merge branch 'abort-close' into merge

19 years ago[DOC] documented the 'stats' parameter.
willy tarreau [Sun, 21 May 2006 19:43:10 +0000 (21:43 +0200)] 
[DOC] documented the 'stats' parameter.

19 years agoMerge branch 'minconn' into abort-close
willy tarreau [Sun, 21 May 2006 19:11:03 +0000 (21:11 +0200)] 
Merge branch 'minconn' into abort-close

19 years ago[MAJOR] implemented the 'minconn' server parameter for dynamic load regulation
willy tarreau [Sun, 21 May 2006 19:09:55 +0000 (21:09 +0200)] 
[MAJOR] implemented the 'minconn' server parameter for dynamic load regulation
When 'minconn' is set, the number of simultaneous sessions sent to the server
will be limited by a dynamic value depending on the global load on the
instance itself. The principle is to fix the maximal concurrency on the server
proportionnally to the instance's usage relative to its maxconn, with a minimum
fixed to <minconn>. The formula for the number of simultaneous sessions sent
to the server is then max(srv_minconn, srv_maxconn*px_conn/px_maxconn). This
helps unloading the servers when the load is very low.

19 years ago[DOC] documented the 'abortonclose' option
willy tarreau [Sun, 21 May 2006 18:51:54 +0000 (20:51 +0200)] 
[DOC] documented the 'abortonclose' option

19 years ago[MEDIUM] added the 'abortonclose' option.
willy tarreau [Sun, 21 May 2006 16:26:53 +0000 (18:26 +0200)] 
[MEDIUM] added the 'abortonclose' option.

When this option is enabled, a session will be destroyed immediately if
a client closes during ST_IDLE or ST_CONN states.

19 years ago[MAJOR] missing parenthesis in poll_loop() might have caused missed events.
willy tarreau [Sun, 21 May 2006 14:26:20 +0000 (16:26 +0200)] 
[MAJOR] missing parenthesis in poll_loop() might have caused missed events.

19 years ago[MAJOR] missing parenthesis prevented matching of cacheable cookies !
willy tarreau [Sun, 21 May 2006 14:24:15 +0000 (16:24 +0200)] 
[MAJOR] missing parenthesis prevented matching of cacheable cookies !

19 years ago[MEDIUM] added counters for connect/response/security errors
willy tarreau [Sun, 21 May 2006 14:23:22 +0000 (16:23 +0200)] 
[MEDIUM] added counters for connect/response/security errors

19 years ago[MINOR] allow a proxy instance to run without any server (useful for stats)
willy tarreau [Sun, 21 May 2006 12:47:13 +0000 (14:47 +0200)] 
[MINOR] allow a proxy instance to run without any server (useful for stats)

19 years ago[MEDIUM] the stats dump FSM was buggy and looped on dispatch instances.
willy tarreau [Sun, 21 May 2006 12:46:15 +0000 (14:46 +0200)] 
[MEDIUM] the stats dump FSM was buggy and looped on dispatch instances.

It has been rewritten and now supports an initialization state. It now also
prevents from dumping stopped(disabled) listeners and it is possible to
specify a scope with a list of proxies that are allowed to be dumped from
the one being configured ('.' meaning "this one"). The 'stats' entry can
be configured from the 'defaults' instance and it is correctly flushed
from proxies which redefine it.

19 years ago[MEDIUM] hopefully definitely fixed hot-reconf for OpenBSD
willy tarreau [Sun, 21 May 2006 08:20:28 +0000 (10:20 +0200)] 
[MEDIUM] hopefully definitely fixed hot-reconf for OpenBSD

19 years ago[MINOR] cosmetic changes in the stats interface
willy tarreau [Sun, 21 May 2006 06:58:06 +0000 (08:58 +0200)] 
[MINOR] cosmetic changes in the stats interface

19 years ago[CRITICAL] potential NULL dereference when counting stats in dispatch mode
willy tarreau [Sun, 21 May 2006 06:32:50 +0000 (08:32 +0200)] 
[CRITICAL] potential NULL dereference when counting stats in dispatch mode

19 years ago[MINOR] also set request time on denied requests
willy tarreau [Wed, 17 May 2006 23:25:36 +0000 (01:25 +0200)] 
[MINOR] also set request time on denied requests

19 years ago[MINOR] set request time even for stats requests
willy tarreau [Wed, 17 May 2006 23:23:51 +0000 (01:23 +0200)] 
[MINOR] set request time even for stats requests