2005-12-17 12:46:33 +00:00
|
|
|
ChangeLog :
|
|
|
|
===========
|
|
|
|
|
2005-12-17 12:49:52 +00:00
|
|
|
2003/04/16 : 1.1.19
|
|
|
|
- haproxy was NOT RFC compliant because it was case-sensitive on HTTP
|
|
|
|
"Cookie:" and "Set-Cookie:" headers. This caused JVM 1.4 to fail on
|
|
|
|
cookie persistence because it uses "cookie:". Two memcmp() have been
|
|
|
|
replaced with strncasecmp().
|
|
|
|
|
2005-12-17 12:46:33 +00:00
|
|
|
2003/04/02 : 1.1.18
|
|
|
|
- Haproxy can be compiled with PCRE regex instead of libc regex, by setting
|
|
|
|
REGEX=pcre on the make command line.
|
|
|
|
- HTTP health-checks now use "OPTIONS *" instead of "OPTIONS /".
|
|
|
|
- when explicit source address binding is required, it is now also used for
|
|
|
|
health-checks.
|
|
|
|
- added 'reqpass' and 'reqipass' to allow certain headers but not the request
|
|
|
|
itself.
|
|
|
|
- factored several strings to reduce binary size by about 2 kB.
|
|
|
|
- replaced setreuid() and setregid() with more standard setuid() and setgid().
|
|
|
|
- added 4 status flags to the log line indicating who ended the connection
|
|
|
|
first, the sessions state, the validity of the cookie, and action taken on
|
|
|
|
the set-cookie header.
|
|
|
|
|
|
|
|
2002/10/18 : 1.1.17
|
|
|
|
- add the notion of "backup" servers, which are used only when all other
|
|
|
|
servers are down.
|
|
|
|
- make Set-Cookie return "" instead of "(null)" when the server has no
|
|
|
|
cookie assigned (useful for backup servers).
|
|
|
|
- "log" now supports an optionnal level name (info, notice, err ...) above
|
|
|
|
which nothing is sent.
|
|
|
|
- replaced some strncmp() with memcmp() for better efficiency.
|
|
|
|
- added "capture cookie" option which logs client and/or server cookies
|
|
|
|
- cleaned up/down messages and dump servers states upon SIGHUP
|
|
|
|
- added a redirection feature for errors : "errorloc <errnum> <url>"
|
|
|
|
- now we won't insist on connecting to a dead server, even with a cookie,
|
|
|
|
unless option "persist" is specified.
|
|
|
|
- added HTTP/408 response for client request time-out and HTTP/50[234] for
|
|
|
|
server reply time-out or errors.
|
|
|
|
|
|
|
|
2002/09/01 : 1.1.16
|
|
|
|
- implement HTTP health checks when option "httpchk" is specified.
|
|
|
|
|
|
|
|
2002/08/07 : 1.1.15
|
|
|
|
- replaced setpgid()/setpgrp() with setsid() for better portability, because
|
|
|
|
setpgrp() doesn't have the same meaning under Solaris, Linux, and OpenBSD.
|
|
|
|
|
|
|
|
2002/07/20 : 1.1.14
|
|
|
|
- added "postonly" cookie mode
|
|
|
|
|
|
|
|
2002/07/15 : 1.1.13
|
|
|
|
- tv_diff used inverted parameters which led to negative times !
|
|
|
|
|
|
|
|
2002/07/13 : 1.1.12
|
|
|
|
- fixed stats monitoring, and optimized some tv_* for most common cases.
|
|
|
|
- replaced temporary 'newhdr' with 'trash' to reduce stack size
|
|
|
|
- made HTTP errors more HTML-fiendly.
|
|
|
|
- renamed strlcpy() to strlcpy2() because of a slightly difference between
|
|
|
|
their behaviour (return value), to avoid confusion.
|
|
|
|
- restricted HTTP messages to HTTP proxies only
|
|
|
|
- added a 502 message when the connection has been refused by the server,
|
|
|
|
to prevent clients from believing this is a zero-byte HTTP 0.9 reply.
|
|
|
|
- changed 'Cache-control:' from 'no-cache="set-cookie"' to 'private' when
|
|
|
|
inserting a cookie, because some caches (apache) don't understand it.
|
|
|
|
- fixed processing of server headers when client is in SHUTR state
|
|
|
|
|
|
|
|
2002/07/04 :
|
|
|
|
- automatically close fd's 0,1 and 2 when going daemon ; setpgrp() after
|
|
|
|
setpgid()
|
|
|
|
|
|
|
|
2002/06/04 : 1.1.11
|
|
|
|
- fixed multi-cookie handling in client request to allow clean deletion
|
|
|
|
in insert+indirect mode. Now, only the server cookie is deleted and not
|
2005-12-17 12:49:52 +00:00
|
|
|
all the header. Should now be compliant to RFC2965.
|
2005-12-17 12:46:33 +00:00
|
|
|
- added a "nocache" option to "cookie" to specify that we explicitly want
|
|
|
|
to add a "cache-control" header when we add a cookie.
|
|
|
|
It is also possible to add an "Expires: <old-date>" to keep compatibility
|
|
|
|
with old/broken caches.
|
|
|
|
|
|
|
|
2002/05/10 : 1.1.10
|
|
|
|
- if a cookie is used in insert+indirect mode, it's desirable that the
|
|
|
|
the servers don't see it. It was not possible to remove it correctly
|
|
|
|
with regexps, so now it's removed automatically.
|
|
|
|
|
|
|
|
2002/04/19 : 1.1.9
|
|
|
|
- don't use snprintf()'s return value as an end of message since it may
|
|
|
|
be larger. This caused bus errors and segfaults in internal libc's
|
|
|
|
getenv() during localtime() in send_log().
|
|
|
|
- removed dead insecure send_syslog() function and all references to it.
|
|
|
|
- fixed warnings on Solaris due to buggy implementation of isXXXX().
|
|
|
|
|
|
|
|
2002/04/18 : 1.1.8
|
|
|
|
- option "dontlognull"
|
|
|
|
- fixed "double space" bug in config parser
|
|
|
|
- fixed an uninitialized server field in case of dispatch
|
|
|
|
with no existing server which could cause a segfault during
|
|
|
|
logging.
|
|
|
|
- the pid logged was always the father's, which was wrong for daemons.
|
|
|
|
- fixed wrong level "LOG_INFO" for message "proxy started".
|
|
|
|
|
|
|
|
2002/04/13 :
|
|
|
|
- http logging is now complete :
|
|
|
|
- ip:port, date, proxy, server
|
|
|
|
- req_time, conn_time, hdr_time, tot_time
|
|
|
|
- status, size, request
|
|
|
|
- source address
|
|
|
|
|
|
|
|
2002/04/12 : 1.1.7
|
|
|
|
- added option forwardfor
|
|
|
|
- added reqirep, reqidel, reqiallow, reqideny, rspirep, rspidel
|
|
|
|
- added "log global" in "listen" section.
|
|
|
|
|
|
|
|
2002/04/09 :
|
|
|
|
- added a new "global" section :
|
|
|
|
- logs
|
|
|
|
- debug, quiet, daemon modes
|
|
|
|
- uid, gid, chroot, nbproc, maxconn
|
|
|
|
|
|
|
|
2002/04/08 : 1.1.6
|
|
|
|
- regex are now chained and not limited anymore.
|
|
|
|
- unavailable server now returns HTTP/502.
|
|
|
|
- increased per-line args limit to 40
|
|
|
|
- added reqallow/reqdeny to block some request on matches
|
|
|
|
- added HTTP 400/403 responses
|
|
|
|
|
|
|
|
2002/04/03 : 1.1.5
|
|
|
|
- connection logging displayed incorrect source address.
|
|
|
|
- added proxy start/stop and server up/down log events.
|
|
|
|
- replaced log message short buffers with larger trash.
|
|
|
|
- enlarged buffer to 8 kB and replace buffer to 4 kB.
|
|
|
|
|
|
|
|
2002/03/25 : 1.1.4
|
|
|
|
- made rise/fall/interval time configurable
|
|
|
|
|
|
|
|
2002/03/22 : 1.1.3
|
|
|
|
- fixed a bug : cr_expire and cw_expire were inverted in CL_STSHUT[WR]
|
|
|
|
which could lead to loops.
|
|
|
|
|
|
|
|
2002/03/21 : 1.1.2
|
|
|
|
- fixed a bug in buffer management where we could have a loop
|
|
|
|
between event_read() and process_{cli|srv} if R==BUFSIZE-MAXREWRITE.
|
|
|
|
=> implemented an adjustable buffer limit.
|
|
|
|
- fixed a bug : expiration of tasks in wait queue timeout is used again,
|
|
|
|
and running tasks are skipped.
|
|
|
|
- added some debug lines for accept events.
|
|
|
|
- send warnings for servers up/down.
|
|
|
|
|
|
|
|
2002/03/12 : 1.1.1
|
|
|
|
- fixed a bug in total failure handling
|
|
|
|
- fixed a bug in timestamp comparison within same second (tv_cmp_ms)
|
|
|
|
|
|
|
|
2002/03/10 : 1.1.0
|
|
|
|
- fixed a few timeout bugs
|
|
|
|
- rearranged the task scheduler subsystem to improve performance,
|
|
|
|
add new tasks, and make it easier to later port to librt ;
|
|
|
|
- allow multiple accept() for one select() wake up ;
|
|
|
|
- implemented internal load balancing with basic health-check ;
|
|
|
|
- cookie insertion and header add/replace/delete, with better strings
|
|
|
|
support.
|
|
|
|
|
|
|
|
2002/03/08
|
|
|
|
- reworked buffer handling to fix a few rewrite bugs, and
|
|
|
|
improve overall performance.
|
|
|
|
- implement the "purge" option to delete server cookies in direct mode.
|
|
|
|
|
|
|
|
2002/03/07
|
|
|
|
- fixed some error cases where the maxfd was not decreased.
|
|
|
|
|
|
|
|
2002/02/26
|
|
|
|
- now supports transparent proxying, at least on linux 2.4.
|
|
|
|
|
|
|
|
2002/02/12
|
|
|
|
- soft stop works again (fixed select timeout computation).
|
|
|
|
- it seems that TCP proxies sometimes cannot timeout.
|
|
|
|
- added a "quiet" mode.
|
|
|
|
- enforce file descriptor limitation on socket() and accept().
|
|
|
|
|
|
|
|
2001/12/30 : release of version 1.0.2 : fixed a bug in header processing
|
|
|
|
2001/12/19 : release of version 1.0.1 : no MSG_NOSIGNAL on solaris
|
|
|
|
2001/12/16 : release of version 1.0.0.
|
|
|
|
2001/12/16 : added syslog capability for each accepted connection.
|
|
|
|
2001/11/19 : corrected premature end of files and occasional SIGPIPE.
|
|
|
|
2001/10/31 : added health-check type servers (mode health) which replies OK then closes.
|
|
|
|
2001/10/30 : added the ability to support standard TCP proxies and HTTP proxies
|
|
|
|
with or without cookies (use keyword http for this).
|
|
|
|
2001/09/01 : added client/server header replacing with regexps.
|
|
|
|
eg:
|
|
|
|
cliexp ^(Host:\ [^:]*).* Host:\ \1:80
|
|
|
|
srvexp ^Server:\ .* Server:\ Apache
|
|
|
|
2000/11/29 : first fully working release with complete FSMs and timeouts.
|
|
|
|
2000/11/28 : major rewrite
|
|
|
|
2000/11/26 : first write
|