blob: 53c947ae61512c0dc5a82ad5425cf853a2b02c4f [file] [log] [blame]
willy tarreau036e1ce2005-12-17 13:46:33 +01001ChangeLog :
2===========
willy tarreau4302f492005-12-18 01:00:37 +01003
Willy Tarreaua3ecbd92012-12-28 15:04:05 +010042012/12/28 : 1.5-dev17
5 - MINOR: ssl: Setting global tune.ssl.cachesize value to 0 disables SSL session cache.
6 - BUG/MEDIUM: stats: fix stats page regression introduced by commit 20b0de5
7 - BUG/MINOR: stats: last fix was still wrong
8 - BUG/MINOR: stats: http-request rules still don't cope with stats
9 - BUG/MINOR: http: http-request add-header emits a corrupted header
10 - BUG/MEDIUM: stats: disable request analyser when processing POST or HEAD
11 - BUG/MINOR: log: make log-format, unique-id-format and add-header more independant
12 - BUILD: log: unused variable svid
13 - CLEANUP: http: rename the misleading http_check_access_rule
14 - MINOR: http: move redirect rule processing to its own function
15 - REORG: config: move the http redirect rule parser to proto_http.c
16 - MEDIUM: http: add support for "http-request redirect" rules
17 - MEDIUM: http: add support for "http-request tarpit" rule
18
Willy Tarreau69eda352012-12-24 16:48:14 +0100192012/12/24 : 1.5-dev16
20 - BUG/MEDIUM: ssl: Prevent ssl error from affecting other connections.
21 - BUG/MINOR: ssl: error is not reported if it occurs simultaneously with peer close detection.
22 - MINOR: ssl: add fetch and acl "ssl_c_used" to check if current SSL session uses a client certificate.
23 - MINOR: contrib: make the iprange tool grep for addresses
24 - CLEANUP: polling: gcc doesn't always optimize constants away
25 - OPTIM: poll: optimize fd management functions for low register count CPUs
26 - CLEANUP: poll: remove a useless double-check on fdtab[fd].owner
27 - OPTIM: epoll: use a temp variable for intermediary flag computations
28 - OPTIM: epoll: current fd does not count as a new one
29 - BUG/MINOR: poll: the I/O handler was called twice for polled I/Os
30 - MINOR: http: make resp_ver and status ACLs check for the presence of a response
31 - BUG/MEDIUM: stream-interface: fix possible stalls during transfers
32 - BUG/MINOR: stream_interface: don't return when the fd is already set
33 - BUG/MEDIUM: connection: always update connection flags prior to computing polling
34 - CLEANUP: buffer: use buffer_empty() instead of buffer_len()==0
35 - BUG/MAJOR: stream_interface: fix occasional data transfer freezes
36 - BUG/MEDIUM: stream_interface: fix another case where the reader might not be woken up
37 - BUG/MINOR: http: don't abort client connection on premature responses
38 - BUILD: no need to clean up when making git-tar
39 - MINOR: log: add a tag for amount of bytes uploaded from client to server
40 - BUG/MEDIUM: log: fix possible segfault during config parsing
41 - MEDIUM: log: change a few log tokens to make them easier to remember
42 - BUG/MINOR: log: add_to_logformat_list() used the wrong constants
43 - MEDIUM: log-format: make the format parser more robust and more extensible
44 - MINOR: sample: support cast from bool to string
45 - MINOR: samples: add a function to fetch and convert any sample to a string
46 - MINOR: log: add lf_text_len
47 - MEDIUM: log: add the ability to include samples in logs
48 - REORG: stats: massive code reorg and cleanup
49 - REORG: stats: move the HTTP header injection to proto_http
50 - REORG: stats: functions are now HTTP/CLI agnostic
51 - BUG/MINOR: log: fix regression introduced by commit 8a3f52
52 - MINOR: chunks: centralize the trash chunk allocation
53 - MEDIUM: stats: use hover boxes instead of title to report details
54 - MEDIUM: stats: use multi-line tips to display detailed counters
55 - MINOR: tools: simplify the use of the int to ascii macros
56 - MINOR: stats: replace STAT_FMT_CSV with STAT_FMT_HTML
57 - MINOR: http: prepare to support more http-request actions
58 - MINOR: log: make parse_logformat_string() take a const char *
59 - MEDIUM: http: add http-request 'add-header' and 'set-header' to build headers
60
Willy Tarreau0cae4b32012-12-12 00:39:52 +0100612012/12/12 : 1.5-dev15
62 - DOC: add a few precisions on compression
63 - BUG/MEDIUM: ssl: Fix handshake failure on session resumption with client cert.
64 - BUG/MINOR: ssl: One free session in cache remains unused.
65 - BUG/MEDIUM: ssl: first outgoing connection would fail with {ca,crt}-ignore-err
66 - MEDIUM: ssl: manage shared cache by blocks for huge sessions.
67 - MINOR: acl: add fetch for server session rate
68 - BUG/MINOR: compression: Content-Type is case insensitive
69 - MINOR: compression: disable on multipart or status != 200
70 - BUG/MINOR: http: don't report client aborts as server errors
71 - MINOR: stats: compute the ratio of compressed response based on 2xx responses
72 - MINOR: http: factor out the content-type checks
73 - BUG/MAJOR: stats: correctly check for a possible divide error when showing compression ratios
74 - BUILD: ssl: OpenSSL 0.9.6 has no renegociation
75 - BUG/MINOR: http: disable compression when message has no body
76 - MINOR: compression: make the stats a bit more robust
77 - BUG/MEDIUM: comp: DEFAULT_MAXZLIBMEM was expressed in bytes and not megabytes
78 - MINOR: connection: don't remove failed handshake flags
79 - MEDIUM: connection: add an error code in connections
80 - MEDIUM: connection: add minimal error reporting in logs for incomplete connections
81 - MEDIUM: connection: add error reporting for the PROXY protocol header
82 - MEDIUM: connection: add error reporting for the SSL
83 - DOC: document the connection error format in logs
84 - BUG/MINOR: http: don't log a 503 on client errors while waiting for requests
85 - BUILD: stdbool is not portable
86 - BUILD: ssl: NAME_MAX is not portable, use MAXPATHLEN instead
87 - BUG/MAJOR: raw_sock: must check error code on hangup
88 - BUG/MAJOR: polling: do not set speculative events on ERR nor HUP
89 - BUG/MEDIUM: session: fix FD leak when transport layer logging is enabled
90 - MINOR: stats: add a few more information on session dump
91 - BUG/MINOR: tcp: set the ADDR_TO_SET flag on outgoing connections
92 - CLEANUP: connection: remove unused server/proxy/task/si_applet declarations
93 - BUG/MEDIUM: tcp: process could theorically crash on lack of source ports
94 - MINOR: cfgparse: mention "interface" in the list of allowed "source" options
95 - MEDIUM: connection: introduce "struct conn_src" for servers and proxies
96 - CLEANUP: proto_tcp: use the same code to bind servers and backends
97 - CLEANUP: backend: use the same tproxy address selection code for servers and backends
98 - BUG/MEDIUM: stick-tables: conversions to strings were broken in dev13
99 - MEDIUM: proto_tcp: add support for tracking L7 information
100 - MEDIUM: counters: add sc1_trackers/sc2_trackers
101 - MINOR: http: add the "base32" pattern fetch function
102 - MINOR: http: add the "base32+src" fetch method.
103 - CLEANUP: session: use an array for the stick counters
104 - BUG/MINOR: proto_tcp: fix parsing of "table" in track-sc1/2
105 - BUG/MINOR: proto_tcp: bidirectional fetches not supported anymore in track-sc1/2
106 - BUG/MAJOR: connection: always recompute polling status upon I/O
107 - BUG/MINOR: connection: remove a few synchronous calls to polling updates
108 - MINOR: config: improve error checking on TCP stick-table tracking
109 - DOC: add some clarifications to the readme
110
Willy Tarreaufee48ce2012-11-26 03:11:05 +01001112012/11/26 : 1.5-dev14
112 - DOC: fix minor typos
113 - BUG/MEDIUM: compression: does not forward trailers
114 - MINOR: buffer_dump with ASCII
115 - BUG/MEDIUM: checks: mark the check as stopped after a connect error
116 - BUG/MEDIUM: checks: ensure we completely disable polling upon success
117 - BUG/MINOR: checks: don't mark the FD as closed before transport close
118 - MEDIUM: checks: avoid accumulating TIME_WAITs during checks
119 - MINOR: cli: report the msg state in full text in "show sess $PTR"
120 - CLEANUP: checks: rename some server check flags
121 - MAJOR: checks: rework completely bogus state machine
122 - BUG/MINOR: checks: slightly clean the state machine up
123 - MEDIUM: checks: avoid waking the application up for pure TCP checks
124 - MEDIUM: checks: close the socket as soon as we have a response
125 - BUG/MAJOR: checks: close FD on all timeouts
126 - MINOR: checks: fix recv polling after connect()
127 - MEDIUM: connection: provide a common conn_full_close() function
128 - BUG/MEDIUM: checks: prevent TIME_WAITs from appearing also on timeouts
129 - BUG/MAJOR: peers: the listener's maxaccept was not set and caused loops
130 - MINOR: listeners: make the accept loop more robust when maxaccept==0
131 - BUG/MEDIUM: acl: correctly resolve all args, not just the first one
132 - BUG/MEDIUM: acl: make prue_acl_expr() correctly free ACL expressions upon exit
133 - BUG/MINOR: stats: fix inversion of the report of a check in progress
134 - MEDIUM: tcp: add explicit support for delayed ACK in connect()
135 - BUG/MEDIUM: connection: always disable polling upon error
136 - MINOR: connection: abort earlier when errors are detected
137 - BUG/MEDIUM: checks: report handshake failures
138 - BUG/MEDIUM: connection: local_send_proxy must wait for connection to establish
139 - MINOR: tcp: add support for the "v6only" bind option
140 - MINOR: stats: also report the computed compression savings in html stats
141 - MINOR: stats: report the total number of compressed responses per front/back
142 - MINOR: tcp: add support for the "v4v6" bind option
143 - DOC: stats: document the comp_rsp stats column
144 - BUILD: buffer: fix another isprint() warning on solaris
145 - MINOR: cli: add support for the "show sess all" command
146 - BUG/MAJOR: cli: show sess <id> may randomly corrupt the back-ref list
147 - MINOR: cli: improve output format for show sess $ptr
148
Willy Tarreauad15d122012-11-22 01:11:33 +01001492012/11/22 : 1.5-dev13
150 - BUILD: fix build issue without USE_OPENSSL
151 - BUILD: fix compilation error with DEBUG_FULL
152 - DOC: ssl: remove prefer-server-ciphers documentation
153 - DOC: ssl: surround keywords with quotes
154 - DOC: fix minor typo on http-send-name-header
155 - BUG/MEDIUM: acls using IPv6 subnets patterns incorrectly match IPs
156 - BUG/MAJOR: fix a segfault on option http_proxy and url_ip acl
157 - MEDIUM: http: accept IPv6 values with (s)hdr_ip acl
158 - BUILD: report zlib support in haproxy -vv
159 - DOC: compression: add some details and clean up the formatting
160 - DOC: Change is_ssl acl to ssl_fc acl in example
161 - DOC: make it clear what the HTTP request size is
162 - MINOR: ssl: try to load Diffie-Hellman parameters from cert file
163 - DOC: ssl: update 'crt' statement on 'bind' about Diffie-Hellman parameters loading
164 - MINOR: ssl: add elliptic curve Diffie-Hellman support for ssl key generation
165 - DOC: ssl: add 'ecdhe' statement on 'bind'
166 - MEDIUM: ssl: add client certificate authentication support
167 - DOC: ssl: add 'verify', 'cafile' and 'crlfile' statements on 'bind'
168 - MINOR: ssl: add fetch and ACL 'client_crt' to test a client cert is present
169 - DOC: ssl: add fetch and ACL 'client_cert'
170 - MINOR: ssl: add ignore verify errors options
171 - DOC: ssl: add 'ca-ignore-err' and 'crt-ignore-err' statements on 'bind'
172 - MINOR: ssl: add fetch and ACL 'ssl_verify_result'
173 - DOC: ssl: add fetch and ACL 'ssl_verify_result'
174 - MINOR: ssl: add fetches and ACLs to return verify errors
175 - DOC: ssl: add fetches and ACLs 'ssl_verify_crterr', 'ssl_verify_caerr', and 'ssl_verify_crterr_depth'
176 - MINOR: ssl: disable shared memory and locks on session cache if nbproc == 1
177 - MINOR: ssl: add build param USE_PRIVATE_CACHE to build cache without shared memory
178 - MINOR: ssl : add statements 'notlsv11' and 'notlsv12' and rename 'notlsv1' to 'notlsv10'.
179 - DOC: ssl : add statements 'notlsv11' and 'notlsv12' and rename 'notlsv1' to 'notlsv10'.
180 - MEDIUM: config: authorize frontend and listen without bind.
181 - MINOR: ssl: add statement 'no-tls-tickets' on bind to disable stateless session resumption
182 - DOC: ssl: add 'no-tls-tickets' statement documentation.
183 - BUG/MINOR: ssl: Fix CRL check was not enabled when crlfile was specified.
184 - BUG/MINOR: build: Fix compilation issue on openssl 0.9.6 due to missing CRL feature.
185 - BUG/MINOR: conf: Fix 'maxsslconn' statement error if built without OPENSSL.
186 - BUG/MINOR: build: Fix failure with USE_OPENSSL=1 and USE_FUTEX=1 on archs i486 and i686.
187 - MINOR: ssl: remove prefer-server-ciphers statement and set it as the default on ssl listeners.
188 - BUG/MEDIUM: ssl: subsequent handshakes fail after server configuration changes
189 - MINOR: ssl: add 'crt-base' and 'ca-base' global statements.
190 - MEDIUM: conf: rename 'nosslv3' and 'notlsvXX' statements 'no-sslv3' and 'no-tlsvXX'.
191 - MEDIUM: conf: rename 'cafile' and 'crlfile' statements 'ca-file' and 'crl-file'
192 - MINOR: ssl: use bit fields to store ssl options instead of one int each
193 - MINOR: ssl: add 'force-sslv3' and 'force-tlsvXX' statements on bind.
194 - MINOR: ssl: add 'force-sslv3' and 'force-tlsvXX' statements on server
195 - MINOR: ssl: add defines LISTEN_DEFAULT_CIPHERS and CONNECT_DEFAULT_CIPHERS.
196 - BUG/MINOR: ssl: Fix issue on server statements 'no-tls*' and 'no-sslv3'
197 - MINOR: ssl: move ssl context init for servers from cfgparse.c to ssl_sock.c
198 - MEDIUM: ssl: reject ssl server keywords in default-server statement
199 - MINOR: ssl: add statement 'no-tls-tickets' on server side.
200 - MINOR: ssl: add statements 'verify', 'ca-file' and 'crl-file' on servers.
201 - DOC: Fix rename of options cafile and crlfile to ca-file and crl-file.
202 - MINOR: sample: manage binary to string type convertion in stick-table and samples.
203 - MINOR: acl: add parse and match primitives to use binary type on ACLs
204 - MINOR: sample: export 'sample_get_trash_chunk(void)'
205 - MINOR: conf: rename all ssl modules fetches using prefix 'ssl_fc' and 'ssl_c'
206 - MINOR: ssl: add pattern and ACLs fetches 'ssl_fc_protocol', 'ssl_fc_cipher', 'ssl_fc_use_keysize' and 'ssl_fc_alg_keysize'
207 - MINOR: ssl: add pattern fetch 'ssl_fc_session_id'
208 - MINOR: ssl: add pattern and ACLs fetches 'ssl_c_version' and 'ssl_f_version'
209 - MINOR: ssl: add pattern and ACLs fetches 'ssl_c_s_dn', 'ssl_c_i_dn', 'ssl_f_s_dn' and 'ssl_c_i_dn'
210 - MINOR: ssl: add pattern and ACLs 'ssl_c_sig_alg' and 'ssl_f_sig_alg'
211 - MINOR: ssl: add pattern and ACLs fetches 'ssl_c_key_alg' and 'ssl_f_key_alg'
212 - MINOR: ssl: add pattern and ACLs fetches 'ssl_c_notbefore', 'ssl_c_notafter', 'ssl_f_notbefore' and 'ssl_f_notafter'
213 - MINOR: ssl: add 'crt' statement on server.
214 - MINOR: ssl: checks the consistency of a private key with the corresponding certificate
215 - BUG/MEDIUM: ssl: review polling on reneg.
216 - BUG/MEDIUM: ssl: Fix some reneg cases not correctly handled.
217 - BUG/MEDIUM: ssl: Fix sometimes reneg fails if requested by server.
218 - MINOR: build: allow packagers to specify the ssl cache size
219 - MINOR: conf: add warning if ssl is not enabled and a certificate is present on bind.
220 - MINOR: ssl: Add tune.ssl.lifetime statement in global.
221 - MINOR: compression: Enable compression for IE6 w/SP2, IE7 and IE8
222 - BUG: http: revert broken optimisation from 82fe75c1a79dac933391501b9d293bce34513755
223 - DOC: duplicate ssl_sni section
224 - MEDIUM: HTTP compression (zlib library support)
225 - CLEANUP: use struct comp_ctx instead of union
226 - BUILD: remove dependency to zlib.h
227 - MINOR: compression: memlevel and windowsize
228 - MEDIUM: use pool for zlib
229 - MINOR: compression: try init in cfgparse.c
230 - MINOR: compression: init before deleting headers
231 - MEDIUM: compression: limit RAM usage
232 - MINOR: compression: tune.comp.maxlevel
233 - MINOR: compression: maximum compression rate limit
234 - MINOR: log-format: check number of arguments in cfgparse.c
235 - BUG/MEDIUM: compression: no Content-Type header but type in configuration
236 - BUG/MINOR: compression: deinit zlib only when required
237 - MEDIUM: compression: don't compress when no data
238 - MEDIUM: compression: use pool for comp_ctx
239 - MINOR: compression: rate limit in 'show info'
240 - MINOR: compression: report zlib memory usage
241 - BUG/MINOR: compression: dynamic level increase
242 - DOC: compression: unsupported cases.
243 - MINOR: compression: CPU usage limit
244 - MEDIUM: http: add "redirect scheme" to ease HTTP to HTTPS redirection
245 - BUG/MAJOR: ssl: missing tests in ACL fetch functions
246 - MINOR: config: add a function to indent error messages
247 - REORG: split "protocols" files into protocol and listener
248 - MEDIUM: config: replace ssl_conf by bind_conf
249 - CLEANUP: listener: remove unused conf->file and conf->line
250 - MEDIUM: listener: add a minimal framework to register "bind" keyword options
251 - MEDIUM: config: move the "bind" TCP parameters to proto_tcp
252 - MEDIUM: move bind SSL parsing to ssl_sock
253 - MINOR: config: improve error reporting for "bind" lines
254 - MEDIUM: config: move the common "bind" settings to listener.c
255 - MEDIUM: config: move all unix-specific bind keywords to proto_uxst.c
256 - MEDIUM: config: enumerate full list of registered "bind" keywords upon error
257 - MINOR: listener: add a scope field in the bind keyword lists
258 - MINOR: config: pass the file and line to config keyword parsers
259 - MINOR: stats: fill the file and line numbers in the stats frontend
260 - MINOR: config: set the bind_conf entry on listeners created from a "listen" line.
261 - MAJOR: listeners: use dual-linked lists to chain listeners with frontends
262 - REORG: listener: move unix perms from the listener to the bind_conf
263 - BUG: backend: balance hdr was broken since 1.5-dev11
264 - MINOR: standard: make memprintf() support a NULL destination
265 - MINOR: config: make str2listener() use memprintf() to report errors.
266 - MEDIUM: stats: remove the stats_sock struct from the global struct
267 - MINOR: ssl: set the listeners' data layer to ssl during parsing
268 - MEDIUM: stats: make use of the standard "bind" parsers to parse global socket
269 - DOC: move bind options to their own section
270 - DOC: stats: refer to "bind" section for "stats socket" settings
271 - DOC: fix index to reference bind and server options
272 - BUG: http: do not print garbage on invalid requests in debug mode
273 - BUG/MINOR: config: check the proper pointer to report unknown protocol
274 - CLEANUP: connection: offer conn_prepare() to set up a connection
275 - CLEANUP: config: fix typo inteface => interface
276 - BUG: stats: fix regression introduced by commit 4348fad1
277 - MINOR: cli: allow to set frontend maxconn to zero
278 - BUG/MAJOR: http: chunk parser was broken with buffer changes
279 - MEDIUM: monitor: simplify handling of monitor-net and mode health
280 - MINOR: connection: add a pointer to the connection owner
281 - MEDIUM: connection: make use of the owner instead of container_of
282 - BUG/MINOR: ssl: report the L4 connection as established when possible
283 - BUG/MEDIUM: proxy: must not try to stop disabled proxies upon reload
284 - BUG/MINOR: config: use a copy of the file name in proxy configurations
285 - BUG/MEDIUM: listener: don't pause protocols that do not support it
286 - MEDIUM: proxy: add the global frontend to the list of normal proxies
287 - BUG/MINOR: epoll: correctly disable FD polling in fd_rem()
288 - MINOR: signal: really ignore signals configured with no handler
289 - MINOR: buffers: add a few functions to write chars, strings and blocks
290 - MINOR: raw_sock: always report asynchronous connection errors
291 - MEDIUM: raw_sock: improve connection error reporting
292 - REORG: connection: rename the data layer the "transport layer"
293 - REORG: connection: rename app_cb "data"
294 - MINOR: connection: provide a generic data layer wakeup callback
295 - MINOR: connection: split conn_prepare() in two functions
296 - MINOR: connection: add an init callback to the data_cb struct
297 - MEDIUM: session: use a specific data_cb for embryonic sessions
298 - MEDIUM: connection: use a generic data-layer init() callback
299 - MEDIUM: connection: reorganize connection flags
300 - MEDIUM: connection: only call the data->wake callback on activity
301 - MEDIUM: connection: make it possible for data->wake to return an error
302 - MEDIUM: session: register a data->wake callback to process errors
303 - MEDIUM: connection: don't call the data->init callback upon error
304 - MEDIUM: connection: it's not the data layer's role to validate the connection
305 - MEDIUM: connection: automatically disable polling on error
306 - REORG: connection: move the PROXY protocol management to connection.c
307 - MEDIUM: connection: add a new local send-proxy transport callback
308 - MAJOR: checks: make use of the connection layer to send checks
309 - REORG: server: move the check-specific parts into a check subsection
310 - MEDIUM: checks: use real buffers to store requests and responses
311 - MEDIUM: check: add the ctrl and transport layers in the server check structure
312 - MAJOR: checks: completely use the connection transport layer
313 - MEDIUM: checks: add the "check-ssl" server option
314 - MEDIUM: checks: enable the PROXY protocol with health checks
315 - CLEANUP: checks: remove minor warnings for assigned but not used variables
316 - MEDIUM: tcp: enable TCP Fast Open on systems which support it
317 - BUG: connection: fix regression from commit 9e272bf9
318 - CLEANUP: cttproxy: remove a warning on undeclared close()
319 - BUG/MAJOR: ensure that hdr_idx is always reserved when L7 fetches are used
320 - MEDIUM: listener: add support for linux's accept4() syscall
321 - MINOR: halog: sort output by cookie code
322 - BUG/MINOR: halog: -ad/-ac report the correct number of output lines
323 - BUG/MINOR: halog: fix help message for -ut/-uto
324 - MINOR: halog: add a parameter to limit output line count
325 - BUILD: accept4: move the socketcall declaration outside of accept4()
326 - MINOR: server: add minimal infrastructure to parse keywords
327 - MINOR: standard: make indent_msg() support empty messages
328 - MEDIUM: server: check for registered keywords when parsing unknown keywords
329 - MEDIUM: server: move parsing of keyword "id" to server.c
330 - BUG/MEDIUM: config: check-send-proxy was ignored if SSL was not builtin
331 - MEDIUM: ssl: move "server" keyword SSL options parsing to ssl_sock.c
332 - MEDIUM: log: suffix the frontend's name with '~' when using SSL
333 - MEDIUM: connection: always unset the transport layer upon close
334 - BUG/MINOR: session: fix some leftover from debug code
335 - BUG/MEDIUM: session: enable the conn_session_update() callback
336 - MEDIUM: connection: add a flag to hold the transport layer
337 - MEDIUM: log: add a new LW_XPRT flag to pin the transport layer
338 - MINOR: log: make lf_text use a const char *
339 - MEDIUM: log: report SSL ciphers and version in logs using logformat %sslc/%sslv
340 - REORG: http: rename msg->buf to msg->chn since it's a channel
341 - CLEANUP: http: use 'chn' to name channel variables, not 'buf'
342 - CLEANUP: channel: use 'chn' instead of 'buf' as local variable names
343 - CLEANUP: tcp: use 'chn' instead of 'buf' or 'b' for channel pointer names
344 - CLEANUP: stream_interface: use 'chn' instead of 'b' to name channel pointers
345 - CLEANUP: acl: use 'chn' instead of 'b' to name channel pointers
346 - MAJOR: channel: replace the struct buffer with a pointer to a buffer
347 - OPTIM: channel: reorganize struct members to improve cache efficiency
348 - CLEANUP: session: remove term_trace which is not used anymore
349 - OPTIM: session: reorder struct session fields
350 - OPTIM: connection: pack the struct target
351 - DOC: document relations between internal entities
352 - MINOR: ssl: add 'ssl_npn' sample/acl to extract TLS/NPN information
353 - BUILD: ssl: fix shctx build on older compilers
354 - MEDIUM: ssl: add support for the "npn" bind keyword
355 - BUG: ssl: fix ssl_sni ACLs to correctly process regular expressions
356 - MINOR: chunk: provide string compare functions
357 - MINOR: sample: accept fetch keywords without parenthesis
358 - MEDIUM: sample: pass an empty list instead of a null for fetch args
359 - MINOR: ssl: improve socket behaviour upon handshake abort.
360 - BUG/MEDIUM: http: set DONTWAIT on data when switching to tunnel mode
361 - MEDIUM: listener: provide a fallback for accept4() when not supported
362 - BUG/MAJOR: connection: risk of crash on certain tricky close scenario
363 - MEDIUM: cli: allow the stats socket to be bound to a specific set of processes
364 - OPTIM: channel: inline channel_forward's fast path
365 - OPTIM: http: inline http_parse_chunk_size() and http_skip_chunk_crlf()
366 - OPTIM: tools: inline hex2i()
367 - CLEANUP: http: rename HTTP_MSG_DATA_CRLF state
368 - MINOR: compression: automatically disable compression for older browsers
369 - MINOR: compression: optimize memLevel to improve byte rate
370 - BUG/MINOR: http: compression should consider all Accept-Encoding header values
371 - BUILD: fix coexistence of openssl and zlib
372 - MINOR: ssl: add pattern and ACLs fetches 'ssl_c_serial' and 'ssl_f_serial'
373 - BUG/MEDIUM: command-line option -D must have precedence over "debug"
374 - MINOR: tools: add a clear_addr() function to unset an address
375 - BUG/MEDIUM: tcp: transparent bind to the source only when address is set
376 - CLEANUP: remove trashlen
377 - MAJOR: session: detach the connections from the stream interfaces
378 - DOC: update document describing relations between internal entities
379 - BUILD: make it possible to specify ZLIB path
380 - MINOR: compression: add an offload option to remove the Accept-Encoding header
381 - BUG: compression: disable auto-close and enable MSG_MORE during transfer
382 - CLEANUP: completely remove trashlen
383 - MINOR: chunk: add a function to reset a chunk
384 - CLEANUP: replace chunk_printf() with chunk_appendf()
385 - MEDIUM: make the trash be a chunk instead of a char *
386 - MEDIUM: remove remains of BUFSIZE in HTTP auth and sample conversions
387 - MEDIUM: stick-table: allocate the table key of size buffer size
388 - BUG/MINOR: stream_interface: don't loop over ->snd_buf()
389 - BUG/MINOR: session: ensure that we don't retry connection if some data were sent
390 - OPTIM: session: don't process the whole session when only timers need a refresh
391 - BUG/MINOR: session: mark the handshake as complete earlier
392 - MAJOR: connection: remove the CO_FL_CURR_*_POL flag
393 - BUG/MAJOR: always clear the CO_FL_WAIT_* flags after updating polling flags
394 - MAJOR: sepoll: make the poller totally event-driven
395 - OPTIM: stream_interface: disable reading when CF_READ_DONTWAIT is set
396 - BUILD: compression: remove a build warning
397 - MEDIUM: fd: don't unset fdtab[].updated upon delete
398 - REORG: fd: move the speculative I/O management from ev_sepoll
399 - REORG: fd: move the fd state management from ev_sepoll
400 - REORG: fd: centralize the processing of speculative events
401 - BUG: raw_sock: also consider ENOTCONN in addition to EAGAIN
402 - BUILD: stream_interface: remove si_fd() and its references
403 - BUILD: compression: enable build in BSD and OSX Makefiles
404 - MAJOR: ev_select: make the poller support speculative events
405 - MAJOR: ev_poll: make the poller support speculative events
406 - MAJOR: ev_kqueue: make the poller support speculative events
407 - MAJOR: polling: replace epoll with sepoll and remove sepoll
408 - MAJOR: polling: remove unused callbacks from the poller struct
409 - MEDIUM: http: refrain from sending "Connection: close" when Upgrade is present
410 - CLEANUP: channel: remove any reference of the hijackers
411 - CLEANUP: stream_interface: remove the external task type target
412 - MAJOR: connection: replace struct target with a pointer to an enum
413 - BUG: connection: fix typo in previous commit
414 - BUG: polling: don't skip polled events in the spec list
415 - MINOR: splice: disable it when the system returns EBADF
416 - MINOR: build: allow packagers to specify the default maxzlibmem
417 - BUG: halog: fix broken output limitation
418 - BUG: proxy: fix server name lookup in get_backend_server()
419 - BUG: compression: do not always increment the round counter on allocation failure
420 - BUG/MEDIUM: compression: release the zlib pools between keep-alive requests
421 - MINOR: global: don't prevent nbproc from being redefined
422 - MINOR: config: support process ranges for "bind-process"
423 - MEDIUM: global: add support for CPU binding on Linux ("cpu-map")
424 - MINOR: ssl: rename and document the tune.ssl.cachesize option
425 - DOC: update the PROXY protocol spec to support v2
426 - MINOR: standard: add a simple popcount function
427 - MEDIUM: adjust the maxaccept per listener depending on the number of processes
428 - BUG: compression: properly disable compression when content-type does not match
429 - MINOR: cli: report connection status in "show sess xxx"
430 - BUG/MAJOR: stream_interface: certain workloads could cause get stuck
431 - BUILD: cli: fix build when SSL is enabled
432 - MINOR: cli: report the fd state in "show sess xxx"
433 - MINOR: cli: report an error message on missing argument to compression rate
434 - MINOR: http: add some debugging functions to pretty-print msg state names
435 - BUG/MAJOR: stream_interface: read0 not always handled since dev12
436 - DOC: documentation on http header capture is wrong
437 - MINOR: http: allow the cookie capture size to be changed
438 - DOC: http header capture has not been limited in size for a long time
439 - DOC: update readme with build methods for BSD
440 - BUILD: silence a warning on Solaris about usage of isdigit()
441 - MINOR: stats: report HTTP compression stats per frontend and per backend
442 - MINOR: log: add '%Tl' to log-format
443 - MINOR: samples: update the url_param fetch to match parameters in the path
444
Willy Tarreau16216822012-09-10 09:46:55 +02004452012/09/10 : 1.5-dev12
446 - CONTRIB: halog: sort URLs by avg bytes_read or total bytes_read
447 - MEDIUM: ssl: add support for prefer-server-ciphers option
448 - MINOR: IPv6 support for transparent proxy
449 - MINOR: protocol: add SSL context to listeners if USE_OPENSSL is defined
450 - MINOR: server: add SSL context to servers if USE_OPENSSL is defined
451 - MEDIUM: connection: add a new handshake flag for SSL (CO_FL_SSL_WAIT_HS).
452 - MEDIUM: ssl: add new files ssl_sock.[ch] to provide the SSL data layer
453 - MEDIUM: config: add the 'ssl' keyword on 'bind' lines
454 - MEDIUM: config: add support for the 'ssl' option on 'server' lines
455 - MEDIUM: ssl: protect against client-initiated renegociation
456 - BUILD: add optional support for SSL via the USE_OPENSSL flag
457 - MEDIUM: ssl: add shared memory session cache implementation.
458 - MEDIUM: ssl: replace OpenSSL's session cache with the shared cache
459 - MINOR: ssl add global setting tune.sslcachesize to set SSL session cache size.
460 - MEDIUM: ssl: add support for SNI and wildcard certificates
461 - DOC: Typos cleanup
462 - DOC: fix name for "option independant-streams"
463 - DOC: specify the default value for maxconn in the context of a proxy
464 - BUG/MINOR: to_log erased with unique-id-format
465 - LICENSE: add licence exception for OpenSSL
466 - BUG/MAJOR: cookie prefix doesn't support cookie-less servers
467 - BUILD: add an AIX 5.2 (and later) target.
468 - MEDIUM: fd/si: move peeraddr from struct fdinfo to struct connection
469 - MINOR: halog: use the more recent dual-mode fgets2 implementation
470 - BUG/MEDIUM: ebtree: ebmb_insert() must not call cmp_bits on full-length matches
471 - CLEANUP: halog: make clean should also remove .o files
472 - OPTIM: halog: make use of memchr() on platforms which provide a fast one
473 - OPTIM: halog: improve cold-cache behaviour when loading a file
474 - BUG/MINOR: ACL implicit arguments must be created with unresolved flag
475 - MINOR: replace acl_fetch_{path,url}* with smp_fetch_*
476 - MEDIUM: pattern: add the "base" sample fetch method
477 - OPTIM: i386: make use of kernel-mode-linux when available
478 - BUG/MINOR: tarpit: fix condition to return the HTTP 500 message
479 - BUG/MINOR: polling: some events were not set in various pollers
480 - MINOR: http: add the urlp_val ACL match
481 - BUG: stktable: tcp_src_to_stktable_key() must return NULL on invalid families
482 - MINOR: stats/cli: add plans to support more stick-table actions
483 - MEDIUM: stats/cli: add support for "set table key" to enter values
484 - REORG/MEDIUM: fd: remove FD_STCLOSE from struct fdtab
485 - REORG/MEDIUM: fd: remove checks for FD_STERROR in ev_sepoll
486 - REORG/MEDIUM: fd: get rid of FD_STLISTEN
487 - REORG/MINOR: connection: move declaration to its own include file
488 - REORG/MINOR: checks: put a struct connection into the server
489 - MINOR: connection: add flags to the connection struct
490 - MAJOR: get rid of fdtab[].state and use connection->flags instead
491 - MINOR: fd: add a new I/O handler to fdtab
492 - MEDIUM: polling: prepare to call the iocb() function when defined.
493 - MEDIUM: checks: make use of fdtab->iocb instead of cb[]
494 - MEDIUM: protocols: use the generic I/O callback for accept callbacks
495 - MINOR: connection: add a handler for fd-based connections
496 - MAJOR: connection: replace direct I/O callbacks with the connection callback
497 - MINOR: fd: make fdtab->owner a connection and not a stream_interface anymore
498 - MEDIUM: connection: remove the FD_POLL_* flags only once
499 - MEDIUM: connection: extract the send_proxy callback from proto_tcp
500 - MAJOR: tcp: remove the specific I/O callbacks for TCP connection probes
501 - CLEANUP: remove the now unused fdtab direct I/O callbacks
502 - MAJOR: remove the stream interface and task management code from sock_*
503 - MEDIUM: stream_interface: pass connection instead of fd in sock_ops
504 - MEDIUM: stream_interface: centralize the SI_FL_ERR management
505 - MAJOR: connection: add a new CO_FL_CONNECTED flag
506 - MINOR: rearrange tcp_connect_probe() and fix wrong return codes
507 - MAJOR: connection: call data layer handshakes from the handler
508 - MEDIUM: fd: remove the EV_FD_COND_* primitives
509 - MINOR: sock_raw: move calls to si_data_close upper
510 - REORG: connection: replace si_data_close() with conn_data_close()
511 - MEDIUM: sock_raw: introduce a read0 callback that is different from shutr
512 - MAJOR: stream_int: use a common stream_int_shut*() functions regardless of the data layer
513 - MAJOR: fd: replace all EV_FD_* macros with new fd_*_* inline calls
514 - MEDIUM: fd: add fd_poll_{recv,send} for use when explicit polling is required
515 - MEDIUM: connection: add definitions for dual polling mechanisms
516 - MEDIUM: connection: make use of the new polling functions
517 - MAJOR: make use of conn_{data|sock}_{poll|stop|want}* in connection handlers
518 - MEDIUM: checks: don't use FD_WAIT_* anymore
519 - MINOR: fd: get rid of FD_WAIT_*
520 - MEDIUM: stream_interface: offer a generic function for connection updates
521 - MEDIUM: stream-interface: offer a generic chk_rcv function for connections
522 - MEDIUM: stream-interface: add a snd_buf() callback to sock_ops
523 - MEDIUM: stream-interface: provide a generic stream_int_chk_snd_conn() function
524 - MEDIUM: stream-interface: provide a generic si_conn_send_cb callback
525 - MEDIUM: stream-interface: provide a generic stream_sock_read0() function
526 - REORG/MAJOR: use "struct channel" instead of "struct buffer"
527 - REORG/MAJOR: extract "struct buffer" from "struct channel"
528 - MINOR: connection: provide conn_{data|sock}_{read0|shutw} functions
529 - REORG: sock_raw: rename the files raw_sock*
530 - MAJOR: raw_sock: extract raw_sock_to_buf() from raw_sock_read()
531 - MAJOR: raw_sock: temporarily disable splicing
532 - MINOR: stream-interface: add an rcv_buf callback to sock_ops
533 - REORG: stream-interface: move sock_raw_read() to si_conn_recv_cb()
534 - MAJOR: connection: split the send call into connection and stream interface
535 - MAJOR: stream-interface: restore splicing mechanism
536 - MAJOR: stream-interface: make conn_notify_si() more robust
537 - MEDIUM: proxy-proto: don't use buffer flags in conn_si_send_proxy()
538 - MAJOR: stream-interface: don't commit polling changes in every callback
539 - MAJOR: stream-interface: fix splice not to call chk_snd by itself
540 - MEDIUM: stream-interface: don't remove WAIT_DATA when a handshake is in progress
541 - CLEANUP: connection: split sock_ops into data_ops, app_cp and si_ops
542 - REORG: buffers: split buffers into chunk,buffer,channel
543 - MAJOR: channel: remove the BF_OUT_EMPTY flag
544 - REORG: buffer: move buffer_flush, b_adv and b_rew to buffer.h
545 - MINOR: channel: rename bi_full to channel_full as it checks the whole channel
546 - MINOR: buffer: provide a new buffer_full() function
547 - MAJOR: channel: stop relying on BF_FULL to take action
548 - MAJOR: channel: remove the BF_FULL flag
549 - REORG: channel: move buffer_{replace,insert_line}* to buffer.{c,h}
550 - CLEANUP: channel: usr CF_/CHN_ prefixes instead of BF_/BUF_
551 - CLEANUP: channel: use "channel" instead of "buffer" in function names
552 - REORG: connection: move the target pointer from si to connection
553 - MAJOR: connection: move the addr field from the stream_interface
554 - MEDIUM: stream_interface: remove CAP_SPLTCP/CAP_SPLICE flags
555 - MEDIUM: proto_tcp: remove any dependence on stream_interface
556 - MINOR: tcp: replace tcp_src_to_stktable_key with addr_to_stktable_key
557 - MEDIUM: connection: add an ->init function to data layer
558 - MAJOR: session: introduce embryonic sessions
559 - MAJOR: connection: make the PROXY decoder a handshake handler
560 - CLEANUP: frontend: remove the old proxy protocol decoder
561 - MAJOR: connection: rearrange the polling flags.
562 - MEDIUM: connection: only call tcp_connect_probe when nothing was attempted yet
563 - MEDIUM: connection: complete the polling cleanups
564 - MEDIUM: connection: avoid calling handshakes when polling is required
565 - MAJOR: stream_interface: continue to update data polling flags during handshakes
566 - CLEANUP: fd: remove fdtab->flags
567 - CLEANUP: fdtab: flatten the struct and merge the spec struct with the rest
568 - CLEANUP: includes: fix includes for a number of users of fd.h
569 - MINOR: ssl: disable TCP quick-ack by default on SSL listeners
570 - MEDIUM: config: add a "ciphers" keyword to set SSL cipher suites
571 - MEDIUM: config: add "nosslv3" and "notlsv1" on bind and server lines
572 - BUG: ssl: mark the connection as waiting for an SSL connection during the handshake
573 - BUILD: http: rename error_message http_error_message to fix conflicts on RHEL
574 - BUILD: ssl: fix shctx build on RHEL with futex
575 - BUILD: include sys/socket.h to fix build failure on FreeBSD
576 - BUILD: fix build error without SSL (ssl_cert)
577 - BUILD: ssl: use MAP_ANON instead of MAP_ANONYMOUS
578 - BUG/MEDIUM: workaround an eglibc bug which truncates the pidfiles when nbproc > 1
579 - MEDIUM: config: support per-listener backlog and maxconn
580 - MINOR: session: do not send an HTTP/500 error on SSL sockets
581 - MEDIUM: config: implement maxsslconn in the global section
582 - BUG: tcp: close socket fd upon connect error
583 - MEDIUM: connection: improve error handling around the data layer
584 - MINOR: config: make the tasks "nice" value configurable on "bind" lines.
585 - BUILD: shut a gcc warning introduced by commit 269ab31
586 - MEDIUM: config: centralize handling of SSL config per bind line
587 - BUILD: makefile: report USE_OPENSSL status in build options
588 - BUILD: report openssl build settings in haproxy -vv
589 - MEDIUM: ssl: add sample fetches for is_ssl, ssl_has_sni, ssl_sni_*
590 - DOC: add a special acknowledgement for the stud project
591 - DOC: add missing SSL options for servers and listeners
592 - BUILD: automatically add -lcrypto for SSL
593 - DOC: add some info about openssl build in the README
594
Willy Tarreau02c7c142012-06-04 00:43:45 +02005952012/06/04 : 1.5-dev11
596 - BUG/MEDIUM: option forwardfor if-none doesn't work with some configurations
597 - BUG/MAJOR: trash must always be the size of a buffer
598 - DOC: fix minor regex example issue and improve doc on stats
599 - MINOR: stream_interface: add a pointer to the listener for TARG_TYPE_CLIENT
600 - MEDIUM: protocol: add a pointer to struct sock_ops to the listener struct
601 - MINOR: checks: add on-marked-up option
602 - MINOR: balance uri: added 'whole' parameter to include query string in hash calculation
603 - MEDIUM: stream_interface: remove the si->init
604 - MINOR: buffers: add a rewind function
605 - BUG/MAJOR: fix regression on content-based hashing and http-send-name-header
606 - MAJOR: http: stop using msg->sol outside the parsers
607 - CLEANUP: http: make it more obvious that msg->som is always null outside of chunks
608 - MEDIUM: http: get rid of msg->som which is not used anymore
609 - MEDIUM: http: msg->sov and msg->sol will never wrap
610 - BUG/MAJOR: checks: don't call set_server_status_* when no LB algo is set
611 - BUG/MINOR: stop connect timeout when connect succeeds
612 - REORG: move the send-proxy code to tcp_connect_write()
613 - REORG/MINOR: session: detect the TCP monitor checks at the protocol accept
614 - MINOR: stream_interface: introduce a new "struct connection" type
615 - REORG/MINOR: stream_interface: move si->fd to struct connection
616 - REORG/MEDIUM: stream_interface: move applet->state and private to connection
617 - MINOR: stream_interface: add a data channel close function
618 - MEDIUM: stream_interface: call si_data_close() before releasing the si
619 - MINOR: peers: use the socket layer operations from the peer instead of sock_raw
620 - BUG/MINOR: checks: expire on timeout.check if smaller than timeout.connect
621 - MINOR: add a new function call tracer for debugging purposes
622 - BUG/MINOR: perform_http_redirect also needs to rewind the buffer
623 - BUG/MAJOR: b_rew() must pass a signed offset to b_ptr()
624 - BUG/MEDIUM: register peer sync handler in the proper order
625 - BUG/MEDIUM: buffers: fix bi_putchr() to correctly advance the pointer
626 - BUG/MINOR: fix option httplog validation with TCP frontends
627 - BUG/MINOR: log: don't report logformat errors in backends
628 - REORG/MINOR: use dedicated proxy flags for the cookie handling
629 - BUG/MINOR: config: do not report twice the incompatibility between cookie and non-http
630 - MINOR: http: add support for "httponly" and "secure" cookie attributes
631 - BUG/MEDIUM: ensure that unresolved arguments are freed exactly once
632 - BUG/MINOR: commit 196729ef used wrong condition resulting in freeing constants
633 - MEDIUM: stats: add support for soft stop/soft start in the admin interface
634 - MEDIUM: stats: add the ability to kill sessions from the admin interface
635 - BUILD: add support for linux kernels >= 2.6.28
636
Willy Tarreauffb89472012-05-14 07:26:56 +02006372012/05/14 : 1.5-dev10
638 - BUG/MINOR: stats admin: "Unexpected result" was displayed unconditionally
639 - BUG/MAJOR: acl: http_auth_group() must not accept any user from the userlist
640 - CLEANUP: auth: make the code build again with DEBUG_AUTH
641 - BUG/MEDIUM: config: don't crash at config load time on invalid userlist names
642 - REORG: use the name sock_raw instead of stream_sock
643 - MINOR: stream_interface: add a client target : TARG_TYPE_CLIENT
644 - BUG/MEDIUM: stream_interface: restore get_src/get_dst
645 - CLEANUP: sock_raw: remove last references to stream_sock
646 - CLEANUP: stream_interface: stop exporting socket layer functions
647 - MINOR: stream_interface: add an init callback to sock_ops
648 - MEDIUM: stream_interface: derive the socket operations from the target
649 - MAJOR: fd: remove the need for the socket layer to recheck the connection
650 - MINOR: session: call the socket layer init function when a session establishes
651 - MEDIUM: session: add support for tunnel timeouts
652 - MINOR: standard: add a new debug macro : fddebug()
653 - CLEANUP: fd: remove unused cb->b pointers in the struct fdtab
654 - OPTIM: proto_http: don't enable quick-ack on empty buffers
655 - OPTIM/MAJOR: ev_sepoll: process spec events after polled events
656 - OPTIM/MEDIUM: stream_interface: add a new SI_FL_NOHALF flag
657
Willy Tarreaua0564f32012-05-08 21:56:27 +02006582012/05/08 : 1.5-dev9
659 - MINOR: Add release callback to si_applet
660 - CLEANUP: Fix some minor typos
661 - MINOR: Add TO/FROM_SET flags to struct stream_interface
662 - CLEANUP: Fix some minor whitespace issues
663 - MINOR: stats admin: allow unordered parameters in POST requests
664 - CLEANUP: fix typo in findserver() log message
665 - MINOR: stats admin: use the backend id instead of its name in the form
666 - MINOR: stats admin: reduce memcmp()/strcmp() calls on status codes
667 - DOC: cleanup indentation, alignment, columns and chapters
668 - DOC: fix some keywords arguments documentation
669 - MINOR: cli: display the 4 IP addresses and ports on "show sess XXX"
670 - BUG/MAJOR: log: possible segfault with logformat
671 - MEDIUM: log: split of log_format generation
672 - MEDIUM: log: New format-log flags: %Fi %Fp %Si %Sp %Ts %rt %H %pid
673 - MEDIUM: log: Unique ID
674 - MINOR: log: log-format: usable without httplog and tcplog
675 - BUG/MEDIUM: balance source did not properly hash IPv6 addresses
676 - MINOR: contrib/iprange: add a network IP range to mask converter
677 - MEDIUM: session: implement the "use-server" directive
678 - MEDIUM: log: add a new cookie flag 'U' to report situations where cookie is not used
679 - MEDIUM: http: make extract_cookie_value() iterate over cookie values
680 - MEDIUM: http: add cookie and scookie ACLs
681 - CLEANUP: lb_first: add reference to a paper describing the original idea
682 - MEDIUM: stream_sock: add a get_src and get_dst callback and remove SN_FRT_ADDR_SET
683 - BUG/MINOR: acl: req_ssl_sni would randomly fail if a session ID is present
684 - BUILD: http: make extract_cookie_value() return an int not size_t
685 - BUILD: http: stop gcc-4.1.2 from complaining about possibly uninitialized values
686 - CLEANUP: http: message parser must ignore HTTP_MSG_ERROR
687 - MINOR: standard: add a memprintf() function to build formatted error messages
688 - CLEANUP: remove a few warning about unchecked return values in debug code
689 - MEDIUM: move message-related flags from transaction to message
690 - DOC: add a diagram to explain how circular buffers work
691 - MAJOR: buffer rework: replace ->send_max with ->o
692 - MAJOR: buffer: replace buf->l with buf->{o+i}
693 - MINOR: buffers: provide simple pointer normalization functions
694 - MINOR: buffers: remove unused function buffer_contig_data()
695 - MAJOR: buffers: replace buf->w with buf->p - buf->o
696 - MAJOR: buffers: replace buf->r with buf->p + buf->i
697 - MAJOR: http: move buffer->lr to http_msg->next
698 - MAJOR: http: change msg->{som,col,sov,eoh} to be relative to buffer origin
699 - CLEANUP: http: remove unused http_msg->col
700 - MAJOR: http: turn http_msg->eol to a buffer-relative offset
701 - MEDIUM: http: add a pointer to the buffer in http_msg
702 - MAJOR: http: make http_msg->sol relative to buffer's origin
703 - MEDIUM: http: http_send_name_header: remove references to msg and buffer
704 - MEDIUM: http: remove buffer arg in a few header manipulation functions
705 - MEDIUM: http: remove buffer arg in http_capture_bad_message
706 - MEDIUM: http: remove buffer arg in http_msg_analyzer
707 - MEDIUM: http: remove buffer arg in http_upgrade_v09_to_v10
708 - MEDIUM: http: remove buffer arg in http_buffer_heavy_realign
709 - MEDIUM: http: remove buffer arg in chunk parsing functions
710 - MINOR: http: remove useless wrapping checks in http_msg_analyzer
711 - MEDIUM: buffers: fix unsafe use of buffer_ignore at some places
712 - MEDIUM: buffers: add new pointer wrappers and get rid of almost all buffer_wrap_add calls
713 - MEDIUM: buffers: implement b_adv() to advance a buffer's pointer
714 - MEDIUM: buffers: rename a number of buffer management functions
715 - MEDIUM: http: add a prefetch function for ACL pattern fetch
716 - MEDIUM: http: make all ACL fetch function use acl_prefetch_http()
717 - BUG/MINOR: http_auth: ACLs are volatile, not permanent
718 - MEDIUM: http/acl: merge all request and response ACL fetches of headers and cookies
719 - MEDIUM: http/acl: make acl_fetch_hdr_{ip,val} rely on acl_fetch_hdr()
720 - MEDIUM: add a new typed argument list parsing framework
721 - MAJOR: acl: make use of the new argument parsing framework
722 - MAJOR: acl: store the ACL argument types in the ACL keyword declaration
723 - MEDIUM: acl: acl_find_target() now resolves arguments based on their types
724 - MAJOR: acl: make acl_find_targets also resolve proxy names at config time
725 - MAJOR: acl: ensure that implicit table and proxies are valid
726 - MEDIUM: acl: remove unused tests for missing args when args are mandatory
727 - MEDIUM: pattern: replace type pattern_arg with type arg
728 - MEDIUM: pattern: get rid of arg_i in all functions making use of arguments
729 - MEDIUM: pattern: use the standard arg parser
730 - MEDIUM: pattern: add an argument validation callback to pattern descriptors
731 - MEDIUM: pattern: report the precise argument parsing error when known.
732 - MEDIUM: acl: remove the ACL_TEST_F_NULL_MATCH flag
733 - MINOR: pattern: add a new 'sample' type to store fetched data
734 - MEDIUM: pattern: add new sample types to replace pattern types
735 - MAJOR: acl: make use of the new sample struct and get rid of acl_test
736 - MEDIUM: pattern/acl: get rid of temp_pattern in ACLs
737 - MEDIUM: acl: get rid of the SET_RES flags
738 - MEDIUM: get rid of SMP_F_READ_ONLY and SMP_F_MUST_FREE
739 - MINOR: pattern: replace struct pattern with struct sample
740 - MEDIUM: pattern: integrate pattern_data into sample and use sample everywhere
741 - MEDIUM: pattern: retrieve the sample type in the sample, not in the keyword description
742 - MEDIUM: acl/pattern: switch rdp_cookie functions stack up-down
743 - MEDIUM: acl: replace acl_expr with args in acl fetch_* functions
744 - MINOR: tcp: replace acl_fetch_rdp_cookie with smp_fetch_rdp_cookie
745 - MEDIUM: acl/pattern: use the same direction scheme
746 - MEDIUM: acl/pattern: start merging common sample fetch functions
747 - MEDIUM: pattern: ensure that sample types always cast into other types.
748 - MEDIUM: acl/pattern: factor out the src/dst address fetches
749 - MEDIUM: acl: implement payload and payload_lv
750 - CLEANUP: pattern: ensure that payload and payload_lv always stay in the buffer
751 - MINOR: stick_table: centralize the handling of empty keys
752 - MINOR: pattern: centralize handling of unstable data in pattern_process()
753 - MEDIUM: pattern: use smp_fetch_rdp_cookie instead of the pattern specific version
754 - MINOR: acl: set SMP_OPT_ITERATE on fetch functions
755 - MINOR: acl: add a val_args field to keywords
756 - MINOR: proto_tcp: validate arguments of payload and payload_lv ACLs
757 - MEDIUM: http: merge acl and pattern header fetch functions
758 - MEDIUM: http: merge ACL and pattern cookie fetches into a single one
759 - MEDIUM: acl: report parsing errors to the caller
760 - MINOR: arg: improve error reporting on invalid arguments
761 - MINOR: acl: report errors encountered when loading patterns from files
762 - MEDIUM: acl: extend the pattern parsers to report meaningful errors
763 - REORG: use the name "sample" instead of "pattern" to designate extracted data
764 - REORG: rename "pattern" files
765 - MINOR: acl: add types to ACL patterns
766 - MINOR: standard: add an IPv6 parsing function (str62net)
767 - MEDIUM: acl: support IPv6 address matching
768 - REORG: stream_interface: create a struct sock_ops to hold socket operations
769 - REORG/MEDIUM: move protocol->{read,write} to sock_ops
770 - REORG/MEDIUM: stream_interface: initialize socket ops from descriptors
771 - REORG/MEDIUM: replace stream interface protocol functions by a proto pointer
772 - REORG/MEDIUM: move the default accept function from sockstream to protocols.c
773 - MEDIUM: proto_tcp: remove src6 and dst6 pattern fetch methods
774 - BUG/MINOR: http: error snapshots are wrong if buffer wraps
775 - BUG/MINOR: http: ensure that msg->err_pos is always relative to buf->p
776 - MEDIUM: http: improve error capture reports
777 - MINOR: acl: add the cook_val() match to match a cookie against an integer
778 - BUG/MEDIUM: send_proxy: fix initialisation of send_proxy_ofs
779 - MEDIUM: memory: add the ability to poison memory at run time
780 - BUG/MEDIUM: log: ensure that unique_id is properly initialized
781 - MINOR: cfgparse: use a common errmsg pointer for all parsers
782 - MEDIUM: cfgparse: make backend_parse_balance() use memprintf to report errors
783 - MEDIUM: cfgparse: use the new error reporting framework for remaining cfg_keywords
784 - MINOR: http: replace http_message_realign() with buffer_slow_realign()
785
Willy Tarreau9eeb57b2012-03-26 06:15:29 +02007862012/03/26 : 1.5-dev8
787 - MINOR: patch for minor typo (ressources/resources)
788 - MEDIUM: http: add support for sending the server's name in the outgoing request
789 - DOC: mention that default checks are TCP connections
790 - BUG/MINOR: fix options forwardfor if-none when an alternative header name is specified
791 - CLEANUP: Make check_statuses, analyze_statuses and process_chk static
792 - CLEANUP: Fix HCHK spelling errors
793 - BUG/MINOR: fix typo in processing of http-send-name-header
794 - MEDIUM: log: Use linked lists for loggers
795 - BUILD: fix declaration inside a scope block
796 - REORG: log: split send_log function
797 - MINOR: config: Parse the string of the log-format config keyword
798 - MINOR: add ultoa, ulltoa, ltoa, lltoa implementations
799 - MINOR: Date and time fonctions that don't use snprintf
800 - MEDIUM: log: make http_sess_log use log_format
801 - DOC: log-format documentation
802 - MEDIUM: log: use log_format for mode tcplog
803 - MEDIUM: log-format: backend source address %Bi %Bp
804 - BUG/MINOR: log-format: fix %o flag
805 - BUG/MEDIUM: bad length in log_format and __send_log
806 - MINOR: logformat %st is signed
807 - BUILD/MINOR: fix the source URL in the spec file
808 - DOC: acl is http_first_req, not http_req_first
809 - BUG/MEDIUM: don't trim last spaces from headers consisting only of spaces
810 - MINOR: acl: add new matches for header/path/url length
811 - BUILD: halog: make halog build on solaris
812 - BUG/MINOR: don't use a wrong port when connecting to a server with mapped ports
813 - MINOR: remove the client/server side distinction in SI addresses
814 - MINOR: halog: add support for matching queued requests
815 - DOC: indicate that cookie "prefix" and "indirect" should not be mixed
816 - OPTIM/MINOR: move struct sockaddr_storage to the tail of structs
817 - OPTIM/MINOR: make it possible to change pipe size (tune.pipesize)
818 - BUILD/MINOR: silent a build warning in src/pipe.c (fcntl)
819 - OPTIM/MINOR: move the hdr_idx pools out of the proxy struct
820 - MEDIUM: tune.http.maxhdr makes it possible to configure the maximum number of HTTP headers
821 - BUG/MINOR: fix a segfault when parsing a config with undeclared peers
822 - CLEANUP: rename possibly confusing struct field "tracked"
823 - BUG/MEDIUM: checks: fix slowstart behaviour when server tracking is in use
824 - MINOR: config: tolerate server "cookie" setting in non-HTTP mode
825 - MEDIUM: buffers: add some new primitives and rework existing ones
826 - BUG: buffers: don't return a negative value on buffer_total_space_res()
827 - MINOR: buffers: make buffer_pointer() support negative pointers too
828 - CLEANUP: kill buffer_replace() and use an inline instead
829 - BUG: tcp: option nolinger does not work on backends
830 - CLEANUP: ebtree: remove a few annoying signedness warnings
831 - CLEANUP: ebtree: clarify licence and update to 6.0.6
832 - CLEANUP: ebtree: remove 4-year old harmless typo in duplicates insertion code
833 - CLEANUP: ebtree: remove another typo, a wrong initialization in insertion code
834 - BUG: ebtree: ebst_lookup() could return the wrong entry
835 - OPTIM: stream_sock: reduce the amount of in-flight spliced data
836 - OPTIM: stream_sock: save a failed recv syscall when splice returns EAGAIN
837 - MINOR: acl: add support for TLS server name matching using SNI
838 - BUG: http: re-enable TCP quick-ack upon incomplete HTTP requests
839 - BUG: proto_tcp: don't try to bind to a foreign address if sin_family is unknown
840 - MINOR: pattern: export the global temporary pattern
841 - CLEANUP: patterns: get rid of pattern_data_setstring()
842 - MEDIUM: acl: use temp_pattern to store fetched information in the "method" match
843 - MINOR: acl: include pattern.h to make pattern migration more transparent
844 - MEDIUM: pattern: change the pattern data integer from unsigned to signed
845 - MEDIUM: acl: use temp_pattern to store any integer-type information
846 - MEDIUM: acl: use temp_pattern to store any address-type information
847 - CLEANUP: acl: integer part of acl_test is not used anymore
848 - MEDIUM: acl: use temp_pattern to store any string-type information
849 - CLEANUP: acl: remove last data fields from the acl_test struct
850 - MEDIUM: http: replace get_ip_from_hdr2() with http_get_hdr()
851 - MEDIUM: patterns: the hdr() pattern is now of type string
852 - DOC: add minimal documentation on how ACLs work internally
853 - DOC: add a coding-style file
854 - OPTIM: halog: keep a fast path for the lines-count only
855 - CLEANUP: silence a warning when building on sparc
856 - BUG: http: tighten the list of allowed characters in a URI
857 - MEDIUM: http: block non-ASCII characters in URIs by default
858 - DOC: add some documentation from RFC3986 about URI format
859 - BUG/MINOR: cli: correctly remove the whole table on "clear table"
860 - BUG/MEDIUM: correctly disable servers tracking another disabled servers.
861 - BUG/MEDIUM: zero-weight servers must not dequeue requests from the backend
862 - MINOR: halog: add some help on the command line
863 - BUILD: fix build error on FreeBSD
864 - BUG: fix double free in peers config error path
865 - MEDIUM: improve config check return codes
866 - BUILD: make it possible to look for pcre in the default system paths
867 - MINOR: config: emit a warning when 'default_backend' masks servers
868 - MINOR: backend: rework the LC definition to support other connection-based algos
869 - MEDIUM: backend: add the 'first' balancing algorithm
870 - BUG: fix httplog trailing LF
871 - MEDIUM: increase chunk-size limit to 2GB-1
872 - BUG: queue: fix dequeueing sequence on HTTP keep-alive sessions
873 - BUG: http: disable TCP delayed ACKs when forwarding content-length data
874 - BUG: checks: fix server maintenance exit sequence
875 - BUG/MINOR: stream_sock: don't remove BF_EXPECT_MORE and BF_SEND_DONTWAIT on partial writes
876 - DOC: enumerate valid status codes for "observe layer7"
877 - MINOR: buffer: switch a number of buffer args to const
878 - CLEANUP: silence signedness warning in acl.c
879 - BUG: stream_sock: si->release was not called upon shutw()
880 - MINOR: log: use "%ts" to log term status only and "%tsc" to log with cookie
881 - BUG/CRITICAL: log: fix risk of crash in development snapshot
882 - BUG/MAJOR: possible crash when using capture headers on TCP frontends
883 - MINOR: config: disable header captures in TCP mode and complain
884
Willy Tarreau60612eb2011-09-10 23:43:11 +02008852011/09/10 : 1.5-dev7
886 - [BUG] fix binary stick-tables
887 - [MINOR] http: *_dom matching header functions now also split on ":"
888 - [BUG] checks: fix support of Mysqld >= 5.5 for mysql-check
889 - [MINOR] acl: add srv_conn acl to count connections on a specific backend server
890 - [MINOR] check: add redis check support
891 - [DOC] small fixes to clearly distinguish between keyword and variables
892 - [MINOR] halog: add support for termination code matching (-tcn/-TCN)
893 - [DOC] Minor spelling fixes and grammatical enhancements
894 - [CLEANUP] dumpstats: make symbols static where possible
895 - [MINOR] Break out dumping table
896 - [MINOR] Break out processing of clear table
897 - [MINOR] Allow listing of stick table by key
898 - [MINOR] Break out all stick table socat command parsing
899 - [MINOR] More flexible clearing of stick table
900 - [MINOR] Allow showing and clearing by key of ipv6 stick tables
901 - [MINOR] Allow showing and clearing by key of integer stick tables
902 - [MINOR] Allow showing and clearing by key of string stick tables
903 - [CLEANUP] Remove assigned but unused variables
904 - [CLEANUP] peers.h: fix declarations
905 - [CLEANUP] session.c: Make functions static where possible
906 - [MINOR] Add active connection list to server
907 - [MINOR] Allow shutdown of sessions when a server becomes unavailable
908 - [MINOR] Add down termination condition
909 - [MINOR] Make appsess{,ion}_refresh static
910 - [MINOR] Add rdp_cookie pattern fetch function
911 - [CLEANUP] Remove unnecessary casts
912 - [MINOR] Add non-stick server option
913 - [MINOR] Consistently use error in tcp_parse_tcp_req()
914 - [MINOR] Consistently free expr on error in cfg_parse_listen()
915 - [MINOR] Free rdp_cookie_name on denint()
916 - [MINOR] Free tcp rules on denint()
917 - [MINOR] Free stick table pool on denint()
918 - [MINOR] Free stick rules on denint()
919 - [MEDIUM] Fix stick-table replication on soft-restart
920 - [MEDIUM] Correct ipmask() logic
921 - [MINOR] Correct type in table dump examples
922 - [MINOR] Fix build error in stream_int_register_handler()
923 - [MINOR] Use DPRINTF in assign_server()
924 - [BUG] checks: http-check expect could fail a check on multi-packet responses
925 - [DOC] fix minor typo in the "dispatch" doc
926 - [BUG] proto_tcp: fix address binding on remote source
927 - [MINOR] http: don't report the "haproxy" word on the monitoring response
928 - [REORG] http: move HTTP error codes back to proto_http.h
929 - [MINOR] http: make the "HTTP 200" status code configurable.
930 - [MINOR] http: partially revert the chunking optimization for now
931 - [MINOR] stream_sock: always clear BF_EXPECT_MORE upon complete transfer
932 - [CLEANUP] stream_sock: remove unneeded FL_TCP and factor out test
933 - [MEDIUM] http: add support for "http-no-delay"
934 - [OPTIM] http: optimize chunking again in non-interactive mode
935 - [OPTIM] stream_sock: avoid fast-forwarding of partial data
936 - [OPTIM] stream_sock: don't use splice on too small payloads
937 - [MINOR] config: make it possible to specify a cookie even without a server
938 - [BUG] stats: support url-encoded forms
939 - [MINOR] config: automatically compute a default fullconn value
940 - [CLEANUP] config: remove some left-over printf debugging code from previous patch
941 - [DOC] add missing entry or stick store-response
942 - [MEDIUM] http: add support for 'cookie' and 'set-cookie' patterns
943 - [BUG] halog: correctly handle truncated last line
944 - [MINOR] halog: make SKIP_CHAR stop on field delimiters
945 - [MINOR] halog: add support for HTTP log matching (-H)
946 - [MINOR] halog: gain back performance before SKIP_CHAR fix
947 - [OPTIM] halog: cache some common fields positions
948 - [OPTIM] halog: check once for correct line format and reuse the pointer
949 - [OPTIM] halog: remove many 'if' by using a function pointer for the filters
950 - [OPTIM] halog: remove support for tab delimiters in input data
951 - [BUG] session: risk of crash on out of memory (1.5-dev regression)
952 - [MINOR] session: try to emit a 500 response on memory allocation errors
953 - [OPTIM] stream_sock: reduce the default number of accepted connections at once
954 - [BUG] stream_sock: disable listener when system resources are exhausted
955 - [MEDIUM] proxy: add a PAUSED state to listeners and move socket tricks out of proxy.c
956 - [BUG] stream_sock: ensure orphan listeners don't accept too many connections
957 - [MINOR] listeners: add listen_full() to mark a listener full
958 - [MINOR] listeners: add support for queueing resource limited listeners
959 - [MEDIUM] listeners: put listeners in queue upon resource shortage
960 - [MEDIUM] listeners: queue proxy-bound listeners at the proxy's
961 - [MEDIUM] listeners: don't stop proxies when global maxconn is reached
962 - [MEDIUM] listeners: don't change listeners states anymore in maintain_proxies
963 - [CLEANUP] proxy: rename a few proxy states (PR_STIDLE and PR_STRUN)
964 - [MINOR] stats: report a "WAITING" state for sockets waiting for resource
965 - [MINOR] proxy: make session rate-limit more accurate
966 - [MINOR] sessions: only wake waiting listeners up if rate limit is OK
967 - [BUG] proxy: peers must only be stopped once, not upon every call to maintain_proxies
968 - [CLEANUP] proxy: merge maintain_proxies() operation inside a single loop
969 - [MINOR] task: new function task_schedule() to schedule a wake up
970 - [MAJOR] proxy: finally get rid of maintain_proxies()
971 - [BUG] proxy: stats frontend and peers were missing many initializers
972 - [MEDIUM] listeners: add a global listener management task
973 - [MINOR] proxy: make findproxy() return proxies from numeric IDs too
974 - [DOC] fix typos, "#" is a sharp, not a dash
975 - [MEDIUM] stats: add support for changing frontend's maxconn at runtime
976 - [MEDIUM] checks: group health checks methods by values and save option bits
977 - [MINOR] session-counters: add the ability to clear the counters
978 - [BUG] check: http-check expect + regex would crash in defaults section
979 - [MEDIUM] http: make x-forwarded-for addition conditional
980 - [REORG] build: move syscall redefinition to specific places
981 - [CLEANUP] update the year in the copyright banner
982 - [BUG] possible crash in 'show table' on stats socket
983 - [BUG] checks: use the correct destination port for sending checks
984 - [BUG] backend: risk of picking a wrong port when mapping is used with crossed families
985 - [MINOR] make use of set_host_port() and get_host_port() to get rid of family mismatches
986 - [DOC] fixed a few "sensible" -> "sensitive" errors
987 - [MINOR] make use of addr_to_str() and get_host_port() to replace many inet_ntop()
988 - [BUG] http: trailing white spaces must also be trimmed after headers
989 - [MINOR] stats: display "<NONE>" instead of the frontend name when unknown
990 - [MINOR] http: take a capture of too large requests and responses
991 - [MINOR] http: take a capture of truncated responses
992 - [MINOR] http: take a capture of bad content-lengths.
993 - [DOC] add a few old and uncommitted docs
994 - [CLEANUP] cfgparse: fix reported options for the "bind" keyword
995 - [MINOR] halog: add -hs/-HS to filter by HTTP status code range
996 - [MINOR] halog: support backslash-escaped quotes
997 - [CLEANUP] remove dirty left-over of a debugging message
998 - [MEDIUM] stats: disable complex socket reservation for stats socket
999 - [CLEANUP] remove a useless test in manage_global_listener_queue()
1000 - [MEDIUM] stats: add the "set maxconn" setting to the command line interface
1001 - [MEDIUM] add support for global.maxconnrate to limit the per-process conn rate.
1002 - [MINOR] stats: report the current and max global connection rates
1003 - [MEDIUM] stats: add the ability to adjust the global maxconnrate
1004 - [BUG] peers: don't pre-allocate 65000 connections to each peer
1005 - [MEDIUM] don't limit peers nor stats socket to maxconn nor maxconnrate
1006 - [BUG] peers: the peer frontend must not emit any log
1007 - [CLEANUP] proxy: make pause_proxy() perform the required controls and emit the logs
1008 - [BUG] peers: don't keep a peers section which has a NULL frontend
1009 - [BUG] peers: ensure the peers are resumed if they were paused
1010 - [MEDIUM] stats: add the ability to enable/disable/shutdown a frontend at runtime
1011 - [MEDIUM] session: make session_shutdown() an independant function
1012 - [MEDIUM] stats: offer the possibility to kill a session from the CLI
1013 - [CLEANUP] stats: centralize tests for backend/server inputs on the CLI
1014 - [MEDIUM] stats: offer the possibility to kill sessions by server
1015 - [MINOR] halog: do not consider byte 0x8A as end of line
1016 - [MINOR] frontend: ensure debug message length is always initialized
1017 - [OPTIM] halog: make fgets parse more bytes by blocks
1018 - [OPTIM] halog: add assembly version of the field lookup code
1019 - [MEDIUM] poll: add a measurement of idle vs work time
1020 - [CLEANUP] startup: report only the basename in the usage message
1021 - [MINOR] startup: add an option to change to a new directory
1022 - [OPTIM] task: don't scan the run queue if we know it's empty
1023 - [BUILD] stats: stdint is not present on solaris
1024 - [DOC] update the README file to reflect new naming rules for patches
1025 - [MINOR] stats: report the number of requests intercepted by the frontend
1026 - [DOC] update ROADMAP file
1027
Willy Tarreau04df1122011-04-08 00:56:41 +020010282011/04/08 : 1.5-dev6
1029 - [BUG] stream_sock: use get_addr_len() instead of sizeof() on sockaddr_storage
1030 - [BUG] TCP source tracking was broken with IPv6 changes
1031 - [BUG] stick-tables did not work when converting IPv6 to IPv4
1032 - [CRITICAL] fix risk of crash when dealing with space in response cookies
1033
Willy Tarreaub06ed2c2011-03-29 01:10:33 +020010342011/03/29 : 1.5-dev5
1035 - [BUG] standard: is_addr return value for IPv4 was inverted
1036 - [MINOR] update comment about IPv6 support for server
1037 - [MEDIUM] use getaddrinfo to resolve names if gethostbyname fail
1038 - [DOC] update IPv6 support for bind
1039 - [DOC] document IPv6 support for server
1040 - [DOC] fix a minor typo
1041 - [MEDIUM] IPv6 support for syslog
1042 - [DOC] document IPv6 support for syslog
1043 - [MEDIUM] IPv6 support for stick-tables
1044 - [DOC] document IPv6 support for stick-tables
1045 - [DOC] update ROADMAP file
1046 - [BUG] session: src_conn_cur was returning src_conn_cnt instead
1047 - [MINOR] frontend: add a make_proxy_line function
1048 - [MEDIUM] stream_sock: add support for sending the proxy protocol header line
1049 - [MEDIUM] server: add support for the "send-proxy" option
1050 - [DOC] update the spec on the proxy protocol
1051 - [BUILD] proto_tcp: fix build issue with CTTPROXY
1052 - [DOC] update ROADMAP file
1053 - [MEDIUM] config: rework the IPv4/IPv6 address parser to support host-only addresses
1054 - [MINOR] cfgparse: better report wrong listening addresses and make use of str2sa_range
1055 - [BUILD] add the USE_GETADDRINFO build option
1056 - [TESTS] provide a test case for various address formats
1057 - [BUG] session: conn_retries was not always initialized
1058 - [BUG] log: retrieve the target from the session, not the SI
1059 - [BUG] http: fix possible incorrect forwarded wrapping chunk size (take 2)
1060 - [MINOR] tools: add two macros MID_RANGE and MAX_RANGE
1061 - [BUG] http: fix content-length handling on 32-bit platforms
1062 - [OPTIM] buffers: uninline buffer_forward()
1063 - [BUG] stream_sock: fix handling for server side PROXY protocol
1064 - [MINOR] acl: add support for table_cnt and table_avl matches
1065 - [DOC] update ROADMAP file
1066
Willy Tarreaue0052cc2011-03-13 22:15:02 +010010672011/03/13 : 1.5-dev4
1068 - [MINOR] cfgparse: Check whether the path given for the stats socket actually fits into the sockaddr_un structure to avoid truncation.
1069 - [MINOR] unix sockets : inherits the backlog size from the listener
1070 - [CLEANUP] unix sockets : move create_uxst_socket() in uxst_bind_listener()
1071 - [DOC] fix a minor typo
1072 - [DOC] fix ignore-persist documentation
1073 - [MINOR] add warnings on features not compatible with multi-process mode
1074 - [BUG] http: fix http-pretend-keepalive and httpclose/tunnel mode
1075 - [MINOR] stats: add support for several packets in stats admin
1076 - [BUG] stats: admin commands must check the proxy state
1077 - [BUG] stats: admin web interface must check the proxy state
1078 - [MINOR] http: add pattern extraction method to stick on query string parameter
1079 - [MEDIUM] add internal support for IPv6 server addresses
1080 - [MINOR] acl: add be_id/srv_id to match backend's and server's id
1081 - [MINOR] log: add support for passing the forwarded hostname
1082 - [MINOR] log: ability to override the syslog tag
1083 - [MINOR] checks: add PostgreSQL health check
1084 - [DOC] update ROADMAP file
1085 - [BUILD] pattern: use 'int' instead of 'int32_t'
1086 - [OPTIM] linux: add support for bypassing libc to force using vsyscalls
1087 - [BUG] debug: report the correct poller list in verbose mode
1088 - [BUG] capture: do not capture a cookie if there is no memory left
1089 - [BUG] appsession: fix possible double free in case of out of memory
1090 - [CRITICAL] cookies: mixing cookies in indirect mode and appsession can crash the process
1091 - [BUG] http: correctly update the header list when removing two consecutive headers
1092 - [BUILD] add the CPU=native and ARCH=32/64 build options
1093 - [BUILD] add -fno-strict-aliasing to fix warnings with gcc >= 4.4
1094 - [CLEANUP] hash: move the avalanche hash code globally available
1095 - [MEDIUM] hash: add support for an 'avalanche' hash-type
1096 - [DOC] update roadmap file
1097 - [BUG] http: do not re-enable the PROXY analyser on keep-alive
1098 - [OPTIM] http: don't send each chunk in a separate packet
1099 - [DOC] fix minor typos reported recently in the peers section
1100 - [DOC] fix another typo in the doc
1101 - [MINOR] stats: report HTTP message state and buffer flags in error dumps
1102 - [BUG] http chunking: don't report a parsing error on connection errors
1103 - [BUG] stream_interface: truncate buffers when sending error messages
1104 - [MINOR] http: support wrapping messages in error captures
1105 - [MINOR] http: capture incorrectly chunked message bodies
1106 - [MINOR] stats: add global event ID and count
1107 - [BUG] http: analyser optimizations broke pipelining
1108 - [CLEANUP] frontend: only apply TCP-specific settings to TCP/TCP6 sockets
1109 - [BUG] http: fix incorrect error reporting during data transfers
1110 - [CRITICAL] session: correctly leave turn-around and queue states on abort
1111 - [BUG] session: release slot before processing pending connections
1112 - [MINOR] tcp: add support for dynamic MSS setting
1113 - [BUG] stick-table: correctly terminate string keys during lookups
1114 - [BUG] acl: fix handling of empty lines in pattern files
1115 - [BUG] stick-table: use the private buffer when padding strings
1116 - [BUG] ebtree: fix ebmb_lookup() with len smaller than the tree's keys
1117 - [OPTIM] ebtree: ebmb_lookup: reduce stack usage by moving the return code out of the loop
1118 - [OPTIM] ebtree: inline ebst_lookup_len and ebis_lookup_len
1119 - [REVERT] undo the stick-table string key lookup fixes
1120 - [MINOR] http: improve url_param pattern extraction to ignore empty values
1121 - [BUILD] frontend: shut a warning with TCP_MAXSEG
1122 - [BUG] http: update the header list's tail when removing the last header
1123 - [DOC] fix minor typo in the proxy protocol doc
1124 - [DOC] fix typos (http-request instead of http-check)
1125 - [BUG] http: use correct ACL pointer when evaluating authentication
1126 - [BUG] cfgparse: correctly count one socket per port in ranges
1127 - [BUG] startup: set the rlimits before binding ports, not after.
1128 - [BUG] acl: srv_id must return no match when the server is NULL
1129 - [MINOR] acl: add ability to check for internal response-only parameters
1130 - [MINOR] acl: srv_id is only valid in responses
1131 - [MINOR] config: warn if response-only conditions are used in "redirect" rules
1132 - [BUG] acl: fd leak when reading patterns from file
1133 - [DOC] fix minor typo in "usesrc"
1134 - [BUG] http: fix possible incorrect forwarded wrapping chunk size
1135 - [BUG] http: fix computation of message body length after forwarding has started
1136 - [BUG] http: balance url_param did not work with first parameters on POST
1137 - [TESTS] update the url_param regression test to test check_post too
1138 - [DOC] update ROADMAP
1139 - [DOC] internal: reflect the fact that SI_ST_ASS is transient
1140 - [BUG] config: don't crash on empty pattern files.
1141 - [MINOR] stream_interface: make use of an applet descriptor for IO handlers
1142 - [REORG] stream_interface: move the st0, st1 and private members to the applet
1143 - [REORG] stream_interface: split the struct members in 3 parts
1144 - [REORG] session: move client and server address to the stream interface
1145 - [REORG] tcp: make tcpv4_connect_server() take the target address from the SI
1146 - [MEDIUM] stream_interface: store the target pointer and type
1147 - [CLEANUP] stream_interface: remove the applet.handler pointer
1148 - [MEDIUM] log: take the logged server name from the stream interface
1149 - [CLEANUP] session: remove data_source from struct session
1150 - [CLEANUP] stats: make all dump functions only rely on the stream interface
1151 - [REORG] session: move the data_ctx struct to the stream interface's applet
1152 - [MINOR] proxy: add PR_O2_DISPATCH to detect dispatch mode
1153 - [MINOR] cfgparse: only keep one of dispatch, transparent, http_proxy
1154 - [MINOR] session: add a pointer to the new target into the session
1155 - [MEDIUM] session: remove s->prev_srv which is not needed anymore
1156 - [CLEANUP] stream_interface: use inline functions to manipulate targets
1157 - [MAJOR] session: remove the ->srv pointer from struct session
1158 - [MEDIUM] stats: split frontend and backend stats
1159 - [MEDIUM] http: always evaluate http-request rules before stats http-request
1160 - [REORG] http: move the http-request rules to proto_http
1161 - [BUG] http: stats were not incremented on http-request deny
1162 - [MINOR] checks: report it if checks fail due to socket creation error
1163
Willy Tarreau442e8342010-11-11 23:29:35 +010011642010/11/11 : 1.5-dev3
1165 - [DOC] fix http-request documentation
1166 - [MEDIUM] enable/disable servers from the stats web interface
1167 - [MEDIUM] stats: add an admin level
1168 - [DOC] stats: document the "stats admin" statement
1169 - [MINOR] startup: print the proxy socket which caused an error
1170 - [CLEANUP] Remove unneeded chars allocation
1171 - [MINOR] config: detect options not supported due to compilation options
1172 - [MINOR] Add pattern's fetchs payload and payload_lv
1173 - [MINOR] frontend: improve accept-proxy header parsing
1174 - [MINOR] frontend: add tcpv6 support on accept-proxy bind
1175 - [MEDIUM] Enhance message errors management on binds
1176 - [MINOR] Manage unix socket source field on logs
1177 - [MINOR] Manage unix socket source field on session dump on sock stats
1178 - [MINOR] Support of unix listener sockets for debug and log event messages on frontend.c
1179 - [MINOR] Add some tests on sockets family for port remapping and mode transparent.
1180 - [MINOR] Manage socket type unix for some logs
1181 - [MINOR] Enhance controls of socket's family on acls and pattern fetch
1182 - [MINOR] Support listener's sockets unix on http logs.
1183 - [MEDIUM] Add supports of bind on unix sockets.
1184 - [BUG] stick table purge failure if size less than 255
1185 - [BUG] stick table entries expire on counters updates/read or show table, even if there is no "expire" parameter
1186 - [MEDIUM] Implement tcp inspect response rules
1187 - [DOC] tcp-response content and inspect
1188 - [MINOR] new acls fetch req_ssl_hello_type and rep_ssl_hello_type
1189 - [DOC] acls rep_ssl_hello and req_ssl_hello
1190 - [MEDIUM] Create new protected pattern types CONSTSTRING and CONSTDATA to force memcpy if data from protected areas need to be manipulated.
1191 - [DOC] new type binary in stick-table
1192 - [DOC] stick store-response and new patterns payload and payload_lv
1193 - [MINOR] Manage all types (ip, integer, string, binary) on cli "show table" command
1194 - [MEDIUM] Create updates tree on stick table to manage sync.
1195 - [MAJOR] Add new files src/peer.c, include/proto/peers.h and include/types/peers.h for sync stick table management
1196 - [MEDIUM] Manage peers section parsing and stick table registration on peers.
1197 - [MEDIUM] Manage soft stop on peers proxy
1198 - [DOC] add documentation for peers section
1199 - [MINOR] checks: add support for LDAPv3 health checks
1200 - [MINOR] add better support to "mysql-check"
1201 - [BUG] Restore info about available active/backup servers
1202 - [CONTRIB] Update haproxy.pl
1203 - [CONTRIB] Update Cacti Tempates
1204 - [CONTRIB] add templates for Cacti.
1205 - [BUG] http: don't consider commas as a header delimitor within quotes
1206 - [MINOR] support a global jobs counter
1207 - [DOC] add a summary about cookie incompatibilities between specs and browsers
1208 - [DOC] fix description of cookie "insert" and "indirect" modes
1209 - [MEDIUM] http: fix space handling in the request cookie parser
1210 - [MEDIUM] http: fix space handling in the response cookie parser
1211 - [DOC] fix typo in the queue() definition (backend, not frontend)
1212 - [BUG] deinit: unbind listeners before freeing them
1213 - [BUG] stream_interface: only call si->release when both dirs are closed
1214 - [MEDIUM] buffers: rework the functions to exchange between SI and buffers
1215 - [DOC] fix typo in the avg_queue() and be_conn() definition (backend, not frontend)
1216 - [MINOR] halog: add '-tc' to sort by termination codes
1217 - [MINOR] halog: skip non-traffic logs for -st and -tc
1218 - [BUG] stream_sock: cleanly disable the listener in case of resource shortage
1219 - [BUILD] stream_sock: previous fix lacked the #include, causing a warning.
1220 - [DOC] bind option is "defer-accept", not "defer_accept"
1221 - [DOC] missing index entry for http-check send-state
1222 - [DOC] tcp-request inspect-delay is for backends too
1223 - [BUG] ebtree: string_equal_bits() could return garbage on identical strings
1224 - [BUG] stream_sock: try to flush any extra pending request data after a POST
1225 - [BUILD] proto_http: eliminate some build warnings with gcc-2.95
1226 - [MEDIUM] make it possible to combine http-pretend-keepalived with httpclose
1227 - [MEDIUM] tcp-request : don't wait for inspect-delay to expire when the buffer is full
1228 - [MEDIUM] checks: add support for HTTP contents lookup
1229 - [TESTS] add test-check-expect to test various http-check methods
1230 - [MINOR] global: add "tune.chksize" to change the default check buffer size
1231 - [MINOR] cookie: add options "maxidle" and "maxlife"
1232 - [MEDIUM] cookie: support client cookies with some contents appended to their value
1233 - [MINOR] http: make some room in the transaction flags to extend cookies
1234 - [MINOR] cookie: add the expired (E) and old (O) flags for request cookies
1235 - [MEDIUM] cookie: reassign set-cookie status flags to store more states
1236 - [MINOR] add encode/decode function for 30-bit integers from/to base64
1237 - [MEDIUM] cookie: check for maxidle and maxlife for incoming dated cookies
1238 - [MEDIUM] cookie: set the date in the cookie if needed
1239 - [DOC] document the cookie maxidle and maxlife parameters
1240 - [BUG] checks: don't log backend down for all zero-weight servers
1241 - [MEDIUM] checks: set server state to one state from failure when leaving maintenance
1242 - [BUG] config: report correct keywords for "observe"
1243 - [MINOR] checks: ensure that we can inherit binary checks from the defaults section
1244 - [MINOR] acl: add the http_req_first match
1245 - [DOC] fix typos about bind-process syntax
1246 - [BUG] cookie: correctly unset default cookie parameters
1247 - [MINOR] cookie: add support for the "preserve" option
1248 - [BUG] ebtree: fix duplicate strings insertion
1249 - [CONTRIB] halog: report per-url counts, errors and times
1250 - [CONTRIB] halog: minor speed improvement in timer parser
1251 - [MINOR] buffers: add a new request analyser flag for PROXY mode
1252 - [MINOR] listener: add the "accept-proxy" option to the "bind" keyword
1253 - [MINOR] standard: add read_uint() to parse a delimited unsigned integer
1254 - [MINOR] standard: change arg type from const char* to char*
1255 - [MINOR] frontend: add a new analyser to parse a proxied connection
1256 - [MEDIUM] session: call the frontend_decode_proxy analyser on proxied connections
1257 - [DOC] add the proxy protocol's specifications
1258 - [DOC] document the 'accept-proxy' bind option
1259 - [MINOR] cfgparse: report support of <path> for the 'bind' statements
1260 - [DOC] add references to unix socket handling
1261 - [MINOR] move MAXPATHLEN definition to compat.h
1262 - [MEDIUM] unix sockets: cleanup the error reporting path
1263 - [BUG] session: don't stop forwarding of data upon last packet
1264 - [CLEANUP] accept: replace some inappropriate Alert() calls with send_log()
1265 - [BUILD] peers: shut a printf format warning (key_size is a size_t)
1266 - [BUG] accept: don't close twice upon error
1267 - [OPTIM] session: don't recheck analysers when buffer flags have not changed
1268 - [OPTIM] stream_sock: don't clear FDs that are already cleared
1269 - [BUG] proto_tcp: potential bug on pattern fetch dst and dport
1270
Willy Tarreau37242fa2010-08-28 19:21:00 +020012712010/08/28 : 1.5-dev2
1272 - [MINOR] startup: release unused structs after forking
1273 - [MINOR] startup: don't wait for nothing when no old pid remains
1274 - [CLEANUP] reference product branch 1.5
1275 - [MEDIUM] signals: add support for registering functions and tasks
1276 - [MEDIUM] signals: support redistribution of signal zero when stopping
1277 - [BUG] http: don't set auto_close if more data are expected
1278
Willy Tarreaufc815fd2010-08-25 10:56:53 +020012792010/08/25 : 1.5-dev1
1280 - [BUG] stats: session rate limit gets garbaged in the stats
1281 - [DOC] mention 'option http-server-close' effect in Tq section
1282 - [DOC] summarize and highlight persistent connections behaviour
1283 - [DOC] add configuration samples
1284 - [BUG] http: dispatch and http_proxy modes were broken for a long time
1285 - [BUG] http: the transaction must be initialized even in TCP mode
1286 - [BUG] tcp: dropped connections must be counted as "denied" not "failed"
1287 - [BUG] consistent hash: balance on all servers, not only 2 !
1288 - [CONTRIB] halog: report per-server status codes, errors and response times
1289 - [BUG] http: the transaction must be initialized even in TCP mode (part 2)
1290 - [BUG] client: always ensure to zero rep->analysers
1291 - [BUG] session: clear BF_READ_ATTACHED before next I/O
1292 - [BUG] http: automatically close response if req is aborted
1293 - [BUG] proxy: connection rate limiting was eating lots of CPU
1294 - [BUG] http: report correct flags in case of client aborts during body
1295 - [TESTS] refine non-regression tests and add 4 new tests
1296 - [BUG] debug: wrong pointer was used to report a status line
1297 - [BUG] debug: correctly report truncated messages
1298 - [DOC] document the "dispatch" keyword
1299 - [BUG] stick_table: fix possible memory leak in case of connection error
1300 - [CLEANUP] acl: use 'L6' instead of 'L4' in ACL flags relying on contents
1301 - [MINOR] accept: count the incoming connection earlier
1302 - [CLEANUP] tcp: move some non tcp-specific layer6 processing out of proto_tcp
1303 - [CLEANUP] client: move some ACLs away to their respective locations
1304 - [CLEANUP] rename client -> frontend
1305 - [MEDIUM] separate protocol-level accept() from the frontend's
1306 - [MINOR] proxy: add a list to hold future layer 4 rules
1307 - [MEDIUM] config: parse tcp layer4 rules (tcp-request accept/reject)
1308 - [MEDIUM] tcp: check for pure layer4 rules immediately after accept()
1309 - [OPTIM] frontend: tell the compiler that errors are unlikely to occur
1310 - [MEDIUM] frontend: check for LI_O_TCP_RULES in the listener
1311 - [MINOR] frontend: only check for monitor-net rules if LI_O_CHK_MONNET is set
1312 - [CLEANUP] buffer->cto is not used anymore
1313 - [MEDIUM] session: finish session establishment sequence in with I/O handlers
1314 - [MEDIUM] session: initialize server-side timeouts after connect()
1315 - [MEDIUM] backend: initialize the server stream_interface upon connect()
1316 - [MAJOR] frontend: don't initialize the server-side stream_int anymore
1317 - [MEDIUM] session: move the conn_retries attribute to the stream interface
1318 - [MEDIUM] session: don't assign conn_retries upon accept() anymore
1319 - [MINOR] frontend: rely on the frontend and not the backend for INDEPSTR
1320 - [MAJOR] frontend: reorder the session initialization upon accept
1321 - [MINOR] proxy: add an accept() callback for the application layer
1322 - [MAJOR] frontend: split accept() into frontend_accept() and session_accept()
1323 - [MEDIUM] stats: rely on the standard session_accept() function
1324 - [MINOR] buffer: refine the flags that may wake an analyser up.
1325 - [MINOR] stream_sock: don't dereference a non-existing frontend
1326 - [MINOR] session: differenciate between accepted connections and received connections
1327 - [MEDIUM] frontend: count the incoming connection earlier
1328 - [MINOR] frontend: count denied TCP requests separately
1329 - [CLEANUP] stick_table: add/clarify some comments
1330 - [BUILD] memory: add a few missing parenthesis to the pool management macros
1331 - [MINOR] stick_table: add support for variable-sized data
1332 - [CLEANUP] stick_table: rename some stksess struct members to avoid confusion
1333 - [CLEANUP] stick_table: move pattern to key functions to stick_table.c
1334 - [MEDIUM] stick_table: add room for extra data types
1335 - [MINOR] stick_table: add support for "conn_cum" data type.
1336 - [MEDIUM] stick_table: don't overwrite data when storing an entry
1337 - [MINOR] config: initialize stick tables after all the parsing
1338 - [MINOR] stick_table: provide functions to return stksess data from a type
1339 - [MEDIUM] stick_table: move the server ID to a generic data type
1340 - [MINOR] stick_table: enable it for frontends too
1341 - [MINOR] stick_table: export the stick_table_key
1342 - [MINOR] tcp: add per-source connection rate limiting
1343 - [MEDIUM] stick_table: separate storage and update of session entries
1344 - [MEDIUM] stick-tables: add a reference counter to each entry
1345 - [MINOR] session: add a pointer to the tracked counters for the source
1346 - [CLEANUP] proto_tcp: make the config parser a little bit more flexible
1347 - [BUG] config: report the correct proxy type in tcp-request errors
1348 - [MINOR] config: provide a function to quote args in a more friendly way
1349 - [BUG] stick_table: the fix for the memory leak caused a regression
1350 - [MEDIUM] backend: support servers on 0.0.0.0
1351 - [BUG] stick-table: correctly refresh expiration timers
1352 - [MEDIUM] stream-interface: add a ->release callback
1353 - [MINOR] proxy: add a "parent" member to the structure
1354 - [MEDIUM] session: make it possible to call an I/O handler on both SI
1355 - [MINOR] tools: add a fast div64_32 function
1356 - [MINOR] freq_ctr: add new types and functions for periods different from 1s
1357 - [MINOR] errors: provide new status codes for config parsing functions
1358 - [BUG] http: denied requests must not be counted as denied resps in listeners
1359 - [MINOR] tools: add a get_std_op() function to parse operators
1360 - [MEDIUM] acl: make use of get_std_op() to parse intger ranges
1361 - [MAJOR] stream_sock: better wakeup conditions on read()
1362 - [BUG] session: analysers must be checked when SI state changes
1363 - [MINOR] http: reset analysers to listener's, not frontend's
1364 - [MEDIUM] session: support "tcp-request content" rules in backends
1365 - [BUILD] always match official tags when doing git-tar
1366 - [MAJOR] stream_interface: fix the wakeup conditions for embedded iohandlers
1367 - [MEDIUM] buffer: make buffer_feed* support writing non-contiguous chunks
1368 - [MINOR] tcp: src_count acl does not have a permanent result
1369 - [MAJOR] session: add track-counters to track counters related to the session
1370 - [MINOR] stick-table: provide a table lookup function
1371 - [MINOR] stick-table: use suffix "_cnt" for cumulated counts
1372 - [MEDIUM] session: move counter ACL fetches from proto_tcp
1373 - [MEDIUM] session: add concurrent connections counter
1374 - [MEDIUM] session: add data in and out volume counters
1375 - [MINOR] session: add the trk_conn_cnt ACL keyword to track connection counts
1376 - [MEDIUM] session-counters: automatically update tracked connection count
1377 - [MINOR] session: add the trk_conn_cur ACL keyword to track concurrent connection
1378 - [MINOR] session: add trk_kbytes_* ACL keywords to track data size
1379 - [MEDIUM] session: add a counter on the cumulated number of sessions
1380 - [MINOR] config: support a comma-separated list of store data types in stick-table
1381 - [MEDIUM] stick-tables: add support for arguments to data_types
1382 - [MEDIUM] stick-tables: add stored data argument type checking
1383 - [MEDIUM] session counters: add conn_rate and sess_rate counters
1384 - [MEDIUM] session counters: add bytes_in_rate and bytes_out_rate counters
1385 - [MINOR] stktable: add a stktable_update_key() function
1386 - [MINOR] session-counters: add a general purpose counter (gpc0)
1387 - [MEDIUM] session-counters: add HTTP req/err tracking
1388 - [MEDIUM] stats: add "show table [<name>]" to dump a stick-table
1389 - [MEDIUM] stats: add "clear table <name> key <value>" to clear table entries
1390 - [CLEANUP] stick-table: declare stktable_data_types as extern
1391 - [MEDIUM] stick-table: make use of generic types for stored data
1392 - [MINOR] stats: correctly report errors on "show table" and "clear table"
1393 - [MEDIUM] stats: add the ability to dump table entries matching criteria
1394 - [DOC] configuration: document all the new tracked counters
1395 - [DOC] stats: document "show table" and "clear table"
1396 - [MAJOR] session-counters: split FE and BE track counters
1397 - [MEDIUM] tcp: accept the "track-counters" in "tcp-request content" rules
1398 - [MEDIUM] session counters: automatically remove expired entries.
1399 - [MEDIUM] config: replace 'tcp-request <action>' with "tcp-request connection"
1400 - [MEDIUM] session-counters: make it possible to count connections from frontend
1401 - [MINOR] session-counters: use "track-sc{1,2}" instead of "track-{fe,be}-counters"
1402 - [MEDIUM] session-counters: correctly unbind the counters tracked by the backend
1403 - [CLEANUP] stats: use stksess_kill() to remove table entries
1404 - [DOC] update the references to session counters and to tcp-request connection
1405 - [DOC] cleanup: split a few long lines
1406 - [MEDIUM] http: forward client's close when abortonclose is set
1407 - [BUG] queue: don't dequeue proxy-global requests on disabled servers
1408 - [BUG] stats: global stats timeout may be specified before stats socket.
1409 - [BUG] conf: add tcp-request content rules to the correct list
1410
Willy Tarreau21475e32010-05-23 08:46:08 +020014112010/05/23 : 1.5-dev0
1412 - exact copy of 1.4.6
1413
Willy Tarreau5fdd77d2010-05-16 22:34:28 +020014142010/05/16 : 1.4.6
1415 - [BUILD] ebtree: update to v6.0.1 to remove references to dprintf()
1416 - [CLEANUP] acl: make use of eb_is_empty() instead of open coding the tree's emptiness test
1417 - [MINOR] acl: add srv_is_up() to check that a specific server is up or not
1418 - [DOC] add a few precisions about the use of RDP cookies
1419
Willy Tarreau9d4d9e32010-05-13 22:17:08 +020014202010/05/13 : 1.4.5
1421 - [DOC] report minimum kernel version for tproxy in the Makefile
1422 - [MINOR] add the "ignore-persist" option to conditionally ignore persistence
1423 - [DOC] add the "ignore-persist" option to conditionally ignore persistence
1424 - [DOC] fix ignore-persist/force-persist documentation
1425 - [BUG] cttproxy: socket fd leakage in check_cttproxy_version
1426 - [DOC] doc/configuration.txt: fix typos
1427 - [MINOR] option http-pretend-keepalive is both for FEs and BEs
1428 - [MINOR] fix possible crash in debug mode with invalid responses
1429 - [MINOR] halog: add support for statisticts on status codes
1430 - [OPTIM] halog: use a faster zero test in fgets()
1431 - [OPTIM] halog: minor speedup by using unlikely()
1432 - [OPTIM] halog: speed up fgets2-64 by about 10%
1433 - [DOC] refresh the README file and merge the CONTRIB file into it
1434 - [MINOR] acl: support loading values from files
1435 - [MEDIUM] ebtree: upgrade to version 6.0
1436 - [MINOR] acl trees: add flags and union members to store values in trees
1437 - [MEDIUM] acl: add ability to insert patterns in trees
1438 - [MEDIUM] acl: add tree-based lookups of exact strings
1439 - [MEDIUM] acl: add tree-based lookups of networks
1440 - [MINOR] acl: ignore empty lines and comments in pattern files
1441 - [MINOR] stick-tables: add support for "stick on hdr"
1442
Willy Tarreau9508c1c2010-04-07 23:12:24 +020014432010/04/07 : 1.4.4
1444 - [BUG] appsession should match the whole cookie name
1445 - [CLEANUP] proxy: move PR_O_SSL3_CHK to options2 to release one flag
1446 - [MEDIUM] backend: move the transparent proxy address selection to backend
1447 - [MINOR] add very fast IP parsing functions
1448 - [MINOR] add new tproxy flags for dynamic source address binding
1449 - [MEDIUM] add ability to connect to a server from an IP found in a header
1450 - [BUILD] config: last patch breaks build without CONFIG_HAP_LINUX_TPROXY
1451 - [MINOR] http: make it possible to pretend keep-alive when doing close
1452 - [MINOR] config: report "default-server" instead of "(null)" in error messages
1453
Willy Tarreau75934a12010-03-30 09:50:08 +020014542010/03/30 : 1.4.3
1455 - [CLEANUP] stats: remove printf format warning in stats_dump_full_sess_to_buffer()
1456 - [MEDIUM] session: better fix for connection to servers with closed input
1457 - [DOC] indicate in the doc how to bind to port ranges
1458 - [BUG] backend: L7 hashing must not be performed on incomplete requests
1459 - [TESTS] add a simple program to test connection resets
1460 - [MINOR] cli: "show errors" should display "backend <NONE>" when backend was not used
1461 - [MINOR] config: emit warnings when HTTP-only options are used in TCP mode
1462 - [MINOR] config: allow "slowstart 0s"
1463 - [BUILD] 'make tags' did not consider files ending in '.c'
1464 - [MINOR] checks: add the ability to disable a server in the config
1465
Willy Tarreauda618cb2010-03-17 23:41:57 +010014662010/03/17 : 1.4.2
1467 - [CLEANUP] product branch update
1468 - [DOC] Some more documentation cleanups
1469 - [BUG] clf logs segfault when capturing a non existant header
1470 - [OPTIM] config: only allocate check buffer when checks are enabled
1471 - [MEDIUM] checks: support multi-packet health check responses
1472 - [CLEANUP] session: remove duplicate test
1473 - [BUG] http: don't wait for response data to leave buffer is client has left
1474 - [MINOR] proto_uxst: set accept_date upon accept() to the wall clock time
1475 - [MINOR] stats: don't send empty lines in "show errors"
1476 - [MINOR] stats: make the data dump function reusable for other purposes
1477 - [MINOR] stats socket: add show sess <id> to dump details about a session
1478 - [BUG] stats: connection reset counters must be plain ascii, not HTML
1479 - [BUG] url_param hash may return a down server
1480 - [MINOR] force null-termination of hostname
1481 - [MEDIUM] connect to servers even when the input has already been closed
1482 - [BUG] don't merge anonymous ACLs !
1483 - [BUG] config: fix endless loop when parsing "on-error"
1484 - [MINOR] http: don't mark a server as failed when it returns 501/505
1485 - [OPTIM] checks: try to detect the end of response without polling again
1486 - [BUG] checks: don't report an error when recv() returns an error after data
1487 - [BUG] checks: don't abort when second poll returns an error
1488 - [MINOR] checks: make shutdown() silently fail
1489 - [BUG] http: fix truncated responses on chunk encoding when size divides buffer size
1490 - [BUG] init: unconditionally catch SIGPIPE
1491 - [BUG] checks: don't wait for a close to start parsing the response
1492
Willy Tarreauc5e60c32010-03-04 23:39:19 +010014932010/03/04 : 1.4.1
1494 - [BUG] Clear-cookie path issue
1495 - [DOC] fix typo on stickiness rules
1496 - [BUILD] fix BSD and OSX makefiles for missing files
1497 - [BUILD] includes order breaks OpenBSD build
1498 - [BUILD] fix some build warnings on Solaris with is* macros
1499 - [BUG] logs: don't report "last data" when we have just closed after an error
1500 - [BUG] logs: don't report "proxy request" when server closes early
1501 - [BUILD] fix platform-dependant build issues related to crypt()
1502 - [STATS] count transfer aborts caused by client and by server
1503 - [STATS] frontend requests were not accounted for failed requests
1504 - [MINOR] report total number of processed connections when stopping a proxy
1505 - [DOC] be more clear about the limitation to one single monitor-net entry
1506
Willy Tarreaue18fdfd2010-02-26 14:55:22 +010015072010/02/26 : 1.4.0
1508 - [MINOR] stats: report maint state for tracking servers too
1509 - [DOC] fix summary to add pattern extraction
1510 - [DOC] Documentation cleanups
1511 - [BUG] cfgparse memory leak and missing free calls in deinit()
1512 - [BUG] pxid/puid/luid: don't shift IDs when some of them are forced
1513 - [EXAMPLES] add auth.cfg
1514 - [BUG] uri_auth: ST_SHLGNDS should be 0x00000008 not 0x0000008
1515 - [BUG] uri_auth: do not attemp to convert uri_auth -> http-request more than once
1516 - [BUILD] auth: don't use unnamed unions
1517 - [BUG] config: report unresolvable host names as errors
1518 - [BUILD] fix build breakage with DEBUG_FULL
1519 - [DOC] fix a typo about timeout check and clarify the explanation.
1520 - [MEDIUM] http: don't use trash to realign large buffers
1521 - [STATS] report HTTP requests (total and rate) in frontends
1522 - [STATS] separate frontend and backend HTTP stats
1523 - [MEDIUM] http: revert to use a swap buffer for realignment
1524 - [MINOR] stats: report the request rate in frontends as cell titles
1525 - [MINOR] stats: mark areas with an underline when tooltips are available
1526 - [DOC] reorder some entries to maintain the alphabetical order
1527 - [DOC] cleanup of the keyword matrix
1528
Willy Tarreaub05613d2010-02-02 10:18:28 +010015292010/02/02 : 1.4-rc1
1530 - [MEDIUM] add a maintenance mode to servers
1531 - [MINOR] http-auth: last fix was wrong
1532 - [CONTRIB] add base64rev-gen.c that was used to generate the base64rev table.
1533 - [MINOR] Base64 decode
1534 - [MINOR] generic auth support with groups and encrypted passwords
1535 - [MINOR] add ACL_TEST_F_NULL_MATCH
1536 - [MINOR] http-request: allow/deny/auth support for frontend/backend/listen
1537 - [MINOR] acl: add http_auth and http_auth_group
1538 - [MAJOR] use the new auth framework for http stats
1539 - [DOC] add info about userlists, http-request and http_auth/http_auth_group acls
1540 - [STATS] make it possible to change a CLI connection timeout
1541 - [BUG] patterns: copy-paste typo in type conversion arguments
1542 - [MINOR] pattern: make the converter more flexible by supporting void* and int args
1543 - [MINOR] standard: str2mask: string to netmask converter
1544 - [MINOR] pattern: add support for argument parsers for converters
1545 - [MINOR] pattern: add the "ipmask()" converting function
1546 - [MINOR] config: off-by-one in "stick-table" after list of converters
1547 - [CLEANUP] acl, patterns: make use of my_strndup() instead of malloc+memcpy
1548 - [BUG] restore accidentely removed line in last patch !
1549 - [MINOR] checks: make the HTTP check code add the CRLF itself
1550 - [MINOR] checks: add the server's status in the checks
1551 - [BUILD] halog: make without arch-specific optimizations
1552 - [BUG] halog: fix segfault in case of empty log in PCT mode (cherry picked from commit fe362fe4762151d209b9656639ee1651bc2b329d)
1553 - [MINOR] http: disable keep-alive when process is going down
1554 - [MINOR] acl: add build_acl_cond() to make it easier to add ACLs in config
1555 - [CLEANUP] config: use build_acl_cond() instead of parse_acl_cond()
1556 - [CLEANUP] config: use warnif_cond_requires_resp() to check for bad ACLs
1557 - [MINOR] prepare req_*/rsp_* to receive a condition
1558 - [CLEANUP] config: specify correct const char types to warnif_* functions
1559 - [MEDIUM] config: factor out the parsing of 20 req*/rsp* keywords
1560 - [MEDIUM] http: make the request filter loop check for optional conditions
1561 - [MEDIUM] http: add support for conditional request filter execution
1562 - [DOC] add some build info about the AIX platform (cherry picked from commit e41914c77edbc40aebf827b37542d37d758e371e)
1563 - [MEDIUM] http: add support for conditional request header addition
1564 - [MEDIUM] http: add support for conditional response header rewriting
1565 - [DOC] add some missing ACLs about response header matching
1566 - [MEDIUM] http: add support for proxy authentication
1567 - [MINOR] http-auth: make the 'unless' keyword work as expected
1568 - [CLEANUP] config: use build_acl_cond() to simplify http-request ACL parsing
1569 - [MEDIUM] add support for anonymous ACLs
1570 - [MEDIUM] http: switch to tunnel mode after status 101 responses
1571 - [MEDIUM] http: stricter processing of the CONNECT method
1572 - [BUG] config: reset check request to avoid double free when switching to ssl/sql
1573 - [MINOR] config: fix too large ssl-hello-check message.
1574 - [BUG] fix error response in case of server error
1575
Willy Tarreau2eba6aa2010-01-25 23:28:05 +010015762010/01/25 : 1.4-dev8
1577 - [CLEANUP] Keep in sync "defaults" support between documentation and code
1578 - [MEDIUM] http: add support for Proxy-Connection header
1579 - [CRITICAL] buffers: buffer_insert_line2 must not change the ->w entry
1580 - [MINOR] http: remove a copy-paste typo in transaction cleaning
1581 - [BUG] http: trim any excess buffer data when recycling a connection
1582
Willy Tarreau6939b552010-01-25 01:54:37 +010015832010/01/25 : 1.4-dev7
1584 - [BUG] appsession: possible memory leak in case of out of memory condition
1585 - [MINOR] config: don't accept 'appsession' in defaults section
1586 - [MINOR] Add function to parse a size in configuration
1587 - [MEDIUM] Add stick table (persistence) management functions and types
1588 - [MEDIUM] Add pattern fetch management types and functions
1589 - [MEDIUM] Add src dst and dport pattern fetches.
1590 - [MEDIUM] Add stick table configuration and init.
1591 - [MEDIUM] Add stick and store rules analysers.
1592 - [MINOR] add option "mysql-check" to use MySQL health checks
1593 - [BUG] health checks: fix requeued message
1594 - [OPTIM] remove SSP_O_VIA and SSP_O_STATUS
1595 - [BUG] checks: fix newline termination
1596 - [MINOR] acl: add fe_id/so_id to match frontend's and socket's id
1597 - [BUG] appsession's sessid must be reset at end of transaction
1598 - [BUILD] appsession did not build anymore under gcc-2.95
1599 - [BUG] server redirection used an uninitialized string.
1600 - [MEDIUM] http: fix handling of message pointers
1601 - [MINOR] http: fix double slash prefix with server redirect
1602 - [MINOR] http redirect: add the ability to append a '/' to the URL
1603 - [BUG] stream_interface: fix retnclose and remove cond_close
1604 - [MINOR] http redirect: don't explicitly state keep-alive on 1.1
1605 - [MINOR] http: move appsession 'sessid' from session to http_txn
1606 - [OPTIM] reorder http_txn to optimize cache lines placement
1607 - [MINOR] http: differentiate waiting for new request and waiting for a complete requst
1608 - [MINOR] http: add a separate "http-keep-alive" timeout
1609 - [MINOR] config: remove undocumented and buggy 'timeout appsession'
1610 - [DOC] fix various too large lines
1611 - [DOC] remove several trailing spaces
1612 - [DOC] add the doc about stickiness
1613 - [BUILD] remove a warning in standard.h on AIX
1614 - [BUG] checks: chars are unsigned on AIX, check was always true
1615 - [CLEANUP] stream_sock: MSG_NOSIGNAL is only for send(), not recv()
1616 - [BUG] check: we must not check for error before reading a response
1617 - [BUG] buffers: remove remains of wrong obsolete length check
1618 - [OPTIM] stream_sock: don't shutdown(write) when the socket is in error
1619 - [BUG] http: don't count req errors on client resets or t/o during keep-alive
1620 - [MEDIUM] http: don't switch to tunnel mode upon close
1621 - [DOC] add documentation about connection header processing
1622 - [MINOR] http: add http_remove_header2() to remove a header value.
1623 - [MINOR] tools: add a "word_match()" function to match words and ignore spaces
1624 - [MAJOR] http: rework request Connection header handling
1625 - [MAJOR] http: rework response Connection header handling
1626 - [MINOR] add the ability to force kernel socket buffer size.
1627 - [BUG] http_server_error() must not purge a previous pending response
1628 - [OPTIM] http: don't delay response if next request is incomplete
1629 - [MINOR] add the "force-persist" statement to force persistence on down servers
1630 - [MINOR] http: logs must report persistent connections to down servers
1631 - [BUG] buffer_replace2 must never change the ->w entry
1632
Willy Tarreau11f8f542010-01-08 07:49:44 +010016332010/01/08 : 1.4-dev6
1634 - [BUILD] warning in stream_interface.h
1635 - [BUILD] warning ultoa_r returns char *
1636 - [MINOR] hana: only report stats if it is enabled
1637 - [MINOR] stats: add "a link" & "a href" for sockets
1638 - [MINOR]: stats: add show-legends to report additional informations
1639 - [MEDIUM] default-server support
1640 - [BUG]: add 'observer', 'on-error', 'error-limit' to supported options list
1641 - [MINOR] stats: add href to tracked server
1642 - [BUG] stats: show UP/DOWN status also in tracking servers
1643 - [DOC] Restore ability to search a keyword at the beginning of a line
1644 - [BUG] stats: cookie should be reported under backend not under proxy
1645 - [BUG] cfgparser/stats: fix error message
1646 - [BUG] http: disable auto-closing during chunk analysis
1647 - [BUG] http: fix hopefully last closing issue on data forwarding
1648 - [DEBUG] add an http_silent_debug function to debug HTTP states
1649 - [MAJOR] http: fix again the forward analysers
1650 - [BUG] http_process_res_common() must not skip the forward analyser
1651 - [BUG] http: some possible missed close remain in the forward chain
1652 - [BUG] http: redirect needed to be updated after recent changes
1653 - [BUG] http: don't set no-linger on response in case of forced close
1654 - [MEDIUM] http: restore the original behaviour of option httpclose
1655 - [TESTS] add a file to test various connection modes
1656 - [BUG] http: check options before the connection header
1657 - [MAJOR] session: fix the order by which the analysers are run
1658 - [MEDIUM] session: also consider request analysers added during response
1659 - [MEDIUM] http: make safer use of the DONT_READ and AUTO_CLOSE flags
1660 - [BUG] http: memory leak with captures when using keep-alive
1661 - [BUG] http: fix for capture memory leak was incorrect
1662 - [MINOR] http redirect: use proper call to return last response
1663 - [MEDIUM] http: wait for some flush of the response buffer before a new request
1664 - [MEDIUM] session: limit the number of analyser loops
1665
Willy Tarreau1f445892010-01-03 23:23:36 +010016662010/01/03 : 1.4-dev5
1667 - [MINOR] server tracking: don't care about the tracked server's mode
1668 - [MEDIUM] appsession: add "len", "prefix" and "mode" options
1669 - [MEDIUM] appsession: add the "request-learn" option
1670 - [BUG] Configuration parser bug when escaping characters
1671 - [MINOR] CSS & HTML fun
1672 - [MINOR] Collect & provide http response codes received from servers
1673 - [BUG] Fix silly typo: hspr_other -> hrsp_other
1674 - [MINOR] Add "a name" to stats page
1675 - [MINOR] add additional "a href"s to stats page
1676 - [MINOR] Collect & provide http response codes for frontends, fix backends
1677 - [DOC] some small spell fixes and unifications
1678 - [MEDIUM] Decrease server health based on http responses / events, version 3
1679 - [BUG] format '%d' expects type 'int', but argument 5 has type 'long int'
1680 - [BUG] config: fix erroneous check on cookie domain names, again
1681 - [BUG] Healthchecks: get a proper error code if connection cannot be completed immediately
1682 - [DOC] trivial fix for man page
1683 - [MINOR] config: report all supported options for the "bind" keyword
1684 - [MINOR] tcp: add support for the defer_accept bind option
1685 - [MINOR] unix socket: report the socket path in case of bind error
1686 - [CONTRIB] halog: support searching by response time
1687 - [DOC] add a reminder about obsolete documents
1688 - [DOC] point to 1.4 doc, not 1.3
1689 - [DOC] option tcp-smart-connect was missing from index
1690 - [MINOR] http: detect connection: close earlier
1691 - [CLEANUP] sepoll: clean up the fd_clr/fd_set functions
1692 - [OPTIM] move some rarely used fields out of fdtab
1693 - [MEDIUM] fd: merge fd_list into fdtab
1694 - [MAJOR] buffer: flag BF_DONT_READ to disable reads when not required
1695 - [MINOR] http: add new transaction flags for keep-alive and content-length
1696 - [MEDIUM] http request: parse connection, content-length and transfer-encoding
1697 - [MINOR] http request: update the TX_SRV_CONN_KA flag on rewrite
1698 - [MINOR] http request: simplify the test of no-data
1699 - [MEDIUM] http request: simplify POST length detection
1700 - [MEDIUM] http request: make use of pre-parsed transfer-encoding header
1701 - [MAJOR] http: create the analyser which waits for a response
1702 - [MINOR] http: pre-set the persistent flags in the transaction
1703 - [MEDIUM] http response: check body length and set transaction flags
1704 - [MINOR] http response: update the TX_CLI_CONN_KA flag on rewrite
1705 - [MINOR] http: remove the last call to stream_int_return
1706 - [IMPORT] import ebtree v5.0 into directory ebtree/
1707 - [MEDIUM] build: switch ebtree users to use new ebtree version
1708 - [CLEANUP] ebtree: remove old unused files
1709 - [BUG] definitely fix regparm issues between haproxy core and ebtree
1710 - [CLEANUP] ebtree: cast to char * to get rid of gcc warning
1711 - [BUILD] missing #ifndef in ebmbtree.h
1712 - [BUILD] missing #ifndef in ebsttree.h
1713 - [MINOR] tools: add hex2i() function to convert hex char to int
1714 - [MINOR] http: create new MSG_BODY sub-states
1715 - [BUG] stream_sock: BUF_INFINITE_FORWARD broke splice on 64-bit platforms
1716 - [DOC] option is "defer-accept", not "defer_accept"
1717 - [MINOR] http: keep pointer to beginning of data
1718 - [BUG] x-original-to: name was not set in default instance
1719 - [MINOR] http: detect tunnel mode and set it in the session
1720 - [BUG] config: fix error message when config file is not found
1721 - [BUG] config: fix wrong handling of too large argument count
1722 - [BUG] config: disable 'option httplog' on TCP proxies
1723 - [BUG] config: fix erroneous check on cookie domain names
1724 - [BUG] config: cookie domain was ignored in defaults sections
1725 - [MINOR] config: support passing multiple "domain" statements to cookies
1726 - [MINOR] ebtree: add functions to lookup non-null terminated strings
1727 - [MINOR] config: don't report error on all subsequent files on failure
1728 - [BUG] second fix for the printf format warning
1729 - [BUG] check_post: limit analysis to the buffer length
1730 - [MEDIUM] http: process request body in a specific analyser
1731 - [MEDIUM] backend: remove HTTP POST parsing from get_server_ph_post()
1732 - [MAJOR] http: completely process the "connection" header
1733 - [MINOR] http: only consider chunk encoding with HTTP/1.1
1734 - [MAJOR] buffers: automatically compute the maximum buffer length
1735 - [MINOR] http: move the http transaction init/cleanup code to proto_http
1736 - [MINOR] http: move 1xx handling earlier to eliminate a lot of ifs
1737 - [MINOR] http: introduce a new synchronisation state : HTTP_MSG_DONE
1738 - [MEDIUM] http: rework chunk-size parser
1739 - [MEDIUM] http: add a new transaction flags indicating if we know the transfer length
1740 - [MINOR] buffers: add buffer_ignore() to skip some bytes
1741 - [BUG] http: offsets are relative to the buffer, not to ->som
1742 - [MEDIUM] http: automatically re-aling request buffer
1743 - [BUG] http: body parsing must consider the start of message
1744 - [MINOR] new function stream_int_cond_close()
1745 - [MAJOR] http: implement body parser
1746 - [BUG] http: typos on several unlikely() around header insertion
1747 - [BUG] stream_sock: wrong max computation on recv
1748 - [MEDIUM] http: rework the buffer alignment logic
1749 - [BUG] buffers: wrong size calculation for displaced data
1750 - [MINOR] stream_sock: prepare for closing when all pending data are sent
1751 - [MEDIUM] http: add two more states for the closing period
1752 - [MEDIUM] http: properly handle "option forceclose"
1753 - [MINOR] stream_sock: add SI_FL_NOLINGER for faster close
1754 - [MEDIUM] http: make forceclose use SI_FL_NOLINGER
1755 - [MEDIUM] session: set SI_FL_NOLINGER when aborting on write timeouts
1756 - [MEDIUM] http: add some SI_FL_NOLINGER around server errors
1757 - [MINOR] config: option forceclose is valid in frontends too
1758 - [BUILD] halog: insufficient include path in makefile
1759 - [MEDIUM] http: make the analyser not rely on msg being initialized anymore
1760 - [MEDIUM] http: make the parsers able to wait for a buffer flush
1761 - [MAJOR] http: add support for option http-server-close
1762 - [BUG] http: ensure we abort data transfer on write error
1763 - [BUG] last fix was overzealous and disabled server-close
1764 - [BUG] http: fix erroneous trailers size computation
1765 - [MINOR] stream_sock: enable MSG_MORE when forwarding finite amount of data
1766 - [OPTIM] http: set MSG_MORE on response when a pipelined request is pending
1767 - [BUG] http: redirects were broken by chunk changes
1768 - [BUG] http: the request URI pointer is relative to the buffer
1769 - [OPTIM] http: don't immediately enable reading on request
1770 - [MINOR] http: move redirect messages to HTTP/1.1 with a content-length
1771 - [BUG] http: take care of errors, timeouts and aborts during the data phase
1772 - [MINOR] http: don't wait for sending requests to the server
1773 - [MINOR] http: make the conditional redirect support keep-alive
1774 - [BUG] http: fix cookie parser to support spaces and commas in values
1775 - [MINOR] config: some options were missing for "redirect"
1776 - [MINOR] redirect: add support for unconditional rules
1777 - [MINOR] config: centralize proxy struct initialization
1778 - [MEDIUM] config: remove the limitation of 10 reqadd/rspadd statements
1779 - [MEDIUM] config: remove the limitation of 10 config files
1780 - [CLEANUP] http: remove a remaining impossible condition
1781 - [OPTIM] http: optimize a bit the construct of the forward loops
1782
Willy Tarreauc82a9e52009-10-12 06:40:53 +020017832009/10/12 : 1.4-dev4
1784 - [DOC] add missing rate_lim and rate_max
1785 - [MAJOR] struct chunk rework
1786 - [MEDIUM] Health check reporting code rework + health logging, v3
1787 - [BUG] check if rise/fall has an argument and it is > 0
1788 - [MINOR] health checks logging unification
1789 - [MINOR] add "description", "node" and show-node"/"show-desc", remove "node-name", v2
1790 - [MINOR] Allow dots in show-node & add "white-space: nowrap" in th.pxname.
1791 - [DOC] Add information about http://haproxy.1wt.eu/contrib.html
1792 - [MINOR] Introduce include/types/counters.h
1793 - [CLEANUP] Move counters to dedicated structures
1794 - [MINOR] Add "clear counters" to clear statistics counters
1795 - [MEDIUM] Collect & provide separate statistics for sockets, v2
1796 - [BUG] Fix NULL pointer dereference in stats_check_uri_auth(), v2
1797 - [MINOR] acl: don't report valid acls as potential mistakes
1798 - [MINOR] Add cut_crlf(), ltrim(), rtrim() and alltrim()
1799 - [MINOR] Add chunk_htmlencode and chunk_asciiencode
1800 - [MINOR] Capture & display more data from health checks, v2
1801 - [BUG] task.c: don't assing last_timer to node-less entries
1802 - [BUG] http stats: large outputs sometimes got some parts chopped off
1803 - [MINOR] backend: export some functions to recount servers
1804 - [MINOR] backend: uninline some LB functions
1805 - [MINOR] include time.h from freq_ctr.h as is uses "now".
1806 - [CLEANUP] backend: move LB algos to individual files
1807 - [MINOR] lb_map: reorder code in order to ease integration of new hash functions
1808 - [CLEANUP] proxy: move last lb-specific bits to their respective files
1809 - [MINOR] backend: separate declarations of LB algos from their lookup method
1810 - [MINOR] backend: reorganize the LB algorithm selection
1811 - [MEDIUM] backend: introduce the "static-rr" LB algorithm
1812 - [MINOR] report list of supported pollers with -vv
1813 - [DOC] log-health-checks is an option, not a directive
1814 - [MEDIUM] new option "independant-streams" to stop updating read timeout on writes
1815 - [BUG] stats: don't call buffer_shutw(), but ->shutw() instead
1816 - [MINOR] stats: strip CR and LF from the input command line
1817 - [BUG] don't refresh timeouts late after detected activity
1818 - [MINOR] stats_dump_errors_to_buffer: use buffer_feed_chunk()
1819 - [MINOR] stats_dump_sess_to_buffer: use buffer_feed_chunk()
1820 - [MINOR] stats: make stats_dump_raw_to_buffer() use buffer_feed_chunk
1821 - [MEDIUM] stats: don't use s->ana_state anymore
1822 - [MINOR] remove now obsolete ana_state from the session struct
1823 - [MEDIUM] stats: make HTTP stats use an I/O handler
1824 - [MEDIUM] stream_int: adjust WAIT_ROOM handling
1825 - [BUG] config: look for ID conflicts in all sockets, not only last ones.
1826 - [MINOR] config: reference file and line with any listener/proxy/server declaration
1827 - [MINOR] config: report places of duplicate names or IDs
1828 - [MINOR] config: add pointer to file name in block/redirect/use_backend/monitor rules
1829 - [MINOR] tools: add a new get_next_id() function
1830 - [MEDIUM] config: automatically find unused IDs for proxies, servers and listeners
1831 - [OPTIM] counters: move some max numbers to the counters struct
1832 - [BUG] counters: fix segfault on missing counters for a listener
1833 - [MEDIUM] backend: implement consistent hashing variation
1834 - [MINOR] acl: add fe_conn, be_conn, queue, avg_queue
1835 - [MINOR] stats: use 'clear counters all' to clear all values
1836 - [MEDIUM] add access restrictions to the stats socket
1837 - [MINOR] buffers: add buffer_feed2() and make buffer_feed() measure string length
1838 - [MINOR] proxy: provide function to retrieve backend/server pointers
1839 - [MINOR] add the "initial weight" to the server struct.
1840 - [MEDIUM] stats: add the "get weight" command to report a server's weight
1841 - [MEDIUM] stats: add the "set weight" command
1842 - [BUILD] add a 'make tags' target
1843 - [MINOR] stats: add support for numeric IDs in set weight/get weight
1844 - [MINOR] stats: use a dedicated state to output static data
1845 - [OPTIM] stats: check free space before trying to print
1846
Willy Tarreau9f389e02009-09-24 00:12:50 +020018472009/09/24 : 1.4-dev3
1848 - [BUILD] compilation of haproxy-1.4-dev2 on FreeBSD
1849 - [MEDIUM] Collect & show information about last health check, v3
1850 - [MINOR] export the hostname variable so that all the code can access it
1851 - [MINOR] stats: add a new node-name setting
1852 - [MEDIUM] remove old experimental tcpsplice option
1853 - [BUILD] fix build for systems without SOL_TCP
1854 - [MEDIUM] move connection establishment from backend to the SI.
1855 - [MEDIUM] make the global stats socket part of a frontend
1856 - [MEDIUM] session: account per-listener connections
1857 - [MINOR] session: switch to established state if no connect function
1858 - [MEDIUM] make the unix stats sockets use the generic session handler
1859 - [CLEANUP] unix: remove uxst_process_session()
1860 - [CLEANUP] move remaining stats sockets code to dumpstats
1861 - [MINOR] move the initial task's nice value to the listener
1862 - [MINOR] cleanup set_session_backend by using pre-computed analysers
1863 - [MINOR] set s->srv_error according to the analysers
1864 - [MEDIUM] set rep->analysers from fe and be analysers
1865 - [MEDIUM] replace BUFSIZE with buf->size in computations
1866 - [MEDIUM] make it possible to change the buffer size in the configuration
1867 - [MEDIUM] report error on buffer writes larger than buffer size
1868 - [MEDIUM] stream_interface: add and use ->update function to resync
1869 - [CLEANUP] remove ifdef MSG_NOSIGNAL and define it instead
1870 - [MEDIUM] remove TCP_CORK and make use of MSG_MORE instead
1871 - [BUG] tarpit did not work anymore
1872 - [MINOR] acl: add support for hdr_ip to match IP addresses in headers
1873 - [MAJOR] buffers: fix misuse of the BF_SHUTW_NOW flag
1874 - [MINOR] buffers: provide more functions to handle buffer data
1875 - [MEDIUM] buffers: provide new buffer_feed*() function
1876 - [MINOR] buffers: add peekchar and peekline functions for stream interfaces
1877 - [MINOR] buffers: provide buffer_si_putchar() to send a char from a stream interface
1878 - [BUG] buffer_forward() would not correctly consider data already scheduled
1879 - [MINOR] buffers: add buffer_cut_tail() to cut only unsent data
1880 - [MEDIUM] stream_interface: make use of buffer_cut_tail() to report errors
1881 - [MAJOR] http: add support for HTTP 1xx informational responses
1882 - [MINOR] buffers: inline buffer_si_putchar()
1883 - [MAJOR] buffers: split BF_WRITE_ENA into BF_AUTO_CONNECT and BF_AUTO_CLOSE
1884 - [MAJOR] buffers: fix the BF_EMPTY flag's meaning
1885 - [BUG] stream_interface: SI_ST_CLO must have buffers SHUT
1886 - [MINOR] stream_sock: don't set SI_FL_WAIT_DATA if BF_SHUTW_NOW is set
1887 - [MEDIUM] add support for infinite forwarding
1888 - [BUILD] stream_interface: fix conflicting declaration
1889 - [BUG] buffers: buffer_forward() must not always clear BF_OUT_EMPTY
1890 - [BUG] variable buffer size ignored at initialization time
1891 - [MINOR] ensure that buffer_feed() and buffer_skip() set BF_*_PARTIAL
1892 - [BUG] fix buffer_skip() and buffer_si_getline() to correctly handle wrap-arounds
1893 - [MINOR] stream_interface: add SI_FL_DONT_WAKE flag
1894 - [MINOR] stream_interface: add iohandler callback
1895 - [MINOR] stream_interface: add functions to support running as internal/external tasks
1896 - [MEDIUM] session: call iohandler for embedded tasks (applets)
1897 - [MINOR] add a ->private member to the stream_interface
1898 - [MEDIUM] stats: prepare the connection for closing before dumping
1899 - [MEDIUM] stats: replace the stats socket analyser with an SI applet
1900
Willy Tarreau68dcd252009-08-09 22:57:09 +020019012009/08/09 : 1.4-dev2
1902 - [BUG] task: fix possible crash when some timeouts are not configured
1903 - [BUG] log: option tcplog would log to global if no logger was defined
1904
Willy Tarreaub03d2982009-07-29 22:38:32 +020019052009/07/29 : 1.4-dev1
1906 - [MINOR] acl: add support for matching of RDP cookies
1907 - [MEDIUM] add support for RDP cookie load-balancing
1908 - [MEDIUM] add support for RDP cookie persistence
1909 - [MINOR] add a new CLF log format
1910 - [MINOR] startup: don't imply -q with -D
1911 - [BUG] ensure that we correctly re-start old process in case of error
1912 - [MEDIUM] add support for binding to source port ranges during connect
1913 - [MINOR] config: track "no option"/"option" changes
1914 - [MINOR] config: support resetting options do default values
1915 - [MEDIUM] implement option tcp-smart-accept at the frontend
1916 - [MEDIUM] stream_sock: implement tcp-cork for use during shutdowns on Linux
1917 - [MEDIUM] implement tcp-smart-connect option at the backend
1918 - [MEDIUM] add support for TCP MSS adjustment for listeners
1919 - [MEDIUM] support setting a server weight to zero
1920 - [MINOR] make DEFAULT_MAXCONN user-configurable at build time
1921 - [MAJOR] session: don't clear buffer status flags anymore
1922 - [MAJOR] session: only check for timeouts when they have just occurred.
1923 - [MAJOR] session: simplify buffer error handling
1924 - [MEDIUM] config: split parser and checker in two functions
1925 - [MEDIUM] config: support loading multiple configuration files
1926 - [MEDIUM] stream_sock: don't close prematurely when nolinger is set
1927 - [MEDIUM] session: rework buffer analysis to permit permanent analysers
1928 - [MEDIUM] splice: set the capability on each stream_interface
1929 - [BUG] http: redirect rules were processed too early
1930 - [CLEANUP] remove unused DEBUG_PARSE_NO_SPEEDUP define
1931 - [MEDIUM] http: split request waiter from request processor
1932 - [MEDIUM] session: tell analysers what bit they were called for
1933 - [MAJOR] http: complete splitting of the remaining stages
1934 - [MINOR] report in the proxies the requirements for ACLs
1935 - [MINOR] http: rely on proxy->acl_requires to allocate hdr_idx
1936 - [MINOR] acl: add HTTP protocol detection (req_proto_http)
1937 - [MINOR] prepare callers of session_set_backend to handle errors
1938 - [BUG] default ACLs did not properly set the ->requires flag
1939 - [MEDIUM] allow a TCP frontend to switch to an HTTP backend
1940 - [MINOR] ensure we can jump from swiching rules to http without data
1941 - [MINOR] http: take http request timeout from the backend
1942 - [MINOR] allow TCP inspection rules to make use of HTTP ACLs
1943 - [BUILD] report commit date and not author's date as build date
1944 - [MINOR] acl: don't complain anymore when using L7 acls in TCP
1945 - [BUG] stream_sock: always shutdown(SHUT_WR) before closing
1946 - [BUG] stream_sock: don't stop reading when the poller reports an error
1947 - [BUG] config: tcp-request content only accepts "if" or "unless"
1948 - [BUG] task: fix possible timer drift after update
1949 - [MINOR] apply tcp-smart-connect option for the checks too
1950 - [MINOR] stats: better displaying in MSIE
1951 - [MINOR] config: improve error reporting in global section
1952 - [MINOR] config: improve error reporting in listen sections
1953 - [MINOR] config: the "capture" keyword is not allowed in backends
1954 - [MINOR] config: improve error reporting when checking configuration
1955 - [BUILD] fix a minor build warning on AIX
1956 - [BUILD] use "git cmd" instead of "git-cmd"
1957 - [CLEANUP] report 2009 not 2008 in the copyright banner.
1958 - [MINOR] print usage on the stats sockets upon invalid commands
1959 - [MINOR] acl: detect and report potential mistakes in ACLs
1960 - [BUILD] fix incorrect printf arg count with tcp_splice
1961 - [BUG] fix random pauses on last segment of a series
1962 - [BUILD] add support for build under Cygwin
1963
Willy Tarreau79158882009-06-09 11:59:08 +020019642009/06/09 : 1.4-dev0
1965 - exact copy of 1.3.18
1966
Willy Tarreaubeb05ae2009-05-10 20:27:47 +020019672009/05/10 : 1.3.18
1968 - [MEDIUM] add support for "balance hdr(name)"
1969 - [CLEANUP] give a little bit more information in error message
1970 - [MINOR] add X-Original-To: header
1971 - [BUG] x-original-to: fix missing initialization to default value
1972 - [BUILD] spec file: fix broken pipe during rpmbuild and add man file
1973 - [MINOR] improve reporting of misplaced acl/reqxxx rules
1974 - [MEDIUM] http: add options to ignore invalid header names
1975 - [MEDIUM] http: capture invalid requests/responses even if accepted
1976 - [BUILD] add format(printf) to printf-like functions
1977 - [MINOR] fix several printf formats and missing arguments
1978 - [BUG] stats: total and lbtot are unsigned
1979 - [MINOR] fix a few remaining printf-like formats on 64-bit platforms
1980 - [CLEANUP] remove unused make option from haproxy.spec
1981 - [BUILD] make it possible to pass alternative arch at build time
1982 - [MINOR] switch all stat counters to 64-bit
1983 - [MEDIUM] ensure we don't recursively call pool_gc2()
1984 - [CRITICAL] uninitialized response field can sometimes cause crashes
1985 - [BUG] fix wrong pointer arithmetics in HTTP message captures
1986 - [MINOR] rhel init script : support the reload operation
1987 - [MINOR] add basic signal handling functions
1988 - [BUILD] add signal.o to all makefiles
1989 - [MEDIUM] call signal_process_queue from run_poll_loop
1990 - [MEDIUM] pollers: don't wait if a signal is pending
1991 - [MEDIUM] convert all signals to asynchronous signals
1992 - [BUG] O(1) pollers should check their FD before closing it
1993 - [MINOR] don't close stdio fds twice
1994 - [MINOR] add options dontlog-normal and log-separate-errors
1995 - [DOC] minor fixes and rearrangements
1996 - [BUG] fix parser crash on unconditional tcp content rules
1997 - [DOC] rearrange the configuration manual and add a summary
1998 - [MINOR] standard: provide a new 'my_strndup' function
1999 - [MINOR] implement per-logger log level limitation
2000 - [MINOR] compute the max of sessions/s on fe/be/srv
2001 - [MINOR] stats: report max sessions/s and limit in CSV export
2002 - [MINOR] stats: report max sessions/s and limit in HTML stats
2003 - [MINOR] stats/html: use the arial font before helvetica
2004
Willy Tarreauf459b422009-03-29 15:26:57 +020020052009/03/29 : 1.3.17
2006 - Update specfile to build for v2.6 kernel.
2007 - [BUG] reset the stream_interface connect timeout upon connect or error
2008 - [BUG] reject unix accepts when connection limit is reached
2009 - [MINOR] show sess: report number of calls to each task
2010 - [BUG] don't call epoll_ctl() on closed sockets
2011 - [BUG] stream_sock: disable I/O on fds reporting an error
2012 - [MINOR] sepoll: don't count two events on the same FD.
2013 - [MINOR] show sess: report a lot more information about sessions
2014 - [BUG] stream_sock: check for shut{r,w} before refreshing some timeouts
2015 - [BUG] don't set an expiration date directly from now_ms
2016 - [MINOR] implement ulltoh() to write HTML-formatted numbers
2017 - [MINOR] stats/html: group digits by 3 to clarify numbers
2018 - [BUILD] remove haproxy-small.spec
2019 - [BUILD] makefile: remove unused references to linux24eold and EPOLL_CTL_WORKAROUND
2020
Willy Tarreau8019ffa2009-03-22 23:46:12 +010020212009/03/22 : 1.3.16
2022 - [BUILD] Fixed Makefile for linking pcre
2023 - [CONTRIB] selinux policy for haproxy
2024 - [MINOR] show errors: encode backslash as well as non-ascii characters
2025 - [MINOR] cfgparse: some cleanups in the consistency checks
2026 - [MINOR] cfgparse: set backends to "balance roundrobin" by default
2027 - [MINOR] tcp-inspect: permit the use of no-delay inspection
2028 - [MEDIUM] reverse internal proxy declaration order to match configuration
2029 - [CLEANUP] config: catch and report some possibly wrong rule ordering
2030 - [BUG] connect timeout is in the stream interface, not the buffer
2031 - [BUG] session: errors were not reported in termination flags in TCP mode
2032 - [MINOR] tcp_request: let the caller take care of errors and timeouts
2033 - [CLEANUP] http: remove some commented out obsolete code in process_response
2034 - [MINOR] update ebtree to version 4.1
2035 - [MEDIUM] scheduler: get rid of the 4 trees thanks and use ebtree v4.1
2036 - [BUG] sched: don't leave 3 lasts tasks unprocessed when niced tasks are present
2037 - [BUG] scheduler: fix improper handling of duplicates __task_queue()
2038 - [MINOR] sched: permit a task to stay up between calls
2039 - [MINOR] task: keep a task count and clean up task creators
2040 - [MINOR] stats: report number of tasks (active and running)
2041 - [BUG] server check intervals must not be null
2042 - [OPTIM] stream_sock: don't retry to read after a large read
2043 - [OPTIM] buffer: new BF_READ_DONTWAIT flag reduces EAGAIN rates
2044 - [MEDIUM] session: don't resync FSMs on non-interesting changes
2045 - [BUG] check for global.maxconn before doing accept()
2046 - [OPTIM] sepoll: do not re-check whole list upon accepts
2047
Willy Tarreau8185ced2009-03-09 22:45:53 +010020482009/03/09 : 1.3.16-rc2
2049 - [BUG] stream_sock: write timeout must be updated when forwarding !
2050
Willy Tarreauff63b432009-03-09 01:03:42 +010020512009/03/09 : 1.3.16-rc1
2052 - appsessions: cleanup DEBUG_HASH and initialize request_counter
2053 - [MINOR] acl: add new keyword "connslots"
2054 - [MINOR] cfgparse: fix off-by 2 in error message size
2055 - [BUILD] fix build with gcc 4.3
2056 - [BUILD] fix MANDIR default location to match documentation
2057 - [TESTS] add a debug patch to help trigger the stats bug
2058 - [BUG] Flush buffers also where there are exactly 0 bytes left
2059 - [MINOR] Allow to specify a domain for a cookie
2060 - [BUG/CLEANUP] cookiedomain -> cookie_domain rename + free(p->cookie_domain)
2061 - [MEDIUM] Fix memory freeing at exit
2062 - [MEDIUM] Fix memory freeing at exit, part 2
2063 - [BUG] Fix listen & more of 2 couples <ip>:<port>
2064 - [DOC] remove buggy comment for use_backend
2065 - [CRITICAL] fix server state tracking: it was O(n!) instead of O(n)
2066 - [MEDIUM] add support for URI hash depth and length limits
2067 - [MINOR] permit renaming of x-forwarded-for header
2068 - [BUILD] fix Makefile.bsd and Makefile.osx for stream_interface
2069 - [BUILD] Haproxy won't compile if DEBUG_FULL is defined
2070 - [MEDIUM] upgrade to ebtree v4.0
2071 - [DOC] update the README file with new build options
2072 - [MEDIUM] reduce risk of event starvation in ev_sepoll
2073 - [MEDIUM] detect streaming buffers and tag them as such
2074 - [MEDIUM] add support for conditional HTTP redirection
2075 - [BUILD] make install should depend on haproxy not "all"
2076 - [DEBUG] add a TRACE macro to facilitate runtime data extraction
2077 - [BUG] event pollers must not wait if a task exists in the run queue
2078 - [BUG] queue management: wake oldest request in queues
2079 - [BUG] log: reported queue position was offed-by-one
2080 - [BUG] fix the dequeuing logic to ensure that all requests get served
2081 - [DOC] documentation for the "retries" parameter was missing.
2082 - [MEDIUM] implement a monotonic internal clock
2083 - [MEDIUM] further improve monotonic clock by check forward jumps
2084 - [OPTIM] add branch prediction hints in list manipulations
2085 - [MAJOR] replace ultree with ebtree in wait-queues
2086 - [BUG] we could segfault during exit while freeing uri_auths
2087 - [BUG] wqueue: perform proper timeout comparisons with wrapping values
2088 - [MINOR] introduce now_ms, the current date in milliseconds
2089 - [BUG] disable buffer read timeout when reading stats
2090 - [MEDIUM] rework the wait queue mechanism
2091 - [BUILD] change declaration of base64tab to fix build with Intel C++
2092 - [OPTIM] shrink wake_expired_tasks() by using task_wakeup()
2093 - [MAJOR] use an ebtree instead of a list for the run queue
2094 - [MEDIUM] introduce task->nice and boot access to statistics
2095 - [OPTIM] task_queue: assume most consecutive timers are equal
2096 - [BUILD] silent a warning in unlikely() with gcc 4.x
2097 - [MAJOR] convert all expiration timers from timeval to ticks
2098 - [BUG] use_backend would not correctly consider "unless"
2099 - [TESTS] added test-acl.cfg to test some ACL combinations
2100 - [MEDIUM] add support for configuration keyword registration
2101 - [MEDIUM] modularize the global "stats" keyword configuration parser
2102 - [MINOR] cfgparse: add support for warnings in external functions
2103 - [MEDIUM] modularize the "timeout" keyword configuration parser
2104 - [MAJOR] implement tcp request content inspection
2105 - [MINOR] acl: add a new parsing function: parse_dotted_ver
2106 - [MINOR] acl: add req_ssl_ver in TCP, to match an SSL version
2107 - [CLEANUP] remove unused include/types/client.h
2108 - [CLEANUP] remove many #include <types/xxx> from C files
2109 - [CLEANUP] remove dependency on obsolete INTBITS macro
2110 - [DOC] document the new "tcp-request" keyword and associated ACLs
2111 - [MINOR] acl: add REQ_CONTENT to the list of default acls
2112 - [MEDIUM] acl: permit fetch() functions to set the result themselves
2113 - [MEDIUM] acl: get rid of dummy values in always_true/always_false
2114 - [MINOR] acl: add the "wait_end" acl verb
2115 - [MEDIUM] acl: enforce ACL type checking
2116 - [MEDIUM] acl: set types on all currently known ACL verbs
2117 - [MEDIUM] acl: when possible, report the name and requirements of ACLs in warnings
2118 - [CLEANUP] remove 65 useless NULL checks before free
2119 - [MEDIUM] memory: update pool_free2() to support NULL pointers
2120 - [MEDIUM] buffers: ensure buffer_shut* are properly called upon shutdowns
2121 - [MEDIUM] process_srv: rely on buffer flags for client shutdown
2122 - [MEDIUM] process_srv: don't rely at all on client state
2123 - [MEDIUM] process_cli: don't rely at all on server state
2124 - [BUG] fix segfault with url_param + check_post
2125 - [BUG] server timeout was not considered in some circumstances
2126 - [BUG] client timeout incorrectly rearmed while waiting for server
2127 - [MAJOR] kill CL_STINSPECT and CL_STHEADERS (step 1)
2128 - [MAJOR] get rid of SV_STANALYZE (step 2)
2129 - [MEDIUM] simplify and centralize request timeout cancellation and request forwarding
2130 - [MAJOR] completely separate HTTP and TCP states on the request path
2131 - [BUG] fix recently introduced loop when client closes early
2132 - [MAJOR] get rid of the SV_STHEADERS state
2133 - [MAJOR] better separation of response processing and server state
2134 - [MAJOR] clearly separate HTTP response processing from TCP server state
2135 - [MEDIUM] remove unused references to {CL|SV}_STSHUT*
2136 - [MINOR] term_trace: add better instrumentations to trace the code
2137 - [BUG] ev_sepoll: closed file descriptors could persist in the spec list
2138 - [BUG] process_response must not enable the read FD
2139 - [BUG] buffers: remove BF_MAY_CONNECT and fix forwarding issue
2140 - [BUG] process_response: do not touch srv_state
2141 - [BUG] maintain_proxies must not disable backends
2142 - [CLEANUP] get rid of BF_SHUT*_PENDING
2143 - [MEDIUM] buffers: add BF_EMPTY and BF_FULL to remove dependency on req/rep->l
2144 - [MAJOR] process_session: rely only on buffer flags
2145 - [MEDIUM] use buffer->wex instead of buffer->cex for connect timeout
2146 - [MEDIUM] centralize buffer timeout checks at the top of process_session
2147 - [MINOR] ensure the termination flags are set by process_xxx
2148 - [MEDIUM] session: move the analysis bit field to the buffer
2149 - [OPTIM] process_cli/process_srv: reduce the number of tests
2150 - [BUG] regparm is broken on gcc < 3
2151 - [BUILD] fix warning in proto_tcp.c with gcc >= 4
2152 - [MEDIUM] merge inspect_exp and txn->exp into request buffer
2153 - [BUG] process_cli/process_srv: don't call shutdown when already done
2154 - [BUG] process_request: HTTP body analysis must return zero if missing data
2155 - [TESTS] test-fsm: 22 regression tests for state machines
2156 - [BUG] Fix empty X-Forwarded-For header name when set in defaults section
2157 - [BUG] fix harmless but wrong fd insertion sequence
2158 - [MEDIUM] make it possible for analysers to follow the whole session
2159 - [MAJOR] rework of the server FSM
2160 - [OPTIM] remove useless fd_set(read) upon shutdown(write)
2161 - [MEDIUM] massive cleanup of process_srv()
2162 - [MEDIUM] second level of code cleanup for process_srv_data
2163 - [MEDIUM] third cleanup and optimization of process_srv_data()
2164 - [MEDIUM] process_srv_data: ensure that we always correctly re-arm timeouts
2165 - [MEDIUM] stream_sock_process_data moved to stream_sock.c
2166 - [MAJOR] make the client side use stream_sock_process_data()
2167 - [MEDIUM] split stream_sock_process_data
2168 - [OPTIM] stream_sock_read must check for null-reads more often
2169 - [MINOR] only call flow analysers when their read side is connected.
2170 - [MEDIUM] reintroduce BF_HIJACK with produce_content
2171 - [MINOR] re-arrange buffer flags and rename some of them
2172 - [MINOR] do not check for BF_SHUTR when computing write timeout
2173 - [OPTIM] ev_sepoll: detect newly created FDs and check them once
2174 - [OPTIM] reduce the number of calls to task_wakeup()
2175 - [OPTIM] force inlining of large functions with gcc >= 3
2176 - [MEDIUM] indicate a reason for a task wakeup
2177 - [MINOR] change type of fdtab[]->owner to void*
2178 - [MAJOR] make stream sockets aware of the stream interface
2179 - [MEDIUM] stream interface: add the ->shutw method as well as in and out buffers
2180 - [MEDIUM] buffers: add BF_READ_ATTACHED and BF_ANA_TIMEOUT
2181 - [MEDIUM] process_session: make use of the new buffer flags
2182 - [CLEANUP] process_session: move debug outputs out of the critical loop
2183 - [MEDIUM] move QUEUE and TAR timers to stream interfaces
2184 - [OPTIM] add compiler hints in tick_is_expired()
2185 - [MINOR] add buffer_check_timeouts() to check what timeouts have fired.
2186 - [MEDIUM] use buffer_check_timeouts instead of stream_sock_check_timeouts()
2187 - [MINOR] add an expiration flag to the stream_sock_interface
2188 - [MAJOR] migrate the connection logic to stream interface
2189 - [MAJOR] add a connection error state to the stream_interface
2190 - [MEDIUM] add the SN_CURR_SESS flag to the session to track open sessions
2191 - [MEDIUM] continue layering cleanups.
2192 - [MEDIUM] stream_interface: added a DISconnected state between CON/EST and CLO
2193 - [MEDIUM] remove stream_sock_update_data()
2194 - [MINOR] maintain a global session list in order to ease debugging
2195 - [BUG] shutw must imply close during a connect
2196 - [MEDIUM] process shutw during connection attempt
2197 - [MEDIUM] make the stream interface control the SHUT{R,W} bits
2198 - [MAJOR] complete layer4/7 separation
2199 - [CLEANUP] move the session-related functions to session.c
2200 - [MINOR] call session->do_log() for logging
2201 - [MINOR] replace the ambiguous client_return function by stream_int_return
2202 - [MINOR] replace client_retnclose() with stream_int_retnclose()
2203 - [MINOR] replace srv_close_with_err() with http_server_error()
2204 - [MEDIUM] make the http server error function a pointer in the session
2205 - [CLEANUP] session.c: removed some migration left-overs in sess_establish()
2206 - [MINOR] stream_sock_data_finish() should not expose fd
2207 - [MEDIUM] extract TCP request processing from HTTP
2208 - [MEDIUM] extract the HTTP tarpit code from process_request().
2209 - [MEDIUM] move the HTTP request body analyser out of process_request().
2210 - [MEDIUM] rename process_request to http_process_request
2211 - [BUG] fix forgotten server session counter
2212 - [MINOR] declare process_session in session.h, not proto_http.h
2213 - [MEDIUM] first pass of lifting to proto_uxst.c:uxst_event_accept()
2214 - [MINOR] add an analyser code for UNIX stats request
2215 - [MINOR] pre-set analyser flags on the listener at registration time
2216 - [BUG] do not forward close from cons to prod with analysers
2217 - [MEDIUM] ensure that sock->shutw() also closes read for init states
2218 - [MINOR] add an analyser state in struct session
2219 - [MAJOR] make unix sockets work again with stats
2220 - [MEDIUM] remove cli_fd, srv_fd, cli_state and srv_state from the session
2221 - [MINOR] move the listener reference from fd to session
2222 - [MEDIUM] reference the current hijack function in the buffer itself
2223 - [MINOR] slightly rebalance stats_dump_{raw,http}
2224 - [MINOR] add a new back-reference type : struct bref
2225 - [MINOR] add back-references to sessions for later use by a dumper.
2226 - [MEDIUM] add support for "show sess" in unix stats socket
2227 - [BUG] do not release the connection slot during a retry
2228 - [BUG] dynamic connection throttling could return a max of zero conns
2229 - [BUG] do not try to pause backends during reload
2230 - [BUG] ensure that listeners from disabled proxies are correctly unbound.
2231 - [BUG] acl-related keywords are not allowed in defaults sections
2232 - [BUG] cookie capture is declared in the frontend but checked on the backend
2233 - [BUG] critical errors should be reported even in daemon mode
2234 - [MINOR] redirect: add support for the "drop-query" option
2235 - [MINOR] redirect: add support for "set-cookie" and "clear-cookie"
2236 - [MINOR] redirect: in prefix mode a "/" means not to change the URI
2237 - [BUG] do not dequeue requests on a dead server
2238 - [BUG] do not dequeue the backend's pending connections on a dead server
2239 - [MINOR] stats: indicate if a task is running in "show sess"
2240 - [BUG] check timeout must not be changed if timeout.check is not set
2241 - [BUG] "option transparent" is for backend, not frontend !
2242 - [MINOR] transfer errors were not reported anymore in data phase
2243 - [MEDIUM] add a send limit to a buffer
2244 - [MEDIUM] don't report buffer timeout when there is I/O activity
2245 - [MEDIUM] indicate when we don't care about read timeout
2246 - [MINOR] add flags to indicate when a stream interface is waiting for space/data
2247 - [MEDIUM] enable inter-stream_interface wakeup calls
2248 - [MAJOR] implement autonomous inter-socket forwarding
2249 - [MINOR] add the splice_len member to the buffer struct in preparation of splice support
2250 - [MEDIUM] stream_sock: factor out the return path in case of no-writes
2251 - [MEDIUM] i/o: rework ->to_forward and ->send_max
2252 - [OPTIM] stream_sock: do not ask for polling on EAGAIN if we have read
2253 - [OPTIM] buffer: replace rlim by max_len
2254 - [OPTIM] stream_sock: factor out the buffer full handling out of the loop
2255 - [CLEANUP] replace a few occurrences of (flags & X) && !(flags & Y)
2256 - [CLEANUP] stream_sock: move the write-nothing condition out of the loop
2257 - [MEDIUM] split stream_sock_write() into callback and core functions
2258 - [MEDIUM] stream_sock_read: call ->chk_snd whenever there are data pending
2259 - [MINOR] stream_sock: fix a few wrong empty calculations
2260 - [MEDIUM] stream_sock: try to send pending data on chk_snd()
2261 - [MINOR] global.maxpipes: add the ability to reserve file descriptors for pipes
2262 - [MEDIUM] splice: add configuration options and set global.maxpipes
2263 - [MINOR] introduce structures required to support Linux kernel splicing
2264 - [MEDIUM] add definitions for Linux kernel splicing
2265 - [MAJOR] complete support for linux 2.6 kernel splicing
2266 - [BUG] reserve some pipes for backends with splice enabled
2267 - [MEDIUM] splice: add hints to support older buggy kernels
2268 - [MEDIUM] introduce pipe pools
2269 - [MEDIUM] splice: make use of pipe pools
2270 - [STATS] report pipe usage in the statistics
2271 - [OPTIM] make global.maxpipes default to global.maxconn/4 when not specified
2272 - [BUILD] fix snapshot date extraction with negative timezones
2273 - [MEDIUM] move global tuning options to the global structure
2274 - [MEDIUM] splice: add the global "nosplice" option
2275 - [BUILD] add USE_LINUX_SPLICE to enable LINUX_SPLICE on linux 2.6
2276 - [BUG] we must not exit if protocol binding only returns a warning
2277 - [MINOR] add support for bind interface name
2278 - [BUG] inform the user when root is expected but not set
2279 - [MEDIUM] add support for source interface binding
2280 - [MEDIUM] add support for source interface binding at the server level
2281 - [MEDIUM] implement bind-process to limit service presence by process
2282 - [DOC] document maxpipes, nosplice, option splice-{auto,request,response}
2283 - [DOC] filled the logging section of the configuration manual
2284 - [DOC] document HTTP status codes
2285 - [DOC] document a few missing info about errorfile
2286 - [BUG] fix random memory corruption using "show sess"
2287 - [BUG] fix unix socket processing of interrupted output
2288 - [DOC] add diagrams of queuing and future ACL design
2289 - [BUILD] proto_http did not build on gcc-2.95
2290 - [BUG] the "source" keyword must first clear optional settings
2291 - [BUG] global.tune.maxaccept must be limited even in mono-process mode
2292 - [MINOR] ensure that http_msg_analyzer updates pointer to invalid char
2293 - [MEDIUM] store a complete dump of request and response errors in proxies
2294 - [MEDIUM] implement error dump on unix socket with "show errors"
2295 - [DOC] document "show errors"
2296 - [MINOR] errors dump must use user-visible date, not internal date.
2297 - [MINOR] time: add __usec_to_1024th to convert usecs to 1024th of second
2298 - [MINOR] add curr_sec_ms and curr_sec_ms_scaled for current second.
2299 - [MEDIUM] measure and report session rate on frontend, backends and servers
2300 - [BUG] the "connslots" keyword was matched as "connlots"
2301 - [MINOR] acl: add 2 new verbs: fe_sess_rate and be_sess_rate
2302 - [MEDIUM] implement "rate-limit sessions" for the frontend
2303 - [BUG] interface binding: length must include the trailing zero
2304 - [BUG] typo in timeout error reporting : report *res and not *err
2305 - [OPTIM] maintain_proxies: only wake up when the frontend will be ready
2306 - [OPTIM] rate-limit: cleaner behaviour on low rates and reduce consumption
2307 - [BUG] switch server-side stream interface to close in case of abort
2308 - [CLEANUP] remove last references to term_trace
2309 - [OPTIM] freq_ctr: do not rotate the counters when reading
2310 - [BUG] disable any analysers for monitoring requests
2311 - [BUG] rate-limit in defaults section was ignored
2312 - [BUG] task: fix handling of duplicate keys
2313 - [OPTIM] task: don't unlink a task from a wait queue when waking it up
2314 - [OPTIM] displace tasks in the wait queue only if absolutely needed
2315 - [MEDIUM] minor update to the task api: let the scheduler queue itself
2316 - [BUG] event_accept() must always wake the task up, even in health mode
2317 - [CLEANUP] task: distinguish between clock ticks and timers
2318 - [OPTIM] task: reduce the number of calls to task_queue()
2319 - [OPTIM] do not re-check req buffer when only response has changed
2320 - [CLEANUP] don't enable kernel splicing when socket is closed
2321 - [CLEANUP] buffer_flush() was misleading, rename it as buffer_erase
2322 - [MINOR] buffers: implement buffer_flush()
2323 - [MEDIUM] rearrange forwarding condition to enable splice during analysis
2324 - [BUILD] build fixes for Solaris
2325 - [BUILD] proto_http did not build on gcc-2.95 (again)
2326 - [CONTRIB] halog: fast log parser for haproxy
2327 - [CONTRIB] halog: faster fgets() and add support for percentile reporting
2328
Willy Tarreau7b4c5ae2008-04-19 21:06:14 +020023292008/04/19 : 1.3.15
2330 - [BUILD] Added support for 'make install'
2331 - [BUILD] Added 'install-man' make target for installing the man page
2332 - [BUILD] Added 'install-bin' make target
2333 - [BUILD] Added 'install-doc' make target
2334 - [BUILD] Removed "/" after '$(DESTDIR)' in install targets
2335 - [BUILD] Changed 'install' target to install the binaries first
2336 - [BUILD] Replace hardcoded 'LD = gcc' with 'LD = $(CC)'
2337 - [MEDIUM]: Inversion for options
2338 - [MEDIUM]: Count retries and redispatches also for servers, fix redistribute_pending, extend logs, %d->%u cleanup
2339 - [BUG]: Restore clearing t->logs.bytes
2340 - [MEDIUM]: rework checks handling
2341 - [DOC] Update a "contrib" file with a hint about a scheme used for formathing subjects
2342 - [MEDIUM] Implement "track [<backend>/]<server>"
2343 - [MINOR] Implement persistent id for proxies and servers
2344 - [BUG] Don't increment server connections too much + fix retries
2345 - [MEDIUM]: Prevent redispatcher from selecting the same server, version #3
2346 - [MAJOR] proto_uxst rework -> SNMP support
2347 - [BUG] appsession lookup in URL does not work
2348 - [BUG] transparent proxy address was ignored in backend
2349 - [BUG] hot reconfiguration failed because of a wrong error check
2350 - [DOC] big update to the configuration manual
2351 - [DOC] large update to the configuration manual
2352 - [DOC] document more options
2353 - [BUILD] major rework of the GNU Makefile
2354 - [STATS] add support for "show info" on the unix socket
2355 - [DOC] document options forwardfor to logasap
2356 - [MINOR] add support for the "backlog" parameter
2357 - [OPTIM] introduce global parameter "tune.maxaccept"
2358 - [MEDIUM] introduce "timeout http-request" in frontends
2359 - [MINOR] tarpit timeout is also allowed in backends
2360 - [BUG] increment server connections for each connect()
2361 - [MEDIUM] add a turn-around state of one second after a connection failure
2362 - [BUG] fix typo in redispatched connection
2363 - [DOC] document options nolinger to ssl-hello-chk
2364 - [DOC] added documentation for "option tcplog" to "use_backend"
2365 - [BUG] connect_server: server might not exist when sending error report
2366 - [MEDIUM] support fully transparent proxy on Linux (USE_LINUX_TPROXY)
2367 - [MEDIUM] add non-local bind to connect() on Linux
2368 - [MINOR] add transparent proxy support for balabit's Tproxy v4
2369 - [BUG] use backend's source and not server's source with tproxy
2370 - [BUG] fix overlapping server flags
2371 - [MEDIUM] fix server health checks source address selection
2372 - [BUG] build failed on CONFIG_HAP_LINUX_TPROXY without CONFIG_HAP_CTTPROXY
2373 - [DOC] added "server", "source" and "stats" keywords
2374 - [DOC] all server parameters have been documented
2375 - [DOC] document all req* and rsp* keywords.
2376 - [DOC] added documentation about HTTP header manipulations
2377 - [BUG] log response byte count, not request
2378 - [BUILD] code did not build in full debug mode
2379 - [BUG] fix truncated responses with sepoll
2380 - [MINOR] use s->frt_addr as the server's address in transparent proxy
2381 - [MINOR] fix configuration hint about timeouts
2382 - [DOC] minor cleanup of the doc and notice to contributors
2383 - [MINOR] report correct section type for unknown keywords.
2384 - [BUILD] update MacOS Makefile to build on newer versions
2385 - [DOC] fix erroneous "useallbackups" option in the doc
2386 - [DOC] applied small fixes from early readers
2387 - [MINOR] add configuration support for "redir" server keyword
2388 - [MEDIUM] completely implement the server redirection method
2389 - [TESTS] add a test case for the server redirection mechanism
2390 - [DOC] add a configuration entry for "server ... redir <prefix>"
2391 - [BUILD] backend.c and checks.c did not build without tproxy !
2392 - Revert "[BUILD] backend.c and checks.c did not build without tproxy !"
2393 - [BUILD] backend.c and checks.c did not build without tproxy !
2394 - [OPTIM] used unsigned ints for HTTP state and message offsets
2395 - [OPTIM] GCC4's builtin_expect() is suboptimal
2396 - [BUG] failed conns were sometimes incremented in the frontend!
2397 - [BUG] timeout.check was not pre-set to eternity
2398 - [TESTS] add test-pollers.cfg to easily report pollers in use
2399 - [BUG] do not apply timeout.connect in checks if unset
2400 - [BUILD] ensure that makefile understands USE_DLMALLOC=1
2401 - [MINOR] silent gcc for a wrong warning
2402 - [CLEANUP] update .gitignore to ignore more temporary files
2403 - [CLEANUP] report dlmalloc's source path only if explictly specified
2404 - [BUG] str2sun could leak a small buffer in case of error during parsing
2405 - [BUG] option allbackups was not working anymore in roundrobin mode
2406 - [MAJOR] implementation of the "leastconn" load balancing algorithm
2407 - [BUILD] ensure that users don't build without setting the target anymore.
2408 - [DOC] document the leastconn LB algo
2409 - [MEDIUM] fix stats socket limitation to 16 kB
2410 - [DOC] fix unescaped space in httpchk example.
2411 - [BUG] fix double-decrement of server connections
2412 - [TESTS] add a test case for port mapping
2413 - [TESTS] add a benchmark for integer hashing
2414 - [TESTS] add new methods in ip-hash test file
2415 - [MAJOR] implement parameter hashing for POST requests
2416
Willy Tarreaue5b77e82007-12-06 01:25:44 +010024172007/12/06 : 1.3.14
2418 - New option http_proxy (Alexandre Cassen)
2419 - add support for "maxqueue" to limit server queue overload (Elijah Epifanov)
2420 - Check for duplicated conflicting proxies (Krzysztof Oledzki)
2421 - stats: report server and backend cumulated downtime (Krzysztof Oledzki)
2422 - use backends only with use_backend directive (Krzysztof Oledzki)
2423 - Handle long lines properly (Krzysztof Oledzki)
2424 - Implement and use generic findproxy and relax duplicated proxy check (Krzysztof Oledzki)
2425 - continous statistics (Krzysztof Oledzki)
2426 - add support for logging via a UNIX socket (Robert Tsai)
2427 - fix error checking in strl2ic/strl2uic()
2428 - fix calls to localtime()
2429 - provide easier-to-use ultoa_* functions
2430 - provide easy-to-use limit_r and LIM2A* macros
2431 - add a simple test for the status page
2432 - move error codes to common/errors.h
2433 - silent warning about LIST_* being redefined on OpenBSD
2434 - add socket address length to the protocols
2435 - group PR_O_BALANCE_* bits into a checkable value
2436 - externalize the "balance" option parser to backend.c
2437 - introduce the "url_param" balance method
2438 - make default_backend work in TCP mode too
2439 - disable warning about localtime_r on Solaris
2440 - adjust error messages about conflicting proxies
2441 - avoid calling some layer7 functions if not needed
2442 - simplify error path in event_accept()
2443 - add an options field to the listeners
2444 - added a new state to listeners
2445 - unbind_listener() must use fd_delete() and not close()
2446 - add a generic unbind_listener() primitive
2447 - add a generic delete_listener() primitive
2448 - add a generic unbind_all_listeners() primitive
2449 - create proto_tcp and move initialization of proxy listeners
2450 - stats: report numerical process ID, proxy ID and server ID
2451 - relative_pid was not initialized
2452 - missing header names in raw stats output
2453 - fix missing parenthesis in check_response_for_cacheability
2454 - small optimization on session_process_counters()
2455 - merge ebtree version 3.0
2456 - make ebtree headers multiple-include compatible
2457 - ebtree: include config.h for REGPRM*
2458 - differentiate between generic LB params and map-specific ones
2459 - add a weight divisor to the struct proxy
2460 - implement the Fast Weighted Round Robin (FWRR) algo
2461 - include filltab25.c to experiment on FWRR for dynamic weights
2462 - merge test-fwrr.cfg to validate dynamic weights
2463 - move the load balancing algorithm to be->lbprm.algo
2464 - change server check result to a bit field
2465 - implement "http-check disable-on-404" for graceful shutdown
2466 - secure the calling conditions of ->set_server_status_{up,down}
2467 - report disabled servers as "NOLB" when they are still UP
2468 - document the "http-check disable-on-404" option
2469 - http-check disable-on-404 is not limited to HTTP mode
2470 - add a test file for disable-on-404
2471 - use distinct bits per load-balancing algorithm type
2472 - implement the slowstart parameter for servers
2473 - document the server's slowstart parameter
2474 - stats: report the server warm up status in a "throttle" column
2475 - fix 2 minor issues on AIX
2476 - add the "nbsrv" ACL verb
2477 - add the "fail" condition to monitor requests
2478 - remove a warning from gcc due to htons() in standard.c
2479 - fwrr: ensure that we never overflow in placements
2480 - store the build options to report with -vv
2481 - fix the status return of the init script (R.I. Pienaar)
2482 - stats: real time monitoring script for unix socket (Prizee)
2483 - document "nbsrv" and "monitor fail"
2484 - restrict the set of allowed characters for identifiers
2485 - implement a time parsing function
2486 - add support for time units in the configuration
2487 - add a bit of documentation about timers
2488 - introduce separation between contimeout, and tarpit + queue
2489 - introduce the "timeout" keyword
2490 - grouped all timeouts in one structure
2491 - slowstart is in ms, not seconds
2492 - slowstart: ensure we don't start with a null weight
2493 - report the number of times each server was selected
2494 - fix build on AIX due to recent log changes
2495 - fix build on Solaris due to recent log changes
2496
Willy Tarreaue855f422007-10-18 22:38:22 +020024972007/10/18 : 1.3.13
2498 - replace the code under O'Reilly license (Arnaud Cornet)
2499 - add a small man page (Arnaud Cornet)
2500 - stats: report haproxy's version by default (Krzysztof Oledzki)
2501 - stats: count server retries and redispatches (Krzysztof Oledzki)
2502 - core: added easy support for Doug Lea's malloc (dlmalloc)
2503 - core: fade out memory usage when stopping proxies
2504 - core: moved the sockaddr pointer to the fdtab structure
2505 - core: add generic protocol support
2506 - core: implement client-side support for PF_UNIX sockets
2507 - stats: implement the CSV output
2508 - stats: add a link to the CSV export HTML page
2509 - stats: implement the statistics output on a unix socket
2510 - config: introduce the "stats" keyword in global section
2511 - build: centralize version and date into one file for each
2512 - tests: added a new hash algorithm
2513
25142007/10/18 : 1.3.12.3
2515 - add the "nolinger" option to disable data lingering (Alexandre Cassen)
2516 - fix double-free during clean exit (Krzysztof Oledzki)
2517 - prevent the system from sending an RST when closing health-checks
2518 (Krzysztof Oledzki)
2519 - do not add a cache-control header when on non-cacheable responses
2520 (Krzysztof Oledzki)
2521 - spread health checks even more (Krzysztof Oledzki)
2522 - stats: scope "." must match the backend and not the frontend
2523 - fixed call to chroot() during startup
2524 - fix wrong timeout computation in event_accept()
2525 - remove condition for exit() under fork() failure
2526
25272007/09/20 : 1.3.12.2
2528 - fix configuration sanity checks for TCP listeners
2529 - set the log socket receive window to zero bytes
2530 - pre-initialize timeouts to infinity, not zero
2531 - fix the SIGHUP message not to alert on server-less proxies
2532 - timeouts and retries could be ignored when switching backend
2533 - added a file to check that "retries" works.
2534 - O'Reilly has clarified its license
2535
25362007/09/05 : 1.3.12.1
2537 - spec I/O: fix allocations of spec entries for an FD
2538 - ensure we never overflow in chunk_printf()
2539 - improve behaviour with large number of servers per proxy
2540 - add support for "stats refresh <interval>"
2541 - stats page: added links for 'refresh' and 'hide down'
2542 - fix backend's weight in the stats page.
2543 - the "stats" keyword is not allowed in a pure frontend.
2544 - provide a test configuration file for stats and checks
2545
Willy Tarreaub21152b2007-06-17 23:41:40 +020025462007/06/17 : 1.3.12
2547 - fix segfault at exit when using captures
2548 - bug: negation in ACL conds was not cleared between terms
2549 - errorfile: use a local file to feed error messages
2550 - acl: support '-i' to ignore case when matching
2551 - acl: smarter integer comparison with operators eq,lt,gt,le,ge
2552 - acl: support maching on 'path' component
2553 - acl: implement matching on header values
2554 - acl: distinguish between request and response headers
2555 - acl: permit to return any header when no name specified
2556 - acl: provide default ACLs
2557 - added the 'use_backend' keyword for full content-switching
2558 - acl: specify the direction during fetches
2559 - acl: provide the argument length for fetch functions
2560 - acl: provide a reference to the expr to fetch()
2561 - improve memory freeing upon exit
2562 - str2net() must not change the const char *
2563 - shut warnings 'is*' macros from ctype.h on solaris
2564
Willy Tarreaua3503e02007-06-03 17:27:07 +020025652007/06/03 : 1.3.11.4
2566 - do not re-arm read timeout in SHUTR state !
2567 - optimize I/O by detecting system starvation
2568 - the epoll FD must not be shared between processes
2569 - limit the number of events returned by *poll*
2570
Willy Tarreau3c6fc072007-05-14 14:40:25 +020025712007/05/14 : 1.3.11.3
2572 - pre-initialize timeouts with tv_eternity during parsing
2573
Willy Tarreaufc273c22007-05-14 03:42:47 +020025742007/05/14 : 1.3.11.2
2575 - fixed broken health-checks since switch to timeval
2576
Willy Tarreau3c5340c2007-05-14 03:18:43 +020025772007/05/14 : 1.3.11.1
2578 - fixed ev_kqueue which was forgotten during the switch to timeval
2579 - allowed null timeouts for past events in select
2580
Willy Tarreau544eb402007-05-14 02:42:33 +020025812007/05/14 : 1.3.11
2582 - fixed ev_sepoll again by rewriting the state machine
2583 - switched all timeouts to timevals instead of milliseconds
2584 - improved memory management using mempools v2.
2585 - several minor optimizations
2586
Willy Tarreau9ca931f2007-05-10 07:51:17 +020025872007/05/09 : 1.3.10.2
2588 - fixed build on OpenBSD (missing types.h)
2589
Willy Tarreau13398d32007-05-09 22:58:28 +020025902007/05/09 : 1.3.10.1
2591 - fixed sepoll transition matrix (two states were missing)
2592
Willy Tarreau61beedf2007-05-09 01:44:58 +020025932007/05/08 : 1.3.10
2594 - several fixes in ev_sepoll
2595 - fixed some expiration dates on some tasks
2596 - fixed a bug in connection establishment detection due to speculative I/O
2597 - fixed rare bug occuring on TCP with early close (reported by Andy Smith)
2598 - implemented URI hashing algorithm (Guillaume Dallaire)
2599 - implemented SMTP health checks (Peter van Dijk)
2600 - replaced the rbtree with ul2tree from old scheduler project
2601 - new framework for generic ACL support
2602 - added the 'acl' and 'block' keywords to the config language
2603 - added several ACL criteria and matches (IP, port, URI, ...)
2604 - cleaned up and better modularization for some time functions
2605 - fixed list macros
2606 - fixed useless memory allocation in str2net()
2607 - store the original destination address in the session
2608
Willy Tarreau6e0433f2007-04-16 01:18:12 +020026092007/04/15 : 1.3.9
2610 - modularized the polling mechanisms and use function pointers instead
2611 of macros at many places
2612 - implemented support for FreeBSD's kqueue() polling mechanism
2613 - fixed a warning on OpenBSD : MIN/MAX redefined
2614 - change socket registration order at startup to accomodate kqueue.
2615 - several makefile cleanups to support old shells
2616 - fix build with limits.h once for all
2617 - ev_epoll: do not rely on fd_sets anymore, use changes stacks instead.
2618 - fdtab now holds the results of polling
2619 - implemented support for speculative I/O processing with epoll()
2620 - remove useless calls to shutdown(SHUT_RD), resulting in small speed boost
2621 - auto-registering of pollers at load time
2622
Willy Tarreau42c76592007-04-03 20:30:13 +020026232007/04/03 : 1.3.8.2
2624 - rewriting either the status line or request line could crash the
2625 process due to a pointer which ought to be reset before parsing.
2626 - rewriting the status line in the response did not work, it caused
2627 a 502 Bad Gateway due to an erroneous state during parsing
2628
Willy Tarreauef6d7612007-04-01 11:06:22 +020026292007/04/01 : 1.3.8.1
2630 - fix reqadd when no option httpclose is used.
2631 - removed now unused fiprm and beprm from proxies
2632 - split logs into two versions : TCP and HTTP
2633 - added some docs about http headers storage and acls
2634 - added a VIM script for syntax color highlighting (Bruno Michel)
2635
Willy Tarreaud661cc02007-03-26 00:24:56 +020026362007/03/25 : 1.3.8
2637 - fixed several bugs which might have caused a crash with bad configs
2638 - several optimizations in header processing
2639 - many progresses towards transaction-based processing
2640 - option forwardfor may be used in frontends
2641 - completed HTTP response processing
2642 - some code refactoring between request and response processing
2643 - new HTTP header manipulation functions
2644 - optimizations on the recv() patch to reduce CPU usage under very
2645 high data rates.
2646 - more user-friendly help about the 'usesrc' keyword (CTTPROXY)
2647 - username/groupname support from Marcus Rueckert
2648 - added the "except" keyword to the "forwardfor" option (Bryan German)
2649 - support for health-checks on other addresses (Fabrice Dulaunoy)
2650 - makefile for MacOS 10.4 / Darwin (Dan Zinngrabe)
2651 - do not insert "Connection: close" in HTTP/1.0 messages
2652
Willy Tarreau9cabf702007-01-26 23:49:01 +010026532007/01/26 : 1.3.7
2654 - fix critical bug introduced with 1.3.6 : an empty request header
2655 may lead to a crash due to missing pointer assignment
2656 - hdr_idx might be left uninitialized in debug mode
2657 - fixed build on FreeBSD due to missing fd_set declaration
2658
Willy Tarreaue7a24382007-01-22 08:57:44 +010026592007/01/22 : 1.3.6.1
2660 - change in the header chaining broke cookies and authentication
2661
Willy Tarreau49e1ee82007-01-22 00:56:46 +010026622007/01/22 : 1.3.6
2663 - stats now support the HEAD method too
2664 - extracted http request from the session
2665 - huge rework of the HTTP parser which is now a 28-state FSM.
2666 - linux-style likely/unlikely macros for optimization hints
2667 - do not create a server socket when there's no server
2668 - imported lots of docs
2669
Willy Tarreau5871f8e2007-01-07 02:47:01 +010026702007/01/07 : 1.3.5
2671 - stats: swap color sets for active and backup servers
2672 - try to guess server check port when unset
2673 - added complete support and doc for TCP Splicing
2674 - replace the wait-queue linked list with an rbtree.
2675 - a few bugfixes and cleanups
2676
Willy Tarreau85270da2007-01-02 00:59:39 +010026772007/01/02 : 1.3.4
2678 - support for cttproxy on the server side to present the client
2679 address to the server.
2680 - added support for SO_REUSEPORT on Linux (needs kernel patch)
2681 - new RFC2616-compliant HTTP request parser with header indexing
2682 - split proxies in frontends, rulesets and backends
2683 - implemented the 'req[i]setbe' to select a backend depending
2684 on the contents
2685 - added the 'default_backend' keyword to select a default BE.
2686 - new stats page featuring FEs and BEs + bytes in both dirs
2687 - improved log format to indicate the backend and the time in ms.
2688 - lots of cleanups
2689
Willy Tarreau9c9fea42006-10-16 00:03:35 +020026902006/10/15 : 1.3.3
2691 - fix broken redispatch option in case the connection has already
2692 been marked "in progress" (ie: nearly always).
2693 - support regparm on x86 to speed up some often called functions
2694 - removed a few useless calls to gettimeofday() in log functions.
2695 - lots of 'const char*' cleanups
2696 - turn every FD_* into functions which are faster on recent CPUs
2697
Willy Tarreau690f9aa2006-09-03 11:23:06 +020026982006/09/03 : 1.3.2
2699 - started the changes towards I/O completion callbacks. stream_sock* have
2700 replaced event_*.
2701 - added the new "reqtarpit" and "reqitarpit" protection features
2702
Willy Tarreau8f2b8552006-07-09 17:11:39 +020027032006/07/09 : 1.3.1 (1.2.15)
2704 - now, haproxy warns about missing timeout during startup to try to
2705 eliminate all those buggy configurations.
2706 - added "Content-Type: text/html" in responses wherever appropriate, as
2707 suggested by Cameron Simpson.
2708 - implemented "option ssl-hello-chk" to use SSLv3 CLIENT HELLO messages to
2709 test server's health
2710 - implemented "monitor-uri" so that haproxy can reply to a specific URI with
2711 an "HTTP/1.0 200 OK" response. This is useful to validate multiple proxies
2712 at once.
2713
Willy Tarreaub9e98b62006-07-03 10:32:46 +020027142006/06/29 : 1.3.0
2715 - exploded the whole file into multiple .c and .h. No functionnal
Willy Tarreau8f2b8552006-07-09 17:11:39 +02002716 difference is expected at all.
2717 - fixed a bug by which neither stats nor error messages could be returned if
2718 'clitimeout' was missing.
Willy Tarreaub9e98b62006-07-03 10:32:46 +02002719
willy tarreau7e6328d2006-05-21 23:26:20 +020027202006/05/21 : 1.2.14
2721 - new HTML status report with the 'stats' keyword.
2722 - added the 'abortonclose' option to better resist traffic surges
2723 - implemented dynamic traffic regulation with the 'minconn' option
2724 - show request time on denied requests
2725 - definitely fixed hot reconf on OpenBSD by the use of SO_REUSEPORT
2726 - now a proxy instance is allowed to run without servers, which is
2727 useful to dedicate one instance to stats
2728 - added lots of error counters
2729 - a missing parenthesis preventd matching of cacheable cookies
2730 - a missing parenthesis in poll_loop() might have caused missed events.
2731
Willy TARREAU4404b7e2006-05-14 10:00:09 +020027322006/05/14 : 1.2.13.1
2733 - an uninitialized field in the struct session could cause a crash when
2734 the session was freed. This has been encountered on Solaris only.
2735 - Solaris and OpenBSD no not support shutdown() on listening socket. Let's
2736 be nice to them by performing a soft stop if pause fails.
2737
willy tarreauc3a2e072006-05-13 18:51:38 +020027382006/05/13 : 1.2.13
2739 - 'maxconn' server parameter to do per-server session limitation
2740 - queueing to support non-blocking session limitation
2741 - fixed removal of cookies for cookie-less servers such as backup servers
2742 - two separate wait queues for expirable and non-expirable tasks provide
2743 better performance with lots of sessions.
2744 - some code cleanups and performance improvements
2745 - made state dumps a bit more verbose
2746 - fixed missing checks for NULL srv in dispatch mode
2747 - load balancing on backup servers was not possible in source hash mode.
2748 - two session flags shared the same bit, but fortunately they were not
2749 compatible.
2750
willy tarreauc0d4bbd2006-04-15 21:47:50 +020027512006/04/15 : 1.2.12
2752 Very few changes preparing for more important changes to support per-server
2753 session limitations and queueing :
2754 - ignore leading empty lines in HTTP requests as suggested by RFC2616.
2755 - added the 'weight' parameter to the servers, limited to 1..256. It applies
2756 to roundrobin and source hash.
2757 - the optional '-s' option could clobber '-st' and '-sf' if compiled in.
2758
willy tarreaue0dd2692006-03-30 16:27:34 +020027592006/03/30 : 1.2.11.1
2760 - under some conditions, it might have been possible that when the
2761 last dead server became available, it would not have been used
2762 till another one would have changed state. Could not be reproduced
2763 at all, however seems possible from the code.
2764
willy tarreaud2058dc2006-03-25 20:35:41 +010027652006/03/25 : 1.2.11
2766 - added the '-db' command-line option to disable backgrounding.
2767 - added the -sf/-st command-line arguments which are used to specify
2768 a list of pids to send a FINISH or TERMINATE signal upon startup.
2769 They will also be asked to release their port if a bind fails.
2770 - reworked the startup mechanism to allow the sending of a signal to a list
2771 of old pids if a socket cannot be bound, with a retry for a limited amount
2772 of time (1 second by default).
2773 - added the ability to enforce limits on memory usage.
2774 - added the 'source' load-balancing algorithm which uses the source IP(v4|v6)
2775 - re-architectured the server round-robin mechanism to ease integration of
2776 other algorithms. It now relies on the number of active and backup servers.
2777 - added a counter for the number of active and backup servers, and report
2778 these numbers upon SIGHUP or state change.
2779
willy tarreaubfad5742006-03-23 14:19:11 +010027802006/03/23 : 1.2.10.1
2781 - while fixing the backup server round-robin "feature", a new bug was
2782 introduced which could miss some backup servers.
2783 - the displayed proxy name was wrong when dumping upon SIGHUP.
2784
willy tarreauaaff30e2006-03-19 21:30:41 +010027852006/03/19 : 1.2.10
2786 - assert.h is needed when DEBUG is defined.
2787 - ENORMOUS long standing bug affecting the epoll polling system :
2788 event_data is a union, not a structure !
2789 - Make fd management more robust and easier to debug. Also some
2790 micro-optimisations.
2791 - Limit the number of consecutive accept() in multi-process mode.
2792 This produces a more evenly distributed load across the processes and
2793 slightly improves performance by reducing bottlenecks.
2794 - Make health-checks be more regular, and faster to retry after a timeout.
2795 - Fixed some messages to ease parsing of alerts.
2796 - provided a patch to enable epoll on RHEL3 kernels.
2797 - Separated OpenBSD build from the main Makefile into a new one.
2798
willy tarreau50be0172006-03-15 19:41:19 +010027992006/03/15 : 1.2.9
2800 - haproxy could not be stopped after being paused, it had to be woken up
2801 first. This has been fixed.
2802 - the 'ulimit-n' parameter is now optional and by default computed from
2803 maxconn + the number of listeners + the number of health-checks.
2804 - it is now possible to specify a maximum number of connections at build
2805 time with the SYSTEM_MAXCONN define. The value set in the configuration
2806 file will then be limited to this value, and only the command-line '-n'
2807 option will be able to bypass it. It will prevent against accidental
2808 high memory usage on small systems.
2809 - RFC2616 expects that any HTTP agent accepts multi-line headers. Earlier
2810 versions did not detect a line beginning with a space as the continuation
2811 of previous header. It is now correct.
2812 - health checks sent to servers configured with identical intervals were
2813 sent in perfect synchronisation because the initial time was the same
2814 for all. This could induce high load peaks when fragile servers were
2815 hosting tens of instances for the same application. Now the load is
2816 spread evenly across the smallest interval amongst a listener.
2817 - a new 'forceclose' option was added to make the proxy close the outgoing
2818 channel to the server once it has sent all its headers and the server
2819 starts responding. This helps some servers which don't close upon the
2820 'Connection: close' header. It implies 'option httpclose'.
2821 - there was a bug in the way the backup servers were handled. They were
2822 erroneously load-balanced while the doc said the opposite. Since
2823 load-balanced backup servers is one of the features some people have
2824 been asking for, the problem was fixed to reflect the documented
2825 behaviour and a new option 'allbackups' was introduced to provide the
2826 feature to those who need it.
2827 - a never ending connect() could lead to a fast select() loop if its
2828 timeout times the number of retransmits exceeded the server read or write
2829 timeout, because the later was used to compute select()'s timeout while
2830 the connection timeout was not reached.
2831 - now we initialize the libc's localtime structures very early so that even
2832 under OOM conditions, we can still send dated error messages without
2833 segfaulting.
2834 - the 'daemon' mode implies 'quiet' and disables 'verbose' because file
2835 descriptors are closed.
2836
willy tarreau065f1c02006-01-29 22:10:07 +010028372006/01/29 : 1.2.8
2838 - fixed a nasty bug affecting poll/epoll which could return unmodified data
2839 from the server to the client, and sometimes lead to memory corruption
2840 crashing the process.
2841 - added the new pause/play mechanism with SIGTTOU/SIGTTIN for hot-reconf.
2842
28432005/12/18 : 1.2.7.1
2844 - the "retries" option was ignored because connect() could not return an
2845 error if the connection failed before the timeout.
2846 - TCP health-checks could not detect a connection refused in poll/epoll
2847 mode.
2848
willy tarreaua56eca72005-12-18 01:34:42 +010028492005/11/13 : 1.2.7
willy tarreau77bc8542005-12-18 01:31:43 +01002850 - building with -DUSE_PCRE should include PCRE headers and not regex.h. At
2851 least on Solaris, this caused the libc's regex primitives to be used instead
2852 of PCRE, which caused trouble on group references. This is now fixed.
willy tarreaud0fb4652005-12-18 01:32:04 +01002853 - delayed the quiet mode during startup so that most of the startup alerts can
2854 be displayed even in quiet mode.
2855 - display an alert when a listener has no address, invalid or no port, or when
2856 there are no enabled listeners upon startup.
willy tarreau4373b962005-12-18 01:32:31 +01002857 - added "static-pcre" to the list of supported regex options in the Makefile.
willy tarreau77bc8542005-12-18 01:31:43 +01002858
willy tarreaub952e1d2005-12-18 01:31:20 +010028592005/10/09 : 1.2.7rc (1.1.33rc)
2860 - second batch of socklen_t changes.
2861 - clean-ups from Cameron Simpson.
2862 - because tv_remain() does not know about eternity, using no timeout can
2863 make select() spin around a null time-out. Bug reported by Cameron Simpson.
2864 - client read timeout was not properly set to eternity initialized after an
2865 accept() if it was not set in the config. It remained undetected so long
2866 because eternity is 0 and newly allocated pages are zeroed by the system.
2867 - do not call get_original_dst() when not in transparent mode.
2868 - implemented a workaround for a bug in certain epoll() implementations on
2869 linux-2.4 kernels (epoll-lt <= 0.21).
2870 - implemented TCP keepalive with new options : tcpka, clitcpka, srvtcpka.
2871
willy tarreauc5f73ed2005-12-18 01:26:38 +010028722005/08/07 : 1.2.6
2873 - clean-up patch from Alexander Lazic fixes build on Debian 3.1 (socklen_t).
2874
28752005/07/06 : 1.2.6-pre5 (1.1.32)
willy tarreau0fe39652005-12-18 01:25:24 +01002876 - added the number of active sessions (proxy/process) in the logs
2877
28782005/07/06 : 1.2.6-pre4 (1.1.32-pre4)
willy tarreaub1285d52005-12-18 01:20:14 +01002879 - the time-out fix introduced in 1.1.25 caused a corner case where it was
2880 possible for a client to keep a connection maintained regardless of the
2881 timeout if the server closed the connection during the HEADER phase,
2882 while the client ignored the close request while doing nothing in the
2883 other direction. This has been fixed now by ensuring that read timeouts
2884 are re-armed when switching to any SHUTW state.
2885
28862005/07/05 : 1.2.6-pre3 (1.1.32-pre3)
2887 - enhanced error reporting in the logs. Now the proxy will precisely detect
2888 various error conditions related to the system and/or process limits, and
2889 generate LOG_EMERG logs indicating that a resource has been exhausted.
2890 - logs will contain two new characters for the error cause : 'R' indicates
2891 a resource exhausted, and 'I' indicates an internal error, though this
2892 one should never happen.
2893 - server connection timeouts can now be reported in the logs (sC), as well
2894 as connections refused because of maxconn limitations (PC).
2895
28962005/07/05 : 1.2.6-pre2 (1.1.32-pre2)
2897 - new global configuration keyword "ulimit-n" may be used to raise the FD
2898 limit to usable values.
2899 - a warning is now displayed on startup if the FD limit is lower than the
2900 configured maximum number of sockets.
2901
29022005/07/05 : 1.2.6-pre1 (1.1.32-pre1)
2903 - new configuration keyword "monitor-net" makes it possible to be monitored
2904 by external devices which connect to the proxy without being logged nor
2905 forwarded to any server. Particularly useful on generic TCPv4 relays.
2906
willy tarreau5dffb602005-12-18 01:15:23 +010029072005/06/21 : 1.2.5.2
2908 - fixed build on PPC where chars are unsigned by default
2909
willy tarreau08dedbe2005-12-18 01:13:48 +010029102005/05/02 : 1.2.5.1
2911 - dirty hack to fix a bug introduced with epoll : if we close an FD and
2912 immediately reassign it to another session through a connect(), the
2913 Prev{Read,Write}Events are not updated, which causes trouble detecting
2914 changes, thus leading to many timeouts at high loads.
2915
willy tarreau64a3cc32005-12-18 01:13:11 +010029162005/04/30 : 1.2.5 (1.1.31)
2917 - changed the runtime argument to disable epoll() to '-de'
2918 - changed the runtime argument to disable poll() to '-dp'
2919 - added global options 'nopoll' and 'noepoll' to do the same at the
2920 configuration level.
2921 - added a 'linux24e' target to the Makefile for Linux 2.4 systems patched to
2922 support epoll().
2923 - changed default FD_SETSIZE to 65536 on Solaris (default=1024)
2924 - conditionned signals redirection to #ifdef DEBUG_MEMORY
2925
willy tarreau1c2ad212005-12-18 01:11:29 +010029262005/04/26 : 1.2.5-pre4
2927 - made epoll() support a compile-time option : ENABLE_EPOLL
2928 - provided a very little libc replacement for a possibly missing epoll()
2929 implementation which can be enabled by -DUSE_MY_EPOLL
2930 - implemented the poll() poller, which can be enabled with -DENABLE_POLL.
2931 The equivalent runtime argument becomes '-P'. A few tests show that it
2932 performs like select() with many fds, but slightly slower (certainly
2933 because of the higher amount of memory involved).
2934 - separated the 3 polling methods and the tasks scheduler into 4 distinct
2935 functions which makes the code a lot more modular.
2936 - moved some event tables to private static declarations inside the poller
2937 functions.
2938 - the poller functions can now initialize themselves, run, and cleanup.
2939 - changed the runtime argument to enable epoll() to '-E'.
2940 - removed buggy epoll_ctl() code in the client_retnclose() function. This
2941 function was never meant to remove anything.
2942 - fixed a typo which caused glibc to yell about a double free on exit.
2943 - removed error checking after epoll_ctl(DEL) because we can never know if
2944 the fd is still active or already closed.
2945 - added a few entries in the makefile
2946
willy tarreauad90a0c2005-12-18 01:09:15 +010029472005/04/25 : 1.2.5-pre3
2948 - experimental epoll() support (use temporary '-e' argument)
2949
29502005/04/24 : 1.2.5-pre2
willy tarreauc1f47532005-12-18 01:08:26 +01002951 - implemented the HTTP 303 code for error redirection. This forces the
2952 browser to fetch the given URI with a GET request. The new keyword for
2953 this is 'errorloc303', and a new 'errorloc302' keyword has been created
2954 to make them easily distinguishable.
2955 - added more controls in the parser for valid use of '\x' sequence.
2956 - few fixes from Alex & Klaus
2957
willy tarreauad90a0c2005-12-18 01:09:15 +010029582005/02/17 : 1.2.5-pre1
willy tarreauc1f47532005-12-18 01:08:26 +01002959 - fixed a few errors in the documentation
2960
29612005/02/13
2962 - do not pre-initialize unused file-descriptors before select() anymore.
2963
willy tarreau12350152005-12-18 01:03:27 +010029642005/01/22 : 1.2.4
2965 - merged Alexander Lazic's and Klaus Wagner's work on application
2966 cookie-based persistence. Since this is the first merge, this version is
2967 not intended for general use and reports are more than welcome. Some
2968 documentation is really needed though.
2969
willy tarreau0174f312005-12-18 01:02:42 +010029702005/01/22 : 1.2.3 (1.1.30)
2971 - add an architecture guide to the documentation
2972 - released without any changes
2973
29742004/12/26 : 1.2.3-pre1 (1.1.30-pre1)
2975 - increased default BUFSIZE to 16 kB to accept max headers of 8 kB which is
2976 compatible with Apache. This limit can be configured in the makefile now.
2977 Thanks to Eric Fehr for the checks.
2978 - added a per-server "source" option which now makes it possible to bind to
2979 a different source for each (potentially identical) server.
2980 - changed cookie-based server selection slightly to allow several servers to
2981 share a same cookie, thus making it possible to associate backup servers to
2982 live servers and ease soft-stop for maintenance periods. (Alexander Lazic)
2983 - added the cookie 'prefix' mode which makes it possible to use persistence
2984 with thin clients which support only one cookie. The server name is prefixed
2985 before the application cookie, and restore back.
2986 - fixed the order of servers within an instance to match documentation. Now
2987 the servers are *really* used in the order of their declaration. This is
2988 particularly important when multiple backup servers are in use.
2989
willy tarreau4302f492005-12-18 01:00:37 +010029902004/10/18 : 1.2.2 (1.1.29)
2991 - fixed a bug where a TCP connection would be logged twice if the 'logasap'
2992 option was enabled without the 'tcplog' option.
2993 - encode_string() would use hdr_encode_map instead of the map argument.
2994
29952004/08/10 : (1.1.29-pre2)
2996 - the logged request is now encoded with '#XX' for unprintable characters
2997 - new keywords 'capture request header' and 'capture response header' enable
2998 logging of arbitrary HTTP headers in requests and responses
2999 - removed "-DSOLARIS" after replacing the last inet_aton() with inet_pton()
3000
willy tarreau982249e2005-12-18 00:57:06 +010030012004/06/06 : 1.2.1 (1.1.28)
3002 - added the '-V' command line option to verbosely report errors even though
3003 the -q or 'quiet' options are specified. This is useful with '-c'.
3004 - added a Red Hat init script and a .spec from Simon Matter <simon.matter@invoca.ch>
willy tarreau036e1ce2005-12-17 13:46:33 +01003005
willy tarreau982249e2005-12-18 00:57:06 +010030062004/06/05 :
3007 - added the "logasap" option which produces a log without waiting for the data
3008 to be transferred from the server to the client.
3009 - added the "httpclose" option which removes any "connection:" header and adds
3010 "Connection: close" in both direction.
willy tarreau97f58572005-12-18 00:53:44 +01003011 - added the 'checkcache' option which blocks cacheable responses containing
3012 dangerous headers, such as 'set-cookie'.
willy tarreau982249e2005-12-18 00:57:06 +01003013 - added 'rspdeny' and 'rspideny' to block certain responses to avoid sensible
3014 information leak from servers.
willy tarreau25c4ea52005-12-18 00:49:49 +01003015
30162004/04/18 :
willy tarreaudd07e972005-12-18 00:48:48 +01003017 - send an EMERG log when no server is available for a given proxy
3018 - added the '-c' command line option to syntactically check the
3019 configuration file without starting the service.
3020
willy tarreau8a86dbf2005-12-18 00:45:59 +010030212003/11/09 : 1.2.0
3022 - the same as 1.1.27 + IPv6 support on the client side
3023
willy tarreaufe2c5c12005-12-17 14:14:34 +010030242003/10/27 : 1.1.27
3025 - the configurable HTTP health check introduced in 1.1.23 revealed a shameful
3026 bug : the code still assumed that HTTP requests were the same size as the
3027 original ones (22 bytes), and failed if they were not.
3028 - added support for pidfiles.
3029
willy tarreauc58fc692005-12-17 14:13:08 +010030302003/10/22 : 1.1.26
3031 - the fix introduced in 1.1.25 for client timeouts while waiting for servers
3032 broke almost all compatibility with POST requests, because the proxy
3033 stopped to read anything from the client as soon as it got all of its
3034 headers.
3035
willy tarreauc1cae632005-12-17 14:12:23 +010030362003/10/15 : 1.1.25
3037 - added the 'tcplog' option, which provides enhanced, HTTP-like logs for
3038 generic TCP proxies, or lighter logs for HTTP proxies.
3039 - fixed a time-out condition wrongly reported as client time-out in data
3040 phase if the client timeout was lower than the connect timeout times the
3041 number of retries.
3042
willy tarreau197e8ec2005-12-17 14:10:59 +010030432003/09/21 : 1.1.24
3044 - if a client sent a full request then shut its write connection down, then
3045 the request was aborted. This case was detected only when using haproxy
3046 both as health-check client and as a server.
3047 - if 'option httpchk' is used in a 'health' mode server, then responses will
3048 change from 'OK' to 'HTTP/1.0 200 OK'.
3049 - fixed a Linux-only bug in case of HTTP server health-checks, where a single
3050 server response followed by a close could be ignored, and the server seen
3051 as failed.
3052
willy tarreaueedaa9f2005-12-17 14:08:03 +010030532003/09/19 : 1.1.23
3054 - fixed a stupid bug introduced in 1.1.22 which caused second and subsequent
3055 'default' sections to keep previous parameters, and not initialize logs
3056 correctly.
3057 - fixed a second stupid bug introduced in 1.1.22 which caused configurations
3058 relying on 'dispatch' mode to segfault at the first connection.
3059 - 'option httpchk' now supports method, HTTP version and a few headers.
3060 - now, 'option httpchk', 'cookie' and 'capture' can be specified in
3061 'defaults' section
3062
30632003/09/10 : 1.1.22
willy tarreaua41a8b42005-12-17 14:02:24 +01003064 - 'listen' now supports optionnal address:port-range lists
3065 - 'bind' introduced to add new listen addresses
3066 - fixed a bug which caused a session to be kept established on a server till
3067 it timed out if the client closed during the DATA phase.
3068 - the port part of each server address can now be empty to make the proxy
3069 connect to the server on the same port it was connected to, be an absolute
3070 unsigned number to reflect a single port (as in older versions), or an
3071 explicitly signed number (+N/-N) to indicate that this offset must be
3072 applied to the port the proxy was connected to, when connecting to the
3073 server.
3074 - the 'port' server option allows the user to specify a different
3075 health-check port than the service one. It is mandatory when only relative
3076 ports have been specified and check is required. By default, the checks are
3077 sent to the service port.
3078 - new 'defaults' section which is rather similar to 'listen' except that all
3079 values are only used as default values for future 'listen' sections, until
3080 a new 'defaults' resets them. At the moment, server options, regexes,
3081 cookie names and captures cannot be set in the 'defaults' section.
3082
willy tarreau2f6ba652005-12-17 13:57:42 +010030832003/05/06 : 1.1.21
3084 - changed the debug output format so that it now includes the session unique
3085 ID followed by the instance name at the beginning of each line.
3086 - in debug mode, accept now shows the client's IP and port.
3087 - added one 3 small debugging scripts to search and pretty print debug output
3088 - changed the default health check request to "OPTIONS /" instead of
3089 "OPTIONS *" since not all servers implement the later one.
3090 - "option httpchk" now accepts an optional parameter allowing the user to
3091 specify and URI other than '/' during health-checks.
3092
willy tarreaub1ff9db2005-12-17 13:51:03 +010030932003/04/21 : 1.1.20
3094 - fixed two problems with time-outs, one where a server would be logged as
3095 timed out during transfer that take longer to complete than the fixed
3096 time-out, and one where clients were logged as timed-out during the data
3097 phase because they didn't have anything to send. This sometimes caused
3098 slow client connections to close too early while in fact there was no
3099 problem. The proper fix would be to have a per-fd time-out with
3100 conditions depending on the state of the HTTP FSM.
3101
willy tarreau906b2682005-12-17 13:49:52 +010031022003/04/16 : 1.1.19
3103 - haproxy was NOT RFC compliant because it was case-sensitive on HTTP
3104 "Cookie:" and "Set-Cookie:" headers. This caused JVM 1.4 to fail on
3105 cookie persistence because it uses "cookie:". Two memcmp() have been
3106 replaced with strncasecmp().
3107
willy tarreau036e1ce2005-12-17 13:46:33 +010031082003/04/02 : 1.1.18
3109 - Haproxy can be compiled with PCRE regex instead of libc regex, by setting
3110 REGEX=pcre on the make command line.
3111 - HTTP health-checks now use "OPTIONS *" instead of "OPTIONS /".
3112 - when explicit source address binding is required, it is now also used for
3113 health-checks.
3114 - added 'reqpass' and 'reqipass' to allow certain headers but not the request
3115 itself.
3116 - factored several strings to reduce binary size by about 2 kB.
3117 - replaced setreuid() and setregid() with more standard setuid() and setgid().
3118 - added 4 status flags to the log line indicating who ended the connection
3119 first, the sessions state, the validity of the cookie, and action taken on
3120 the set-cookie header.
3121
31222002/10/18 : 1.1.17
3123 - add the notion of "backup" servers, which are used only when all other
3124 servers are down.
3125 - make Set-Cookie return "" instead of "(null)" when the server has no
3126 cookie assigned (useful for backup servers).
3127 - "log" now supports an optionnal level name (info, notice, err ...) above
3128 which nothing is sent.
3129 - replaced some strncmp() with memcmp() for better efficiency.
3130 - added "capture cookie" option which logs client and/or server cookies
3131 - cleaned up/down messages and dump servers states upon SIGHUP
3132 - added a redirection feature for errors : "errorloc <errnum> <url>"
3133 - now we won't insist on connecting to a dead server, even with a cookie,
3134 unless option "persist" is specified.
3135 - added HTTP/408 response for client request time-out and HTTP/50[234] for
3136 server reply time-out or errors.
3137
31382002/09/01 : 1.1.16
3139 - implement HTTP health checks when option "httpchk" is specified.
3140
31412002/08/07 : 1.1.15
3142 - replaced setpgid()/setpgrp() with setsid() for better portability, because
3143 setpgrp() doesn't have the same meaning under Solaris, Linux, and OpenBSD.
3144
31452002/07/20 : 1.1.14
3146 - added "postonly" cookie mode
3147
31482002/07/15 : 1.1.13
3149 - tv_diff used inverted parameters which led to negative times !
3150
31512002/07/13 : 1.1.12
3152 - fixed stats monitoring, and optimized some tv_* for most common cases.
3153 - replaced temporary 'newhdr' with 'trash' to reduce stack size
3154 - made HTTP errors more HTML-fiendly.
3155 - renamed strlcpy() to strlcpy2() because of a slightly difference between
3156 their behaviour (return value), to avoid confusion.
3157 - restricted HTTP messages to HTTP proxies only
3158 - added a 502 message when the connection has been refused by the server,
3159 to prevent clients from believing this is a zero-byte HTTP 0.9 reply.
3160 - changed 'Cache-control:' from 'no-cache="set-cookie"' to 'private' when
3161 inserting a cookie, because some caches (apache) don't understand it.
3162 - fixed processing of server headers when client is in SHUTR state
3163
31642002/07/04 :
3165 - automatically close fd's 0,1 and 2 when going daemon ; setpgrp() after
3166 setpgid()
3167
31682002/06/04 : 1.1.11
3169 - fixed multi-cookie handling in client request to allow clean deletion
3170 in insert+indirect mode. Now, only the server cookie is deleted and not
willy tarreau906b2682005-12-17 13:49:52 +01003171 all the header. Should now be compliant to RFC2965.
willy tarreau036e1ce2005-12-17 13:46:33 +01003172 - added a "nocache" option to "cookie" to specify that we explicitly want
3173 to add a "cache-control" header when we add a cookie.
3174 It is also possible to add an "Expires: <old-date>" to keep compatibility
3175 with old/broken caches.
3176
31772002/05/10 : 1.1.10
3178 - if a cookie is used in insert+indirect mode, it's desirable that the
3179 the servers don't see it. It was not possible to remove it correctly
3180 with regexps, so now it's removed automatically.
3181
31822002/04/19 : 1.1.9
3183 - don't use snprintf()'s return value as an end of message since it may
3184 be larger. This caused bus errors and segfaults in internal libc's
3185 getenv() during localtime() in send_log().
3186 - removed dead insecure send_syslog() function and all references to it.
3187 - fixed warnings on Solaris due to buggy implementation of isXXXX().
3188
31892002/04/18 : 1.1.8
3190 - option "dontlognull"
3191 - fixed "double space" bug in config parser
3192 - fixed an uninitialized server field in case of dispatch
3193 with no existing server which could cause a segfault during
3194 logging.
3195 - the pid logged was always the father's, which was wrong for daemons.
3196 - fixed wrong level "LOG_INFO" for message "proxy started".
3197
31982002/04/13 :
3199 - http logging is now complete :
3200 - ip:port, date, proxy, server
3201 - req_time, conn_time, hdr_time, tot_time
3202 - status, size, request
3203 - source address
3204
32052002/04/12 : 1.1.7
3206 - added option forwardfor
3207 - added reqirep, reqidel, reqiallow, reqideny, rspirep, rspidel
3208 - added "log global" in "listen" section.
3209
32102002/04/09 :
3211 - added a new "global" section :
3212 - logs
3213 - debug, quiet, daemon modes
3214 - uid, gid, chroot, nbproc, maxconn
3215
32162002/04/08 : 1.1.6
3217 - regex are now chained and not limited anymore.
3218 - unavailable server now returns HTTP/502.
3219 - increased per-line args limit to 40
3220 - added reqallow/reqdeny to block some request on matches
3221 - added HTTP 400/403 responses
3222
32232002/04/03 : 1.1.5
3224 - connection logging displayed incorrect source address.
3225 - added proxy start/stop and server up/down log events.
3226 - replaced log message short buffers with larger trash.
3227 - enlarged buffer to 8 kB and replace buffer to 4 kB.
3228
32292002/03/25 : 1.1.4
3230 - made rise/fall/interval time configurable
3231
32322002/03/22 : 1.1.3
3233 - fixed a bug : cr_expire and cw_expire were inverted in CL_STSHUT[WR]
3234 which could lead to loops.
3235
32362002/03/21 : 1.1.2
3237 - fixed a bug in buffer management where we could have a loop
3238 between event_read() and process_{cli|srv} if R==BUFSIZE-MAXREWRITE.
3239 => implemented an adjustable buffer limit.
3240 - fixed a bug : expiration of tasks in wait queue timeout is used again,
3241 and running tasks are skipped.
3242 - added some debug lines for accept events.
3243 - send warnings for servers up/down.
3244
32452002/03/12 : 1.1.1
3246 - fixed a bug in total failure handling
3247 - fixed a bug in timestamp comparison within same second (tv_cmp_ms)
3248
32492002/03/10 : 1.1.0
3250 - fixed a few timeout bugs
3251 - rearranged the task scheduler subsystem to improve performance,
3252 add new tasks, and make it easier to later port to librt ;
3253 - allow multiple accept() for one select() wake up ;
3254 - implemented internal load balancing with basic health-check ;
3255 - cookie insertion and header add/replace/delete, with better strings
3256 support.
3257
32582002/03/08
3259 - reworked buffer handling to fix a few rewrite bugs, and
3260 improve overall performance.
3261 - implement the "purge" option to delete server cookies in direct mode.
3262
32632002/03/07
3264 - fixed some error cases where the maxfd was not decreased.
3265
32662002/02/26
3267 - now supports transparent proxying, at least on linux 2.4.
3268
32692002/02/12
3270 - soft stop works again (fixed select timeout computation).
3271 - it seems that TCP proxies sometimes cannot timeout.
3272 - added a "quiet" mode.
3273 - enforce file descriptor limitation on socket() and accept().
3274
32752001/12/30 : release of version 1.0.2 : fixed a bug in header processing
32762001/12/19 : release of version 1.0.1 : no MSG_NOSIGNAL on solaris
32772001/12/16 : release of version 1.0.0.
32782001/12/16 : added syslog capability for each accepted connection.
32792001/11/19 : corrected premature end of files and occasional SIGPIPE.
32802001/10/31 : added health-check type servers (mode health) which replies OK then closes.
32812001/10/30 : added the ability to support standard TCP proxies and HTTP proxies
3282 with or without cookies (use keyword http for this).
32832001/09/01 : added client/server header replacing with regexps.
3284 eg:
3285 cliexp ^(Host:\ [^:]*).* Host:\ \1:80
3286 srvexp ^Server:\ .* Server:\ Apache
32872000/11/29 : first fully working release with complete FSMs and timeouts.
32882000/11/28 : major rewrite
32892000/11/26 : first write