blob: 47512a73c126468159a4f1688f8176a6408f4966 [file] [log] [blame]
willy tarreau036e1ce2005-12-17 13:46:33 +01001ChangeLog :
2===========
3
willy tarreaub1ff9db2005-12-17 13:51:03 +010042003/04/21 : 1.1.20
5 - fixed two problems with time-outs, one where a server would be logged as
6 timed out during transfer that take longer to complete than the fixed
7 time-out, and one where clients were logged as timed-out during the data
8 phase because they didn't have anything to send. This sometimes caused
9 slow client connections to close too early while in fact there was no
10 problem. The proper fix would be to have a per-fd time-out with
11 conditions depending on the state of the HTTP FSM.
12
willy tarreau906b2682005-12-17 13:49:52 +0100132003/04/16 : 1.1.19
14 - haproxy was NOT RFC compliant because it was case-sensitive on HTTP
15 "Cookie:" and "Set-Cookie:" headers. This caused JVM 1.4 to fail on
16 cookie persistence because it uses "cookie:". Two memcmp() have been
17 replaced with strncasecmp().
18
willy tarreau036e1ce2005-12-17 13:46:33 +0100192003/04/02 : 1.1.18
20 - Haproxy can be compiled with PCRE regex instead of libc regex, by setting
21 REGEX=pcre on the make command line.
22 - HTTP health-checks now use "OPTIONS *" instead of "OPTIONS /".
23 - when explicit source address binding is required, it is now also used for
24 health-checks.
25 - added 'reqpass' and 'reqipass' to allow certain headers but not the request
26 itself.
27 - factored several strings to reduce binary size by about 2 kB.
28 - replaced setreuid() and setregid() with more standard setuid() and setgid().
29 - added 4 status flags to the log line indicating who ended the connection
30 first, the sessions state, the validity of the cookie, and action taken on
31 the set-cookie header.
32
332002/10/18 : 1.1.17
34 - add the notion of "backup" servers, which are used only when all other
35 servers are down.
36 - make Set-Cookie return "" instead of "(null)" when the server has no
37 cookie assigned (useful for backup servers).
38 - "log" now supports an optionnal level name (info, notice, err ...) above
39 which nothing is sent.
40 - replaced some strncmp() with memcmp() for better efficiency.
41 - added "capture cookie" option which logs client and/or server cookies
42 - cleaned up/down messages and dump servers states upon SIGHUP
43 - added a redirection feature for errors : "errorloc <errnum> <url>"
44 - now we won't insist on connecting to a dead server, even with a cookie,
45 unless option "persist" is specified.
46 - added HTTP/408 response for client request time-out and HTTP/50[234] for
47 server reply time-out or errors.
48
492002/09/01 : 1.1.16
50 - implement HTTP health checks when option "httpchk" is specified.
51
522002/08/07 : 1.1.15
53 - replaced setpgid()/setpgrp() with setsid() for better portability, because
54 setpgrp() doesn't have the same meaning under Solaris, Linux, and OpenBSD.
55
562002/07/20 : 1.1.14
57 - added "postonly" cookie mode
58
592002/07/15 : 1.1.13
60 - tv_diff used inverted parameters which led to negative times !
61
622002/07/13 : 1.1.12
63 - fixed stats monitoring, and optimized some tv_* for most common cases.
64 - replaced temporary 'newhdr' with 'trash' to reduce stack size
65 - made HTTP errors more HTML-fiendly.
66 - renamed strlcpy() to strlcpy2() because of a slightly difference between
67 their behaviour (return value), to avoid confusion.
68 - restricted HTTP messages to HTTP proxies only
69 - added a 502 message when the connection has been refused by the server,
70 to prevent clients from believing this is a zero-byte HTTP 0.9 reply.
71 - changed 'Cache-control:' from 'no-cache="set-cookie"' to 'private' when
72 inserting a cookie, because some caches (apache) don't understand it.
73 - fixed processing of server headers when client is in SHUTR state
74
752002/07/04 :
76 - automatically close fd's 0,1 and 2 when going daemon ; setpgrp() after
77 setpgid()
78
792002/06/04 : 1.1.11
80 - fixed multi-cookie handling in client request to allow clean deletion
81 in insert+indirect mode. Now, only the server cookie is deleted and not
willy tarreau906b2682005-12-17 13:49:52 +010082 all the header. Should now be compliant to RFC2965.
willy tarreau036e1ce2005-12-17 13:46:33 +010083 - added a "nocache" option to "cookie" to specify that we explicitly want
84 to add a "cache-control" header when we add a cookie.
85 It is also possible to add an "Expires: <old-date>" to keep compatibility
86 with old/broken caches.
87
882002/05/10 : 1.1.10
89 - if a cookie is used in insert+indirect mode, it's desirable that the
90 the servers don't see it. It was not possible to remove it correctly
91 with regexps, so now it's removed automatically.
92
932002/04/19 : 1.1.9
94 - don't use snprintf()'s return value as an end of message since it may
95 be larger. This caused bus errors and segfaults in internal libc's
96 getenv() during localtime() in send_log().
97 - removed dead insecure send_syslog() function and all references to it.
98 - fixed warnings on Solaris due to buggy implementation of isXXXX().
99
1002002/04/18 : 1.1.8
101 - option "dontlognull"
102 - fixed "double space" bug in config parser
103 - fixed an uninitialized server field in case of dispatch
104 with no existing server which could cause a segfault during
105 logging.
106 - the pid logged was always the father's, which was wrong for daemons.
107 - fixed wrong level "LOG_INFO" for message "proxy started".
108
1092002/04/13 :
110 - http logging is now complete :
111 - ip:port, date, proxy, server
112 - req_time, conn_time, hdr_time, tot_time
113 - status, size, request
114 - source address
115
1162002/04/12 : 1.1.7
117 - added option forwardfor
118 - added reqirep, reqidel, reqiallow, reqideny, rspirep, rspidel
119 - added "log global" in "listen" section.
120
1212002/04/09 :
122 - added a new "global" section :
123 - logs
124 - debug, quiet, daemon modes
125 - uid, gid, chroot, nbproc, maxconn
126
1272002/04/08 : 1.1.6
128 - regex are now chained and not limited anymore.
129 - unavailable server now returns HTTP/502.
130 - increased per-line args limit to 40
131 - added reqallow/reqdeny to block some request on matches
132 - added HTTP 400/403 responses
133
1342002/04/03 : 1.1.5
135 - connection logging displayed incorrect source address.
136 - added proxy start/stop and server up/down log events.
137 - replaced log message short buffers with larger trash.
138 - enlarged buffer to 8 kB and replace buffer to 4 kB.
139
1402002/03/25 : 1.1.4
141 - made rise/fall/interval time configurable
142
1432002/03/22 : 1.1.3
144 - fixed a bug : cr_expire and cw_expire were inverted in CL_STSHUT[WR]
145 which could lead to loops.
146
1472002/03/21 : 1.1.2
148 - fixed a bug in buffer management where we could have a loop
149 between event_read() and process_{cli|srv} if R==BUFSIZE-MAXREWRITE.
150 => implemented an adjustable buffer limit.
151 - fixed a bug : expiration of tasks in wait queue timeout is used again,
152 and running tasks are skipped.
153 - added some debug lines for accept events.
154 - send warnings for servers up/down.
155
1562002/03/12 : 1.1.1
157 - fixed a bug in total failure handling
158 - fixed a bug in timestamp comparison within same second (tv_cmp_ms)
159
1602002/03/10 : 1.1.0
161 - fixed a few timeout bugs
162 - rearranged the task scheduler subsystem to improve performance,
163 add new tasks, and make it easier to later port to librt ;
164 - allow multiple accept() for one select() wake up ;
165 - implemented internal load balancing with basic health-check ;
166 - cookie insertion and header add/replace/delete, with better strings
167 support.
168
1692002/03/08
170 - reworked buffer handling to fix a few rewrite bugs, and
171 improve overall performance.
172 - implement the "purge" option to delete server cookies in direct mode.
173
1742002/03/07
175 - fixed some error cases where the maxfd was not decreased.
176
1772002/02/26
178 - now supports transparent proxying, at least on linux 2.4.
179
1802002/02/12
181 - soft stop works again (fixed select timeout computation).
182 - it seems that TCP proxies sometimes cannot timeout.
183 - added a "quiet" mode.
184 - enforce file descriptor limitation on socket() and accept().
185
1862001/12/30 : release of version 1.0.2 : fixed a bug in header processing
1872001/12/19 : release of version 1.0.1 : no MSG_NOSIGNAL on solaris
1882001/12/16 : release of version 1.0.0.
1892001/12/16 : added syslog capability for each accepted connection.
1902001/11/19 : corrected premature end of files and occasional SIGPIPE.
1912001/10/31 : added health-check type servers (mode health) which replies OK then closes.
1922001/10/30 : added the ability to support standard TCP proxies and HTTP proxies
193 with or without cookies (use keyword http for this).
1942001/09/01 : added client/server header replacing with regexps.
195 eg:
196 cliexp ^(Host:\ [^:]*).* Host:\ \1:80
197 srvexp ^Server:\ .* Server:\ Apache
1982000/11/29 : first fully working release with complete FSMs and timeouts.
1992000/11/28 : major rewrite
2002000/11/26 : first write