blob: ec821f6e916f26a00012e35edd4c61553db24a92 [file] [log] [blame]
willy tarreau036e1ce2005-12-17 13:46:33 +01001ChangeLog :
2===========
willy tarreau4302f492005-12-18 01:00:37 +01003
Willy Tarreau37242fa2010-08-28 19:21:00 +020042010/08/28 : 1.5-dev2
5 - [MINOR] startup: release unused structs after forking
6 - [MINOR] startup: don't wait for nothing when no old pid remains
7 - [CLEANUP] reference product branch 1.5
8 - [MEDIUM] signals: add support for registering functions and tasks
9 - [MEDIUM] signals: support redistribution of signal zero when stopping
10 - [BUG] http: don't set auto_close if more data are expected
11
Willy Tarreaufc815fd2010-08-25 10:56:53 +0200122010/08/25 : 1.5-dev1
13 - [BUG] stats: session rate limit gets garbaged in the stats
14 - [DOC] mention 'option http-server-close' effect in Tq section
15 - [DOC] summarize and highlight persistent connections behaviour
16 - [DOC] add configuration samples
17 - [BUG] http: dispatch and http_proxy modes were broken for a long time
18 - [BUG] http: the transaction must be initialized even in TCP mode
19 - [BUG] tcp: dropped connections must be counted as "denied" not "failed"
20 - [BUG] consistent hash: balance on all servers, not only 2 !
21 - [CONTRIB] halog: report per-server status codes, errors and response times
22 - [BUG] http: the transaction must be initialized even in TCP mode (part 2)
23 - [BUG] client: always ensure to zero rep->analysers
24 - [BUG] session: clear BF_READ_ATTACHED before next I/O
25 - [BUG] http: automatically close response if req is aborted
26 - [BUG] proxy: connection rate limiting was eating lots of CPU
27 - [BUG] http: report correct flags in case of client aborts during body
28 - [TESTS] refine non-regression tests and add 4 new tests
29 - [BUG] debug: wrong pointer was used to report a status line
30 - [BUG] debug: correctly report truncated messages
31 - [DOC] document the "dispatch" keyword
32 - [BUG] stick_table: fix possible memory leak in case of connection error
33 - [CLEANUP] acl: use 'L6' instead of 'L4' in ACL flags relying on contents
34 - [MINOR] accept: count the incoming connection earlier
35 - [CLEANUP] tcp: move some non tcp-specific layer6 processing out of proto_tcp
36 - [CLEANUP] client: move some ACLs away to their respective locations
37 - [CLEANUP] rename client -> frontend
38 - [MEDIUM] separate protocol-level accept() from the frontend's
39 - [MINOR] proxy: add a list to hold future layer 4 rules
40 - [MEDIUM] config: parse tcp layer4 rules (tcp-request accept/reject)
41 - [MEDIUM] tcp: check for pure layer4 rules immediately after accept()
42 - [OPTIM] frontend: tell the compiler that errors are unlikely to occur
43 - [MEDIUM] frontend: check for LI_O_TCP_RULES in the listener
44 - [MINOR] frontend: only check for monitor-net rules if LI_O_CHK_MONNET is set
45 - [CLEANUP] buffer->cto is not used anymore
46 - [MEDIUM] session: finish session establishment sequence in with I/O handlers
47 - [MEDIUM] session: initialize server-side timeouts after connect()
48 - [MEDIUM] backend: initialize the server stream_interface upon connect()
49 - [MAJOR] frontend: don't initialize the server-side stream_int anymore
50 - [MEDIUM] session: move the conn_retries attribute to the stream interface
51 - [MEDIUM] session: don't assign conn_retries upon accept() anymore
52 - [MINOR] frontend: rely on the frontend and not the backend for INDEPSTR
53 - [MAJOR] frontend: reorder the session initialization upon accept
54 - [MINOR] proxy: add an accept() callback for the application layer
55 - [MAJOR] frontend: split accept() into frontend_accept() and session_accept()
56 - [MEDIUM] stats: rely on the standard session_accept() function
57 - [MINOR] buffer: refine the flags that may wake an analyser up.
58 - [MINOR] stream_sock: don't dereference a non-existing frontend
59 - [MINOR] session: differenciate between accepted connections and received connections
60 - [MEDIUM] frontend: count the incoming connection earlier
61 - [MINOR] frontend: count denied TCP requests separately
62 - [CLEANUP] stick_table: add/clarify some comments
63 - [BUILD] memory: add a few missing parenthesis to the pool management macros
64 - [MINOR] stick_table: add support for variable-sized data
65 - [CLEANUP] stick_table: rename some stksess struct members to avoid confusion
66 - [CLEANUP] stick_table: move pattern to key functions to stick_table.c
67 - [MEDIUM] stick_table: add room for extra data types
68 - [MINOR] stick_table: add support for "conn_cum" data type.
69 - [MEDIUM] stick_table: don't overwrite data when storing an entry
70 - [MINOR] config: initialize stick tables after all the parsing
71 - [MINOR] stick_table: provide functions to return stksess data from a type
72 - [MEDIUM] stick_table: move the server ID to a generic data type
73 - [MINOR] stick_table: enable it for frontends too
74 - [MINOR] stick_table: export the stick_table_key
75 - [MINOR] tcp: add per-source connection rate limiting
76 - [MEDIUM] stick_table: separate storage and update of session entries
77 - [MEDIUM] stick-tables: add a reference counter to each entry
78 - [MINOR] session: add a pointer to the tracked counters for the source
79 - [CLEANUP] proto_tcp: make the config parser a little bit more flexible
80 - [BUG] config: report the correct proxy type in tcp-request errors
81 - [MINOR] config: provide a function to quote args in a more friendly way
82 - [BUG] stick_table: the fix for the memory leak caused a regression
83 - [MEDIUM] backend: support servers on 0.0.0.0
84 - [BUG] stick-table: correctly refresh expiration timers
85 - [MEDIUM] stream-interface: add a ->release callback
86 - [MINOR] proxy: add a "parent" member to the structure
87 - [MEDIUM] session: make it possible to call an I/O handler on both SI
88 - [MINOR] tools: add a fast div64_32 function
89 - [MINOR] freq_ctr: add new types and functions for periods different from 1s
90 - [MINOR] errors: provide new status codes for config parsing functions
91 - [BUG] http: denied requests must not be counted as denied resps in listeners
92 - [MINOR] tools: add a get_std_op() function to parse operators
93 - [MEDIUM] acl: make use of get_std_op() to parse intger ranges
94 - [MAJOR] stream_sock: better wakeup conditions on read()
95 - [BUG] session: analysers must be checked when SI state changes
96 - [MINOR] http: reset analysers to listener's, not frontend's
97 - [MEDIUM] session: support "tcp-request content" rules in backends
98 - [BUILD] always match official tags when doing git-tar
99 - [MAJOR] stream_interface: fix the wakeup conditions for embedded iohandlers
100 - [MEDIUM] buffer: make buffer_feed* support writing non-contiguous chunks
101 - [MINOR] tcp: src_count acl does not have a permanent result
102 - [MAJOR] session: add track-counters to track counters related to the session
103 - [MINOR] stick-table: provide a table lookup function
104 - [MINOR] stick-table: use suffix "_cnt" for cumulated counts
105 - [MEDIUM] session: move counter ACL fetches from proto_tcp
106 - [MEDIUM] session: add concurrent connections counter
107 - [MEDIUM] session: add data in and out volume counters
108 - [MINOR] session: add the trk_conn_cnt ACL keyword to track connection counts
109 - [MEDIUM] session-counters: automatically update tracked connection count
110 - [MINOR] session: add the trk_conn_cur ACL keyword to track concurrent connection
111 - [MINOR] session: add trk_kbytes_* ACL keywords to track data size
112 - [MEDIUM] session: add a counter on the cumulated number of sessions
113 - [MINOR] config: support a comma-separated list of store data types in stick-table
114 - [MEDIUM] stick-tables: add support for arguments to data_types
115 - [MEDIUM] stick-tables: add stored data argument type checking
116 - [MEDIUM] session counters: add conn_rate and sess_rate counters
117 - [MEDIUM] session counters: add bytes_in_rate and bytes_out_rate counters
118 - [MINOR] stktable: add a stktable_update_key() function
119 - [MINOR] session-counters: add a general purpose counter (gpc0)
120 - [MEDIUM] session-counters: add HTTP req/err tracking
121 - [MEDIUM] stats: add "show table [<name>]" to dump a stick-table
122 - [MEDIUM] stats: add "clear table <name> key <value>" to clear table entries
123 - [CLEANUP] stick-table: declare stktable_data_types as extern
124 - [MEDIUM] stick-table: make use of generic types for stored data
125 - [MINOR] stats: correctly report errors on "show table" and "clear table"
126 - [MEDIUM] stats: add the ability to dump table entries matching criteria
127 - [DOC] configuration: document all the new tracked counters
128 - [DOC] stats: document "show table" and "clear table"
129 - [MAJOR] session-counters: split FE and BE track counters
130 - [MEDIUM] tcp: accept the "track-counters" in "tcp-request content" rules
131 - [MEDIUM] session counters: automatically remove expired entries.
132 - [MEDIUM] config: replace 'tcp-request <action>' with "tcp-request connection"
133 - [MEDIUM] session-counters: make it possible to count connections from frontend
134 - [MINOR] session-counters: use "track-sc{1,2}" instead of "track-{fe,be}-counters"
135 - [MEDIUM] session-counters: correctly unbind the counters tracked by the backend
136 - [CLEANUP] stats: use stksess_kill() to remove table entries
137 - [DOC] update the references to session counters and to tcp-request connection
138 - [DOC] cleanup: split a few long lines
139 - [MEDIUM] http: forward client's close when abortonclose is set
140 - [BUG] queue: don't dequeue proxy-global requests on disabled servers
141 - [BUG] stats: global stats timeout may be specified before stats socket.
142 - [BUG] conf: add tcp-request content rules to the correct list
143
Willy Tarreau21475e32010-05-23 08:46:08 +02001442010/05/23 : 1.5-dev0
145 - exact copy of 1.4.6
146
Willy Tarreau5fdd77d2010-05-16 22:34:28 +02001472010/05/16 : 1.4.6
148 - [BUILD] ebtree: update to v6.0.1 to remove references to dprintf()
149 - [CLEANUP] acl: make use of eb_is_empty() instead of open coding the tree's emptiness test
150 - [MINOR] acl: add srv_is_up() to check that a specific server is up or not
151 - [DOC] add a few precisions about the use of RDP cookies
152
Willy Tarreau9d4d9e32010-05-13 22:17:08 +02001532010/05/13 : 1.4.5
154 - [DOC] report minimum kernel version for tproxy in the Makefile
155 - [MINOR] add the "ignore-persist" option to conditionally ignore persistence
156 - [DOC] add the "ignore-persist" option to conditionally ignore persistence
157 - [DOC] fix ignore-persist/force-persist documentation
158 - [BUG] cttproxy: socket fd leakage in check_cttproxy_version
159 - [DOC] doc/configuration.txt: fix typos
160 - [MINOR] option http-pretend-keepalive is both for FEs and BEs
161 - [MINOR] fix possible crash in debug mode with invalid responses
162 - [MINOR] halog: add support for statisticts on status codes
163 - [OPTIM] halog: use a faster zero test in fgets()
164 - [OPTIM] halog: minor speedup by using unlikely()
165 - [OPTIM] halog: speed up fgets2-64 by about 10%
166 - [DOC] refresh the README file and merge the CONTRIB file into it
167 - [MINOR] acl: support loading values from files
168 - [MEDIUM] ebtree: upgrade to version 6.0
169 - [MINOR] acl trees: add flags and union members to store values in trees
170 - [MEDIUM] acl: add ability to insert patterns in trees
171 - [MEDIUM] acl: add tree-based lookups of exact strings
172 - [MEDIUM] acl: add tree-based lookups of networks
173 - [MINOR] acl: ignore empty lines and comments in pattern files
174 - [MINOR] stick-tables: add support for "stick on hdr"
175
Willy Tarreau9508c1c2010-04-07 23:12:24 +02001762010/04/07 : 1.4.4
177 - [BUG] appsession should match the whole cookie name
178 - [CLEANUP] proxy: move PR_O_SSL3_CHK to options2 to release one flag
179 - [MEDIUM] backend: move the transparent proxy address selection to backend
180 - [MINOR] add very fast IP parsing functions
181 - [MINOR] add new tproxy flags for dynamic source address binding
182 - [MEDIUM] add ability to connect to a server from an IP found in a header
183 - [BUILD] config: last patch breaks build without CONFIG_HAP_LINUX_TPROXY
184 - [MINOR] http: make it possible to pretend keep-alive when doing close
185 - [MINOR] config: report "default-server" instead of "(null)" in error messages
186
Willy Tarreau75934a12010-03-30 09:50:08 +02001872010/03/30 : 1.4.3
188 - [CLEANUP] stats: remove printf format warning in stats_dump_full_sess_to_buffer()
189 - [MEDIUM] session: better fix for connection to servers with closed input
190 - [DOC] indicate in the doc how to bind to port ranges
191 - [BUG] backend: L7 hashing must not be performed on incomplete requests
192 - [TESTS] add a simple program to test connection resets
193 - [MINOR] cli: "show errors" should display "backend <NONE>" when backend was not used
194 - [MINOR] config: emit warnings when HTTP-only options are used in TCP mode
195 - [MINOR] config: allow "slowstart 0s"
196 - [BUILD] 'make tags' did not consider files ending in '.c'
197 - [MINOR] checks: add the ability to disable a server in the config
198
Willy Tarreauda618cb2010-03-17 23:41:57 +01001992010/03/17 : 1.4.2
200 - [CLEANUP] product branch update
201 - [DOC] Some more documentation cleanups
202 - [BUG] clf logs segfault when capturing a non existant header
203 - [OPTIM] config: only allocate check buffer when checks are enabled
204 - [MEDIUM] checks: support multi-packet health check responses
205 - [CLEANUP] session: remove duplicate test
206 - [BUG] http: don't wait for response data to leave buffer is client has left
207 - [MINOR] proto_uxst: set accept_date upon accept() to the wall clock time
208 - [MINOR] stats: don't send empty lines in "show errors"
209 - [MINOR] stats: make the data dump function reusable for other purposes
210 - [MINOR] stats socket: add show sess <id> to dump details about a session
211 - [BUG] stats: connection reset counters must be plain ascii, not HTML
212 - [BUG] url_param hash may return a down server
213 - [MINOR] force null-termination of hostname
214 - [MEDIUM] connect to servers even when the input has already been closed
215 - [BUG] don't merge anonymous ACLs !
216 - [BUG] config: fix endless loop when parsing "on-error"
217 - [MINOR] http: don't mark a server as failed when it returns 501/505
218 - [OPTIM] checks: try to detect the end of response without polling again
219 - [BUG] checks: don't report an error when recv() returns an error after data
220 - [BUG] checks: don't abort when second poll returns an error
221 - [MINOR] checks: make shutdown() silently fail
222 - [BUG] http: fix truncated responses on chunk encoding when size divides buffer size
223 - [BUG] init: unconditionally catch SIGPIPE
224 - [BUG] checks: don't wait for a close to start parsing the response
225
Willy Tarreauc5e60c32010-03-04 23:39:19 +01002262010/03/04 : 1.4.1
227 - [BUG] Clear-cookie path issue
228 - [DOC] fix typo on stickiness rules
229 - [BUILD] fix BSD and OSX makefiles for missing files
230 - [BUILD] includes order breaks OpenBSD build
231 - [BUILD] fix some build warnings on Solaris with is* macros
232 - [BUG] logs: don't report "last data" when we have just closed after an error
233 - [BUG] logs: don't report "proxy request" when server closes early
234 - [BUILD] fix platform-dependant build issues related to crypt()
235 - [STATS] count transfer aborts caused by client and by server
236 - [STATS] frontend requests were not accounted for failed requests
237 - [MINOR] report total number of processed connections when stopping a proxy
238 - [DOC] be more clear about the limitation to one single monitor-net entry
239
Willy Tarreaue18fdfd2010-02-26 14:55:22 +01002402010/02/26 : 1.4.0
241 - [MINOR] stats: report maint state for tracking servers too
242 - [DOC] fix summary to add pattern extraction
243 - [DOC] Documentation cleanups
244 - [BUG] cfgparse memory leak and missing free calls in deinit()
245 - [BUG] pxid/puid/luid: don't shift IDs when some of them are forced
246 - [EXAMPLES] add auth.cfg
247 - [BUG] uri_auth: ST_SHLGNDS should be 0x00000008 not 0x0000008
248 - [BUG] uri_auth: do not attemp to convert uri_auth -> http-request more than once
249 - [BUILD] auth: don't use unnamed unions
250 - [BUG] config: report unresolvable host names as errors
251 - [BUILD] fix build breakage with DEBUG_FULL
252 - [DOC] fix a typo about timeout check and clarify the explanation.
253 - [MEDIUM] http: don't use trash to realign large buffers
254 - [STATS] report HTTP requests (total and rate) in frontends
255 - [STATS] separate frontend and backend HTTP stats
256 - [MEDIUM] http: revert to use a swap buffer for realignment
257 - [MINOR] stats: report the request rate in frontends as cell titles
258 - [MINOR] stats: mark areas with an underline when tooltips are available
259 - [DOC] reorder some entries to maintain the alphabetical order
260 - [DOC] cleanup of the keyword matrix
261
Willy Tarreaub05613d2010-02-02 10:18:28 +01002622010/02/02 : 1.4-rc1
263 - [MEDIUM] add a maintenance mode to servers
264 - [MINOR] http-auth: last fix was wrong
265 - [CONTRIB] add base64rev-gen.c that was used to generate the base64rev table.
266 - [MINOR] Base64 decode
267 - [MINOR] generic auth support with groups and encrypted passwords
268 - [MINOR] add ACL_TEST_F_NULL_MATCH
269 - [MINOR] http-request: allow/deny/auth support for frontend/backend/listen
270 - [MINOR] acl: add http_auth and http_auth_group
271 - [MAJOR] use the new auth framework for http stats
272 - [DOC] add info about userlists, http-request and http_auth/http_auth_group acls
273 - [STATS] make it possible to change a CLI connection timeout
274 - [BUG] patterns: copy-paste typo in type conversion arguments
275 - [MINOR] pattern: make the converter more flexible by supporting void* and int args
276 - [MINOR] standard: str2mask: string to netmask converter
277 - [MINOR] pattern: add support for argument parsers for converters
278 - [MINOR] pattern: add the "ipmask()" converting function
279 - [MINOR] config: off-by-one in "stick-table" after list of converters
280 - [CLEANUP] acl, patterns: make use of my_strndup() instead of malloc+memcpy
281 - [BUG] restore accidentely removed line in last patch !
282 - [MINOR] checks: make the HTTP check code add the CRLF itself
283 - [MINOR] checks: add the server's status in the checks
284 - [BUILD] halog: make without arch-specific optimizations
285 - [BUG] halog: fix segfault in case of empty log in PCT mode (cherry picked from commit fe362fe4762151d209b9656639ee1651bc2b329d)
286 - [MINOR] http: disable keep-alive when process is going down
287 - [MINOR] acl: add build_acl_cond() to make it easier to add ACLs in config
288 - [CLEANUP] config: use build_acl_cond() instead of parse_acl_cond()
289 - [CLEANUP] config: use warnif_cond_requires_resp() to check for bad ACLs
290 - [MINOR] prepare req_*/rsp_* to receive a condition
291 - [CLEANUP] config: specify correct const char types to warnif_* functions
292 - [MEDIUM] config: factor out the parsing of 20 req*/rsp* keywords
293 - [MEDIUM] http: make the request filter loop check for optional conditions
294 - [MEDIUM] http: add support for conditional request filter execution
295 - [DOC] add some build info about the AIX platform (cherry picked from commit e41914c77edbc40aebf827b37542d37d758e371e)
296 - [MEDIUM] http: add support for conditional request header addition
297 - [MEDIUM] http: add support for conditional response header rewriting
298 - [DOC] add some missing ACLs about response header matching
299 - [MEDIUM] http: add support for proxy authentication
300 - [MINOR] http-auth: make the 'unless' keyword work as expected
301 - [CLEANUP] config: use build_acl_cond() to simplify http-request ACL parsing
302 - [MEDIUM] add support for anonymous ACLs
303 - [MEDIUM] http: switch to tunnel mode after status 101 responses
304 - [MEDIUM] http: stricter processing of the CONNECT method
305 - [BUG] config: reset check request to avoid double free when switching to ssl/sql
306 - [MINOR] config: fix too large ssl-hello-check message.
307 - [BUG] fix error response in case of server error
308
Willy Tarreau2eba6aa2010-01-25 23:28:05 +01003092010/01/25 : 1.4-dev8
310 - [CLEANUP] Keep in sync "defaults" support between documentation and code
311 - [MEDIUM] http: add support for Proxy-Connection header
312 - [CRITICAL] buffers: buffer_insert_line2 must not change the ->w entry
313 - [MINOR] http: remove a copy-paste typo in transaction cleaning
314 - [BUG] http: trim any excess buffer data when recycling a connection
315
Willy Tarreau6939b552010-01-25 01:54:37 +01003162010/01/25 : 1.4-dev7
317 - [BUG] appsession: possible memory leak in case of out of memory condition
318 - [MINOR] config: don't accept 'appsession' in defaults section
319 - [MINOR] Add function to parse a size in configuration
320 - [MEDIUM] Add stick table (persistence) management functions and types
321 - [MEDIUM] Add pattern fetch management types and functions
322 - [MEDIUM] Add src dst and dport pattern fetches.
323 - [MEDIUM] Add stick table configuration and init.
324 - [MEDIUM] Add stick and store rules analysers.
325 - [MINOR] add option "mysql-check" to use MySQL health checks
326 - [BUG] health checks: fix requeued message
327 - [OPTIM] remove SSP_O_VIA and SSP_O_STATUS
328 - [BUG] checks: fix newline termination
329 - [MINOR] acl: add fe_id/so_id to match frontend's and socket's id
330 - [BUG] appsession's sessid must be reset at end of transaction
331 - [BUILD] appsession did not build anymore under gcc-2.95
332 - [BUG] server redirection used an uninitialized string.
333 - [MEDIUM] http: fix handling of message pointers
334 - [MINOR] http: fix double slash prefix with server redirect
335 - [MINOR] http redirect: add the ability to append a '/' to the URL
336 - [BUG] stream_interface: fix retnclose and remove cond_close
337 - [MINOR] http redirect: don't explicitly state keep-alive on 1.1
338 - [MINOR] http: move appsession 'sessid' from session to http_txn
339 - [OPTIM] reorder http_txn to optimize cache lines placement
340 - [MINOR] http: differentiate waiting for new request and waiting for a complete requst
341 - [MINOR] http: add a separate "http-keep-alive" timeout
342 - [MINOR] config: remove undocumented and buggy 'timeout appsession'
343 - [DOC] fix various too large lines
344 - [DOC] remove several trailing spaces
345 - [DOC] add the doc about stickiness
346 - [BUILD] remove a warning in standard.h on AIX
347 - [BUG] checks: chars are unsigned on AIX, check was always true
348 - [CLEANUP] stream_sock: MSG_NOSIGNAL is only for send(), not recv()
349 - [BUG] check: we must not check for error before reading a response
350 - [BUG] buffers: remove remains of wrong obsolete length check
351 - [OPTIM] stream_sock: don't shutdown(write) when the socket is in error
352 - [BUG] http: don't count req errors on client resets or t/o during keep-alive
353 - [MEDIUM] http: don't switch to tunnel mode upon close
354 - [DOC] add documentation about connection header processing
355 - [MINOR] http: add http_remove_header2() to remove a header value.
356 - [MINOR] tools: add a "word_match()" function to match words and ignore spaces
357 - [MAJOR] http: rework request Connection header handling
358 - [MAJOR] http: rework response Connection header handling
359 - [MINOR] add the ability to force kernel socket buffer size.
360 - [BUG] http_server_error() must not purge a previous pending response
361 - [OPTIM] http: don't delay response if next request is incomplete
362 - [MINOR] add the "force-persist" statement to force persistence on down servers
363 - [MINOR] http: logs must report persistent connections to down servers
364 - [BUG] buffer_replace2 must never change the ->w entry
365
Willy Tarreau11f8f542010-01-08 07:49:44 +01003662010/01/08 : 1.4-dev6
367 - [BUILD] warning in stream_interface.h
368 - [BUILD] warning ultoa_r returns char *
369 - [MINOR] hana: only report stats if it is enabled
370 - [MINOR] stats: add "a link" & "a href" for sockets
371 - [MINOR]: stats: add show-legends to report additional informations
372 - [MEDIUM] default-server support
373 - [BUG]: add 'observer', 'on-error', 'error-limit' to supported options list
374 - [MINOR] stats: add href to tracked server
375 - [BUG] stats: show UP/DOWN status also in tracking servers
376 - [DOC] Restore ability to search a keyword at the beginning of a line
377 - [BUG] stats: cookie should be reported under backend not under proxy
378 - [BUG] cfgparser/stats: fix error message
379 - [BUG] http: disable auto-closing during chunk analysis
380 - [BUG] http: fix hopefully last closing issue on data forwarding
381 - [DEBUG] add an http_silent_debug function to debug HTTP states
382 - [MAJOR] http: fix again the forward analysers
383 - [BUG] http_process_res_common() must not skip the forward analyser
384 - [BUG] http: some possible missed close remain in the forward chain
385 - [BUG] http: redirect needed to be updated after recent changes
386 - [BUG] http: don't set no-linger on response in case of forced close
387 - [MEDIUM] http: restore the original behaviour of option httpclose
388 - [TESTS] add a file to test various connection modes
389 - [BUG] http: check options before the connection header
390 - [MAJOR] session: fix the order by which the analysers are run
391 - [MEDIUM] session: also consider request analysers added during response
392 - [MEDIUM] http: make safer use of the DONT_READ and AUTO_CLOSE flags
393 - [BUG] http: memory leak with captures when using keep-alive
394 - [BUG] http: fix for capture memory leak was incorrect
395 - [MINOR] http redirect: use proper call to return last response
396 - [MEDIUM] http: wait for some flush of the response buffer before a new request
397 - [MEDIUM] session: limit the number of analyser loops
398
Willy Tarreau1f445892010-01-03 23:23:36 +01003992010/01/03 : 1.4-dev5
400 - [MINOR] server tracking: don't care about the tracked server's mode
401 - [MEDIUM] appsession: add "len", "prefix" and "mode" options
402 - [MEDIUM] appsession: add the "request-learn" option
403 - [BUG] Configuration parser bug when escaping characters
404 - [MINOR] CSS & HTML fun
405 - [MINOR] Collect & provide http response codes received from servers
406 - [BUG] Fix silly typo: hspr_other -> hrsp_other
407 - [MINOR] Add "a name" to stats page
408 - [MINOR] add additional "a href"s to stats page
409 - [MINOR] Collect & provide http response codes for frontends, fix backends
410 - [DOC] some small spell fixes and unifications
411 - [MEDIUM] Decrease server health based on http responses / events, version 3
412 - [BUG] format '%d' expects type 'int', but argument 5 has type 'long int'
413 - [BUG] config: fix erroneous check on cookie domain names, again
414 - [BUG] Healthchecks: get a proper error code if connection cannot be completed immediately
415 - [DOC] trivial fix for man page
416 - [MINOR] config: report all supported options for the "bind" keyword
417 - [MINOR] tcp: add support for the defer_accept bind option
418 - [MINOR] unix socket: report the socket path in case of bind error
419 - [CONTRIB] halog: support searching by response time
420 - [DOC] add a reminder about obsolete documents
421 - [DOC] point to 1.4 doc, not 1.3
422 - [DOC] option tcp-smart-connect was missing from index
423 - [MINOR] http: detect connection: close earlier
424 - [CLEANUP] sepoll: clean up the fd_clr/fd_set functions
425 - [OPTIM] move some rarely used fields out of fdtab
426 - [MEDIUM] fd: merge fd_list into fdtab
427 - [MAJOR] buffer: flag BF_DONT_READ to disable reads when not required
428 - [MINOR] http: add new transaction flags for keep-alive and content-length
429 - [MEDIUM] http request: parse connection, content-length and transfer-encoding
430 - [MINOR] http request: update the TX_SRV_CONN_KA flag on rewrite
431 - [MINOR] http request: simplify the test of no-data
432 - [MEDIUM] http request: simplify POST length detection
433 - [MEDIUM] http request: make use of pre-parsed transfer-encoding header
434 - [MAJOR] http: create the analyser which waits for a response
435 - [MINOR] http: pre-set the persistent flags in the transaction
436 - [MEDIUM] http response: check body length and set transaction flags
437 - [MINOR] http response: update the TX_CLI_CONN_KA flag on rewrite
438 - [MINOR] http: remove the last call to stream_int_return
439 - [IMPORT] import ebtree v5.0 into directory ebtree/
440 - [MEDIUM] build: switch ebtree users to use new ebtree version
441 - [CLEANUP] ebtree: remove old unused files
442 - [BUG] definitely fix regparm issues between haproxy core and ebtree
443 - [CLEANUP] ebtree: cast to char * to get rid of gcc warning
444 - [BUILD] missing #ifndef in ebmbtree.h
445 - [BUILD] missing #ifndef in ebsttree.h
446 - [MINOR] tools: add hex2i() function to convert hex char to int
447 - [MINOR] http: create new MSG_BODY sub-states
448 - [BUG] stream_sock: BUF_INFINITE_FORWARD broke splice on 64-bit platforms
449 - [DOC] option is "defer-accept", not "defer_accept"
450 - [MINOR] http: keep pointer to beginning of data
451 - [BUG] x-original-to: name was not set in default instance
452 - [MINOR] http: detect tunnel mode and set it in the session
453 - [BUG] config: fix error message when config file is not found
454 - [BUG] config: fix wrong handling of too large argument count
455 - [BUG] config: disable 'option httplog' on TCP proxies
456 - [BUG] config: fix erroneous check on cookie domain names
457 - [BUG] config: cookie domain was ignored in defaults sections
458 - [MINOR] config: support passing multiple "domain" statements to cookies
459 - [MINOR] ebtree: add functions to lookup non-null terminated strings
460 - [MINOR] config: don't report error on all subsequent files on failure
461 - [BUG] second fix for the printf format warning
462 - [BUG] check_post: limit analysis to the buffer length
463 - [MEDIUM] http: process request body in a specific analyser
464 - [MEDIUM] backend: remove HTTP POST parsing from get_server_ph_post()
465 - [MAJOR] http: completely process the "connection" header
466 - [MINOR] http: only consider chunk encoding with HTTP/1.1
467 - [MAJOR] buffers: automatically compute the maximum buffer length
468 - [MINOR] http: move the http transaction init/cleanup code to proto_http
469 - [MINOR] http: move 1xx handling earlier to eliminate a lot of ifs
470 - [MINOR] http: introduce a new synchronisation state : HTTP_MSG_DONE
471 - [MEDIUM] http: rework chunk-size parser
472 - [MEDIUM] http: add a new transaction flags indicating if we know the transfer length
473 - [MINOR] buffers: add buffer_ignore() to skip some bytes
474 - [BUG] http: offsets are relative to the buffer, not to ->som
475 - [MEDIUM] http: automatically re-aling request buffer
476 - [BUG] http: body parsing must consider the start of message
477 - [MINOR] new function stream_int_cond_close()
478 - [MAJOR] http: implement body parser
479 - [BUG] http: typos on several unlikely() around header insertion
480 - [BUG] stream_sock: wrong max computation on recv
481 - [MEDIUM] http: rework the buffer alignment logic
482 - [BUG] buffers: wrong size calculation for displaced data
483 - [MINOR] stream_sock: prepare for closing when all pending data are sent
484 - [MEDIUM] http: add two more states for the closing period
485 - [MEDIUM] http: properly handle "option forceclose"
486 - [MINOR] stream_sock: add SI_FL_NOLINGER for faster close
487 - [MEDIUM] http: make forceclose use SI_FL_NOLINGER
488 - [MEDIUM] session: set SI_FL_NOLINGER when aborting on write timeouts
489 - [MEDIUM] http: add some SI_FL_NOLINGER around server errors
490 - [MINOR] config: option forceclose is valid in frontends too
491 - [BUILD] halog: insufficient include path in makefile
492 - [MEDIUM] http: make the analyser not rely on msg being initialized anymore
493 - [MEDIUM] http: make the parsers able to wait for a buffer flush
494 - [MAJOR] http: add support for option http-server-close
495 - [BUG] http: ensure we abort data transfer on write error
496 - [BUG] last fix was overzealous and disabled server-close
497 - [BUG] http: fix erroneous trailers size computation
498 - [MINOR] stream_sock: enable MSG_MORE when forwarding finite amount of data
499 - [OPTIM] http: set MSG_MORE on response when a pipelined request is pending
500 - [BUG] http: redirects were broken by chunk changes
501 - [BUG] http: the request URI pointer is relative to the buffer
502 - [OPTIM] http: don't immediately enable reading on request
503 - [MINOR] http: move redirect messages to HTTP/1.1 with a content-length
504 - [BUG] http: take care of errors, timeouts and aborts during the data phase
505 - [MINOR] http: don't wait for sending requests to the server
506 - [MINOR] http: make the conditional redirect support keep-alive
507 - [BUG] http: fix cookie parser to support spaces and commas in values
508 - [MINOR] config: some options were missing for "redirect"
509 - [MINOR] redirect: add support for unconditional rules
510 - [MINOR] config: centralize proxy struct initialization
511 - [MEDIUM] config: remove the limitation of 10 reqadd/rspadd statements
512 - [MEDIUM] config: remove the limitation of 10 config files
513 - [CLEANUP] http: remove a remaining impossible condition
514 - [OPTIM] http: optimize a bit the construct of the forward loops
515
Willy Tarreauc82a9e52009-10-12 06:40:53 +02005162009/10/12 : 1.4-dev4
517 - [DOC] add missing rate_lim and rate_max
518 - [MAJOR] struct chunk rework
519 - [MEDIUM] Health check reporting code rework + health logging, v3
520 - [BUG] check if rise/fall has an argument and it is > 0
521 - [MINOR] health checks logging unification
522 - [MINOR] add "description", "node" and show-node"/"show-desc", remove "node-name", v2
523 - [MINOR] Allow dots in show-node & add "white-space: nowrap" in th.pxname.
524 - [DOC] Add information about http://haproxy.1wt.eu/contrib.html
525 - [MINOR] Introduce include/types/counters.h
526 - [CLEANUP] Move counters to dedicated structures
527 - [MINOR] Add "clear counters" to clear statistics counters
528 - [MEDIUM] Collect & provide separate statistics for sockets, v2
529 - [BUG] Fix NULL pointer dereference in stats_check_uri_auth(), v2
530 - [MINOR] acl: don't report valid acls as potential mistakes
531 - [MINOR] Add cut_crlf(), ltrim(), rtrim() and alltrim()
532 - [MINOR] Add chunk_htmlencode and chunk_asciiencode
533 - [MINOR] Capture & display more data from health checks, v2
534 - [BUG] task.c: don't assing last_timer to node-less entries
535 - [BUG] http stats: large outputs sometimes got some parts chopped off
536 - [MINOR] backend: export some functions to recount servers
537 - [MINOR] backend: uninline some LB functions
538 - [MINOR] include time.h from freq_ctr.h as is uses "now".
539 - [CLEANUP] backend: move LB algos to individual files
540 - [MINOR] lb_map: reorder code in order to ease integration of new hash functions
541 - [CLEANUP] proxy: move last lb-specific bits to their respective files
542 - [MINOR] backend: separate declarations of LB algos from their lookup method
543 - [MINOR] backend: reorganize the LB algorithm selection
544 - [MEDIUM] backend: introduce the "static-rr" LB algorithm
545 - [MINOR] report list of supported pollers with -vv
546 - [DOC] log-health-checks is an option, not a directive
547 - [MEDIUM] new option "independant-streams" to stop updating read timeout on writes
548 - [BUG] stats: don't call buffer_shutw(), but ->shutw() instead
549 - [MINOR] stats: strip CR and LF from the input command line
550 - [BUG] don't refresh timeouts late after detected activity
551 - [MINOR] stats_dump_errors_to_buffer: use buffer_feed_chunk()
552 - [MINOR] stats_dump_sess_to_buffer: use buffer_feed_chunk()
553 - [MINOR] stats: make stats_dump_raw_to_buffer() use buffer_feed_chunk
554 - [MEDIUM] stats: don't use s->ana_state anymore
555 - [MINOR] remove now obsolete ana_state from the session struct
556 - [MEDIUM] stats: make HTTP stats use an I/O handler
557 - [MEDIUM] stream_int: adjust WAIT_ROOM handling
558 - [BUG] config: look for ID conflicts in all sockets, not only last ones.
559 - [MINOR] config: reference file and line with any listener/proxy/server declaration
560 - [MINOR] config: report places of duplicate names or IDs
561 - [MINOR] config: add pointer to file name in block/redirect/use_backend/monitor rules
562 - [MINOR] tools: add a new get_next_id() function
563 - [MEDIUM] config: automatically find unused IDs for proxies, servers and listeners
564 - [OPTIM] counters: move some max numbers to the counters struct
565 - [BUG] counters: fix segfault on missing counters for a listener
566 - [MEDIUM] backend: implement consistent hashing variation
567 - [MINOR] acl: add fe_conn, be_conn, queue, avg_queue
568 - [MINOR] stats: use 'clear counters all' to clear all values
569 - [MEDIUM] add access restrictions to the stats socket
570 - [MINOR] buffers: add buffer_feed2() and make buffer_feed() measure string length
571 - [MINOR] proxy: provide function to retrieve backend/server pointers
572 - [MINOR] add the "initial weight" to the server struct.
573 - [MEDIUM] stats: add the "get weight" command to report a server's weight
574 - [MEDIUM] stats: add the "set weight" command
575 - [BUILD] add a 'make tags' target
576 - [MINOR] stats: add support for numeric IDs in set weight/get weight
577 - [MINOR] stats: use a dedicated state to output static data
578 - [OPTIM] stats: check free space before trying to print
579
Willy Tarreau9f389e02009-09-24 00:12:50 +02005802009/09/24 : 1.4-dev3
581 - [BUILD] compilation of haproxy-1.4-dev2 on FreeBSD
582 - [MEDIUM] Collect & show information about last health check, v3
583 - [MINOR] export the hostname variable so that all the code can access it
584 - [MINOR] stats: add a new node-name setting
585 - [MEDIUM] remove old experimental tcpsplice option
586 - [BUILD] fix build for systems without SOL_TCP
587 - [MEDIUM] move connection establishment from backend to the SI.
588 - [MEDIUM] make the global stats socket part of a frontend
589 - [MEDIUM] session: account per-listener connections
590 - [MINOR] session: switch to established state if no connect function
591 - [MEDIUM] make the unix stats sockets use the generic session handler
592 - [CLEANUP] unix: remove uxst_process_session()
593 - [CLEANUP] move remaining stats sockets code to dumpstats
594 - [MINOR] move the initial task's nice value to the listener
595 - [MINOR] cleanup set_session_backend by using pre-computed analysers
596 - [MINOR] set s->srv_error according to the analysers
597 - [MEDIUM] set rep->analysers from fe and be analysers
598 - [MEDIUM] replace BUFSIZE with buf->size in computations
599 - [MEDIUM] make it possible to change the buffer size in the configuration
600 - [MEDIUM] report error on buffer writes larger than buffer size
601 - [MEDIUM] stream_interface: add and use ->update function to resync
602 - [CLEANUP] remove ifdef MSG_NOSIGNAL and define it instead
603 - [MEDIUM] remove TCP_CORK and make use of MSG_MORE instead
604 - [BUG] tarpit did not work anymore
605 - [MINOR] acl: add support for hdr_ip to match IP addresses in headers
606 - [MAJOR] buffers: fix misuse of the BF_SHUTW_NOW flag
607 - [MINOR] buffers: provide more functions to handle buffer data
608 - [MEDIUM] buffers: provide new buffer_feed*() function
609 - [MINOR] buffers: add peekchar and peekline functions for stream interfaces
610 - [MINOR] buffers: provide buffer_si_putchar() to send a char from a stream interface
611 - [BUG] buffer_forward() would not correctly consider data already scheduled
612 - [MINOR] buffers: add buffer_cut_tail() to cut only unsent data
613 - [MEDIUM] stream_interface: make use of buffer_cut_tail() to report errors
614 - [MAJOR] http: add support for HTTP 1xx informational responses
615 - [MINOR] buffers: inline buffer_si_putchar()
616 - [MAJOR] buffers: split BF_WRITE_ENA into BF_AUTO_CONNECT and BF_AUTO_CLOSE
617 - [MAJOR] buffers: fix the BF_EMPTY flag's meaning
618 - [BUG] stream_interface: SI_ST_CLO must have buffers SHUT
619 - [MINOR] stream_sock: don't set SI_FL_WAIT_DATA if BF_SHUTW_NOW is set
620 - [MEDIUM] add support for infinite forwarding
621 - [BUILD] stream_interface: fix conflicting declaration
622 - [BUG] buffers: buffer_forward() must not always clear BF_OUT_EMPTY
623 - [BUG] variable buffer size ignored at initialization time
624 - [MINOR] ensure that buffer_feed() and buffer_skip() set BF_*_PARTIAL
625 - [BUG] fix buffer_skip() and buffer_si_getline() to correctly handle wrap-arounds
626 - [MINOR] stream_interface: add SI_FL_DONT_WAKE flag
627 - [MINOR] stream_interface: add iohandler callback
628 - [MINOR] stream_interface: add functions to support running as internal/external tasks
629 - [MEDIUM] session: call iohandler for embedded tasks (applets)
630 - [MINOR] add a ->private member to the stream_interface
631 - [MEDIUM] stats: prepare the connection for closing before dumping
632 - [MEDIUM] stats: replace the stats socket analyser with an SI applet
633
Willy Tarreau68dcd252009-08-09 22:57:09 +02006342009/08/09 : 1.4-dev2
635 - [BUG] task: fix possible crash when some timeouts are not configured
636 - [BUG] log: option tcplog would log to global if no logger was defined
637
Willy Tarreaub03d2982009-07-29 22:38:32 +02006382009/07/29 : 1.4-dev1
639 - [MINOR] acl: add support for matching of RDP cookies
640 - [MEDIUM] add support for RDP cookie load-balancing
641 - [MEDIUM] add support for RDP cookie persistence
642 - [MINOR] add a new CLF log format
643 - [MINOR] startup: don't imply -q with -D
644 - [BUG] ensure that we correctly re-start old process in case of error
645 - [MEDIUM] add support for binding to source port ranges during connect
646 - [MINOR] config: track "no option"/"option" changes
647 - [MINOR] config: support resetting options do default values
648 - [MEDIUM] implement option tcp-smart-accept at the frontend
649 - [MEDIUM] stream_sock: implement tcp-cork for use during shutdowns on Linux
650 - [MEDIUM] implement tcp-smart-connect option at the backend
651 - [MEDIUM] add support for TCP MSS adjustment for listeners
652 - [MEDIUM] support setting a server weight to zero
653 - [MINOR] make DEFAULT_MAXCONN user-configurable at build time
654 - [MAJOR] session: don't clear buffer status flags anymore
655 - [MAJOR] session: only check for timeouts when they have just occurred.
656 - [MAJOR] session: simplify buffer error handling
657 - [MEDIUM] config: split parser and checker in two functions
658 - [MEDIUM] config: support loading multiple configuration files
659 - [MEDIUM] stream_sock: don't close prematurely when nolinger is set
660 - [MEDIUM] session: rework buffer analysis to permit permanent analysers
661 - [MEDIUM] splice: set the capability on each stream_interface
662 - [BUG] http: redirect rules were processed too early
663 - [CLEANUP] remove unused DEBUG_PARSE_NO_SPEEDUP define
664 - [MEDIUM] http: split request waiter from request processor
665 - [MEDIUM] session: tell analysers what bit they were called for
666 - [MAJOR] http: complete splitting of the remaining stages
667 - [MINOR] report in the proxies the requirements for ACLs
668 - [MINOR] http: rely on proxy->acl_requires to allocate hdr_idx
669 - [MINOR] acl: add HTTP protocol detection (req_proto_http)
670 - [MINOR] prepare callers of session_set_backend to handle errors
671 - [BUG] default ACLs did not properly set the ->requires flag
672 - [MEDIUM] allow a TCP frontend to switch to an HTTP backend
673 - [MINOR] ensure we can jump from swiching rules to http without data
674 - [MINOR] http: take http request timeout from the backend
675 - [MINOR] allow TCP inspection rules to make use of HTTP ACLs
676 - [BUILD] report commit date and not author's date as build date
677 - [MINOR] acl: don't complain anymore when using L7 acls in TCP
678 - [BUG] stream_sock: always shutdown(SHUT_WR) before closing
679 - [BUG] stream_sock: don't stop reading when the poller reports an error
680 - [BUG] config: tcp-request content only accepts "if" or "unless"
681 - [BUG] task: fix possible timer drift after update
682 - [MINOR] apply tcp-smart-connect option for the checks too
683 - [MINOR] stats: better displaying in MSIE
684 - [MINOR] config: improve error reporting in global section
685 - [MINOR] config: improve error reporting in listen sections
686 - [MINOR] config: the "capture" keyword is not allowed in backends
687 - [MINOR] config: improve error reporting when checking configuration
688 - [BUILD] fix a minor build warning on AIX
689 - [BUILD] use "git cmd" instead of "git-cmd"
690 - [CLEANUP] report 2009 not 2008 in the copyright banner.
691 - [MINOR] print usage on the stats sockets upon invalid commands
692 - [MINOR] acl: detect and report potential mistakes in ACLs
693 - [BUILD] fix incorrect printf arg count with tcp_splice
694 - [BUG] fix random pauses on last segment of a series
695 - [BUILD] add support for build under Cygwin
696
Willy Tarreau79158882009-06-09 11:59:08 +02006972009/06/09 : 1.4-dev0
698 - exact copy of 1.3.18
699
Willy Tarreaubeb05ae2009-05-10 20:27:47 +02007002009/05/10 : 1.3.18
701 - [MEDIUM] add support for "balance hdr(name)"
702 - [CLEANUP] give a little bit more information in error message
703 - [MINOR] add X-Original-To: header
704 - [BUG] x-original-to: fix missing initialization to default value
705 - [BUILD] spec file: fix broken pipe during rpmbuild and add man file
706 - [MINOR] improve reporting of misplaced acl/reqxxx rules
707 - [MEDIUM] http: add options to ignore invalid header names
708 - [MEDIUM] http: capture invalid requests/responses even if accepted
709 - [BUILD] add format(printf) to printf-like functions
710 - [MINOR] fix several printf formats and missing arguments
711 - [BUG] stats: total and lbtot are unsigned
712 - [MINOR] fix a few remaining printf-like formats on 64-bit platforms
713 - [CLEANUP] remove unused make option from haproxy.spec
714 - [BUILD] make it possible to pass alternative arch at build time
715 - [MINOR] switch all stat counters to 64-bit
716 - [MEDIUM] ensure we don't recursively call pool_gc2()
717 - [CRITICAL] uninitialized response field can sometimes cause crashes
718 - [BUG] fix wrong pointer arithmetics in HTTP message captures
719 - [MINOR] rhel init script : support the reload operation
720 - [MINOR] add basic signal handling functions
721 - [BUILD] add signal.o to all makefiles
722 - [MEDIUM] call signal_process_queue from run_poll_loop
723 - [MEDIUM] pollers: don't wait if a signal is pending
724 - [MEDIUM] convert all signals to asynchronous signals
725 - [BUG] O(1) pollers should check their FD before closing it
726 - [MINOR] don't close stdio fds twice
727 - [MINOR] add options dontlog-normal and log-separate-errors
728 - [DOC] minor fixes and rearrangements
729 - [BUG] fix parser crash on unconditional tcp content rules
730 - [DOC] rearrange the configuration manual and add a summary
731 - [MINOR] standard: provide a new 'my_strndup' function
732 - [MINOR] implement per-logger log level limitation
733 - [MINOR] compute the max of sessions/s on fe/be/srv
734 - [MINOR] stats: report max sessions/s and limit in CSV export
735 - [MINOR] stats: report max sessions/s and limit in HTML stats
736 - [MINOR] stats/html: use the arial font before helvetica
737
Willy Tarreauf459b422009-03-29 15:26:57 +02007382009/03/29 : 1.3.17
739 - Update specfile to build for v2.6 kernel.
740 - [BUG] reset the stream_interface connect timeout upon connect or error
741 - [BUG] reject unix accepts when connection limit is reached
742 - [MINOR] show sess: report number of calls to each task
743 - [BUG] don't call epoll_ctl() on closed sockets
744 - [BUG] stream_sock: disable I/O on fds reporting an error
745 - [MINOR] sepoll: don't count two events on the same FD.
746 - [MINOR] show sess: report a lot more information about sessions
747 - [BUG] stream_sock: check for shut{r,w} before refreshing some timeouts
748 - [BUG] don't set an expiration date directly from now_ms
749 - [MINOR] implement ulltoh() to write HTML-formatted numbers
750 - [MINOR] stats/html: group digits by 3 to clarify numbers
751 - [BUILD] remove haproxy-small.spec
752 - [BUILD] makefile: remove unused references to linux24eold and EPOLL_CTL_WORKAROUND
753
Willy Tarreau8019ffa2009-03-22 23:46:12 +01007542009/03/22 : 1.3.16
755 - [BUILD] Fixed Makefile for linking pcre
756 - [CONTRIB] selinux policy for haproxy
757 - [MINOR] show errors: encode backslash as well as non-ascii characters
758 - [MINOR] cfgparse: some cleanups in the consistency checks
759 - [MINOR] cfgparse: set backends to "balance roundrobin" by default
760 - [MINOR] tcp-inspect: permit the use of no-delay inspection
761 - [MEDIUM] reverse internal proxy declaration order to match configuration
762 - [CLEANUP] config: catch and report some possibly wrong rule ordering
763 - [BUG] connect timeout is in the stream interface, not the buffer
764 - [BUG] session: errors were not reported in termination flags in TCP mode
765 - [MINOR] tcp_request: let the caller take care of errors and timeouts
766 - [CLEANUP] http: remove some commented out obsolete code in process_response
767 - [MINOR] update ebtree to version 4.1
768 - [MEDIUM] scheduler: get rid of the 4 trees thanks and use ebtree v4.1
769 - [BUG] sched: don't leave 3 lasts tasks unprocessed when niced tasks are present
770 - [BUG] scheduler: fix improper handling of duplicates __task_queue()
771 - [MINOR] sched: permit a task to stay up between calls
772 - [MINOR] task: keep a task count and clean up task creators
773 - [MINOR] stats: report number of tasks (active and running)
774 - [BUG] server check intervals must not be null
775 - [OPTIM] stream_sock: don't retry to read after a large read
776 - [OPTIM] buffer: new BF_READ_DONTWAIT flag reduces EAGAIN rates
777 - [MEDIUM] session: don't resync FSMs on non-interesting changes
778 - [BUG] check for global.maxconn before doing accept()
779 - [OPTIM] sepoll: do not re-check whole list upon accepts
780
Willy Tarreau8185ced2009-03-09 22:45:53 +01007812009/03/09 : 1.3.16-rc2
782 - [BUG] stream_sock: write timeout must be updated when forwarding !
783
Willy Tarreauff63b432009-03-09 01:03:42 +01007842009/03/09 : 1.3.16-rc1
785 - appsessions: cleanup DEBUG_HASH and initialize request_counter
786 - [MINOR] acl: add new keyword "connslots"
787 - [MINOR] cfgparse: fix off-by 2 in error message size
788 - [BUILD] fix build with gcc 4.3
789 - [BUILD] fix MANDIR default location to match documentation
790 - [TESTS] add a debug patch to help trigger the stats bug
791 - [BUG] Flush buffers also where there are exactly 0 bytes left
792 - [MINOR] Allow to specify a domain for a cookie
793 - [BUG/CLEANUP] cookiedomain -> cookie_domain rename + free(p->cookie_domain)
794 - [MEDIUM] Fix memory freeing at exit
795 - [MEDIUM] Fix memory freeing at exit, part 2
796 - [BUG] Fix listen & more of 2 couples <ip>:<port>
797 - [DOC] remove buggy comment for use_backend
798 - [CRITICAL] fix server state tracking: it was O(n!) instead of O(n)
799 - [MEDIUM] add support for URI hash depth and length limits
800 - [MINOR] permit renaming of x-forwarded-for header
801 - [BUILD] fix Makefile.bsd and Makefile.osx for stream_interface
802 - [BUILD] Haproxy won't compile if DEBUG_FULL is defined
803 - [MEDIUM] upgrade to ebtree v4.0
804 - [DOC] update the README file with new build options
805 - [MEDIUM] reduce risk of event starvation in ev_sepoll
806 - [MEDIUM] detect streaming buffers and tag them as such
807 - [MEDIUM] add support for conditional HTTP redirection
808 - [BUILD] make install should depend on haproxy not "all"
809 - [DEBUG] add a TRACE macro to facilitate runtime data extraction
810 - [BUG] event pollers must not wait if a task exists in the run queue
811 - [BUG] queue management: wake oldest request in queues
812 - [BUG] log: reported queue position was offed-by-one
813 - [BUG] fix the dequeuing logic to ensure that all requests get served
814 - [DOC] documentation for the "retries" parameter was missing.
815 - [MEDIUM] implement a monotonic internal clock
816 - [MEDIUM] further improve monotonic clock by check forward jumps
817 - [OPTIM] add branch prediction hints in list manipulations
818 - [MAJOR] replace ultree with ebtree in wait-queues
819 - [BUG] we could segfault during exit while freeing uri_auths
820 - [BUG] wqueue: perform proper timeout comparisons with wrapping values
821 - [MINOR] introduce now_ms, the current date in milliseconds
822 - [BUG] disable buffer read timeout when reading stats
823 - [MEDIUM] rework the wait queue mechanism
824 - [BUILD] change declaration of base64tab to fix build with Intel C++
825 - [OPTIM] shrink wake_expired_tasks() by using task_wakeup()
826 - [MAJOR] use an ebtree instead of a list for the run queue
827 - [MEDIUM] introduce task->nice and boot access to statistics
828 - [OPTIM] task_queue: assume most consecutive timers are equal
829 - [BUILD] silent a warning in unlikely() with gcc 4.x
830 - [MAJOR] convert all expiration timers from timeval to ticks
831 - [BUG] use_backend would not correctly consider "unless"
832 - [TESTS] added test-acl.cfg to test some ACL combinations
833 - [MEDIUM] add support for configuration keyword registration
834 - [MEDIUM] modularize the global "stats" keyword configuration parser
835 - [MINOR] cfgparse: add support for warnings in external functions
836 - [MEDIUM] modularize the "timeout" keyword configuration parser
837 - [MAJOR] implement tcp request content inspection
838 - [MINOR] acl: add a new parsing function: parse_dotted_ver
839 - [MINOR] acl: add req_ssl_ver in TCP, to match an SSL version
840 - [CLEANUP] remove unused include/types/client.h
841 - [CLEANUP] remove many #include <types/xxx> from C files
842 - [CLEANUP] remove dependency on obsolete INTBITS macro
843 - [DOC] document the new "tcp-request" keyword and associated ACLs
844 - [MINOR] acl: add REQ_CONTENT to the list of default acls
845 - [MEDIUM] acl: permit fetch() functions to set the result themselves
846 - [MEDIUM] acl: get rid of dummy values in always_true/always_false
847 - [MINOR] acl: add the "wait_end" acl verb
848 - [MEDIUM] acl: enforce ACL type checking
849 - [MEDIUM] acl: set types on all currently known ACL verbs
850 - [MEDIUM] acl: when possible, report the name and requirements of ACLs in warnings
851 - [CLEANUP] remove 65 useless NULL checks before free
852 - [MEDIUM] memory: update pool_free2() to support NULL pointers
853 - [MEDIUM] buffers: ensure buffer_shut* are properly called upon shutdowns
854 - [MEDIUM] process_srv: rely on buffer flags for client shutdown
855 - [MEDIUM] process_srv: don't rely at all on client state
856 - [MEDIUM] process_cli: don't rely at all on server state
857 - [BUG] fix segfault with url_param + check_post
858 - [BUG] server timeout was not considered in some circumstances
859 - [BUG] client timeout incorrectly rearmed while waiting for server
860 - [MAJOR] kill CL_STINSPECT and CL_STHEADERS (step 1)
861 - [MAJOR] get rid of SV_STANALYZE (step 2)
862 - [MEDIUM] simplify and centralize request timeout cancellation and request forwarding
863 - [MAJOR] completely separate HTTP and TCP states on the request path
864 - [BUG] fix recently introduced loop when client closes early
865 - [MAJOR] get rid of the SV_STHEADERS state
866 - [MAJOR] better separation of response processing and server state
867 - [MAJOR] clearly separate HTTP response processing from TCP server state
868 - [MEDIUM] remove unused references to {CL|SV}_STSHUT*
869 - [MINOR] term_trace: add better instrumentations to trace the code
870 - [BUG] ev_sepoll: closed file descriptors could persist in the spec list
871 - [BUG] process_response must not enable the read FD
872 - [BUG] buffers: remove BF_MAY_CONNECT and fix forwarding issue
873 - [BUG] process_response: do not touch srv_state
874 - [BUG] maintain_proxies must not disable backends
875 - [CLEANUP] get rid of BF_SHUT*_PENDING
876 - [MEDIUM] buffers: add BF_EMPTY and BF_FULL to remove dependency on req/rep->l
877 - [MAJOR] process_session: rely only on buffer flags
878 - [MEDIUM] use buffer->wex instead of buffer->cex for connect timeout
879 - [MEDIUM] centralize buffer timeout checks at the top of process_session
880 - [MINOR] ensure the termination flags are set by process_xxx
881 - [MEDIUM] session: move the analysis bit field to the buffer
882 - [OPTIM] process_cli/process_srv: reduce the number of tests
883 - [BUG] regparm is broken on gcc < 3
884 - [BUILD] fix warning in proto_tcp.c with gcc >= 4
885 - [MEDIUM] merge inspect_exp and txn->exp into request buffer
886 - [BUG] process_cli/process_srv: don't call shutdown when already done
887 - [BUG] process_request: HTTP body analysis must return zero if missing data
888 - [TESTS] test-fsm: 22 regression tests for state machines
889 - [BUG] Fix empty X-Forwarded-For header name when set in defaults section
890 - [BUG] fix harmless but wrong fd insertion sequence
891 - [MEDIUM] make it possible for analysers to follow the whole session
892 - [MAJOR] rework of the server FSM
893 - [OPTIM] remove useless fd_set(read) upon shutdown(write)
894 - [MEDIUM] massive cleanup of process_srv()
895 - [MEDIUM] second level of code cleanup for process_srv_data
896 - [MEDIUM] third cleanup and optimization of process_srv_data()
897 - [MEDIUM] process_srv_data: ensure that we always correctly re-arm timeouts
898 - [MEDIUM] stream_sock_process_data moved to stream_sock.c
899 - [MAJOR] make the client side use stream_sock_process_data()
900 - [MEDIUM] split stream_sock_process_data
901 - [OPTIM] stream_sock_read must check for null-reads more often
902 - [MINOR] only call flow analysers when their read side is connected.
903 - [MEDIUM] reintroduce BF_HIJACK with produce_content
904 - [MINOR] re-arrange buffer flags and rename some of them
905 - [MINOR] do not check for BF_SHUTR when computing write timeout
906 - [OPTIM] ev_sepoll: detect newly created FDs and check them once
907 - [OPTIM] reduce the number of calls to task_wakeup()
908 - [OPTIM] force inlining of large functions with gcc >= 3
909 - [MEDIUM] indicate a reason for a task wakeup
910 - [MINOR] change type of fdtab[]->owner to void*
911 - [MAJOR] make stream sockets aware of the stream interface
912 - [MEDIUM] stream interface: add the ->shutw method as well as in and out buffers
913 - [MEDIUM] buffers: add BF_READ_ATTACHED and BF_ANA_TIMEOUT
914 - [MEDIUM] process_session: make use of the new buffer flags
915 - [CLEANUP] process_session: move debug outputs out of the critical loop
916 - [MEDIUM] move QUEUE and TAR timers to stream interfaces
917 - [OPTIM] add compiler hints in tick_is_expired()
918 - [MINOR] add buffer_check_timeouts() to check what timeouts have fired.
919 - [MEDIUM] use buffer_check_timeouts instead of stream_sock_check_timeouts()
920 - [MINOR] add an expiration flag to the stream_sock_interface
921 - [MAJOR] migrate the connection logic to stream interface
922 - [MAJOR] add a connection error state to the stream_interface
923 - [MEDIUM] add the SN_CURR_SESS flag to the session to track open sessions
924 - [MEDIUM] continue layering cleanups.
925 - [MEDIUM] stream_interface: added a DISconnected state between CON/EST and CLO
926 - [MEDIUM] remove stream_sock_update_data()
927 - [MINOR] maintain a global session list in order to ease debugging
928 - [BUG] shutw must imply close during a connect
929 - [MEDIUM] process shutw during connection attempt
930 - [MEDIUM] make the stream interface control the SHUT{R,W} bits
931 - [MAJOR] complete layer4/7 separation
932 - [CLEANUP] move the session-related functions to session.c
933 - [MINOR] call session->do_log() for logging
934 - [MINOR] replace the ambiguous client_return function by stream_int_return
935 - [MINOR] replace client_retnclose() with stream_int_retnclose()
936 - [MINOR] replace srv_close_with_err() with http_server_error()
937 - [MEDIUM] make the http server error function a pointer in the session
938 - [CLEANUP] session.c: removed some migration left-overs in sess_establish()
939 - [MINOR] stream_sock_data_finish() should not expose fd
940 - [MEDIUM] extract TCP request processing from HTTP
941 - [MEDIUM] extract the HTTP tarpit code from process_request().
942 - [MEDIUM] move the HTTP request body analyser out of process_request().
943 - [MEDIUM] rename process_request to http_process_request
944 - [BUG] fix forgotten server session counter
945 - [MINOR] declare process_session in session.h, not proto_http.h
946 - [MEDIUM] first pass of lifting to proto_uxst.c:uxst_event_accept()
947 - [MINOR] add an analyser code for UNIX stats request
948 - [MINOR] pre-set analyser flags on the listener at registration time
949 - [BUG] do not forward close from cons to prod with analysers
950 - [MEDIUM] ensure that sock->shutw() also closes read for init states
951 - [MINOR] add an analyser state in struct session
952 - [MAJOR] make unix sockets work again with stats
953 - [MEDIUM] remove cli_fd, srv_fd, cli_state and srv_state from the session
954 - [MINOR] move the listener reference from fd to session
955 - [MEDIUM] reference the current hijack function in the buffer itself
956 - [MINOR] slightly rebalance stats_dump_{raw,http}
957 - [MINOR] add a new back-reference type : struct bref
958 - [MINOR] add back-references to sessions for later use by a dumper.
959 - [MEDIUM] add support for "show sess" in unix stats socket
960 - [BUG] do not release the connection slot during a retry
961 - [BUG] dynamic connection throttling could return a max of zero conns
962 - [BUG] do not try to pause backends during reload
963 - [BUG] ensure that listeners from disabled proxies are correctly unbound.
964 - [BUG] acl-related keywords are not allowed in defaults sections
965 - [BUG] cookie capture is declared in the frontend but checked on the backend
966 - [BUG] critical errors should be reported even in daemon mode
967 - [MINOR] redirect: add support for the "drop-query" option
968 - [MINOR] redirect: add support for "set-cookie" and "clear-cookie"
969 - [MINOR] redirect: in prefix mode a "/" means not to change the URI
970 - [BUG] do not dequeue requests on a dead server
971 - [BUG] do not dequeue the backend's pending connections on a dead server
972 - [MINOR] stats: indicate if a task is running in "show sess"
973 - [BUG] check timeout must not be changed if timeout.check is not set
974 - [BUG] "option transparent" is for backend, not frontend !
975 - [MINOR] transfer errors were not reported anymore in data phase
976 - [MEDIUM] add a send limit to a buffer
977 - [MEDIUM] don't report buffer timeout when there is I/O activity
978 - [MEDIUM] indicate when we don't care about read timeout
979 - [MINOR] add flags to indicate when a stream interface is waiting for space/data
980 - [MEDIUM] enable inter-stream_interface wakeup calls
981 - [MAJOR] implement autonomous inter-socket forwarding
982 - [MINOR] add the splice_len member to the buffer struct in preparation of splice support
983 - [MEDIUM] stream_sock: factor out the return path in case of no-writes
984 - [MEDIUM] i/o: rework ->to_forward and ->send_max
985 - [OPTIM] stream_sock: do not ask for polling on EAGAIN if we have read
986 - [OPTIM] buffer: replace rlim by max_len
987 - [OPTIM] stream_sock: factor out the buffer full handling out of the loop
988 - [CLEANUP] replace a few occurrences of (flags & X) && !(flags & Y)
989 - [CLEANUP] stream_sock: move the write-nothing condition out of the loop
990 - [MEDIUM] split stream_sock_write() into callback and core functions
991 - [MEDIUM] stream_sock_read: call ->chk_snd whenever there are data pending
992 - [MINOR] stream_sock: fix a few wrong empty calculations
993 - [MEDIUM] stream_sock: try to send pending data on chk_snd()
994 - [MINOR] global.maxpipes: add the ability to reserve file descriptors for pipes
995 - [MEDIUM] splice: add configuration options and set global.maxpipes
996 - [MINOR] introduce structures required to support Linux kernel splicing
997 - [MEDIUM] add definitions for Linux kernel splicing
998 - [MAJOR] complete support for linux 2.6 kernel splicing
999 - [BUG] reserve some pipes for backends with splice enabled
1000 - [MEDIUM] splice: add hints to support older buggy kernels
1001 - [MEDIUM] introduce pipe pools
1002 - [MEDIUM] splice: make use of pipe pools
1003 - [STATS] report pipe usage in the statistics
1004 - [OPTIM] make global.maxpipes default to global.maxconn/4 when not specified
1005 - [BUILD] fix snapshot date extraction with negative timezones
1006 - [MEDIUM] move global tuning options to the global structure
1007 - [MEDIUM] splice: add the global "nosplice" option
1008 - [BUILD] add USE_LINUX_SPLICE to enable LINUX_SPLICE on linux 2.6
1009 - [BUG] we must not exit if protocol binding only returns a warning
1010 - [MINOR] add support for bind interface name
1011 - [BUG] inform the user when root is expected but not set
1012 - [MEDIUM] add support for source interface binding
1013 - [MEDIUM] add support for source interface binding at the server level
1014 - [MEDIUM] implement bind-process to limit service presence by process
1015 - [DOC] document maxpipes, nosplice, option splice-{auto,request,response}
1016 - [DOC] filled the logging section of the configuration manual
1017 - [DOC] document HTTP status codes
1018 - [DOC] document a few missing info about errorfile
1019 - [BUG] fix random memory corruption using "show sess"
1020 - [BUG] fix unix socket processing of interrupted output
1021 - [DOC] add diagrams of queuing and future ACL design
1022 - [BUILD] proto_http did not build on gcc-2.95
1023 - [BUG] the "source" keyword must first clear optional settings
1024 - [BUG] global.tune.maxaccept must be limited even in mono-process mode
1025 - [MINOR] ensure that http_msg_analyzer updates pointer to invalid char
1026 - [MEDIUM] store a complete dump of request and response errors in proxies
1027 - [MEDIUM] implement error dump on unix socket with "show errors"
1028 - [DOC] document "show errors"
1029 - [MINOR] errors dump must use user-visible date, not internal date.
1030 - [MINOR] time: add __usec_to_1024th to convert usecs to 1024th of second
1031 - [MINOR] add curr_sec_ms and curr_sec_ms_scaled for current second.
1032 - [MEDIUM] measure and report session rate on frontend, backends and servers
1033 - [BUG] the "connslots" keyword was matched as "connlots"
1034 - [MINOR] acl: add 2 new verbs: fe_sess_rate and be_sess_rate
1035 - [MEDIUM] implement "rate-limit sessions" for the frontend
1036 - [BUG] interface binding: length must include the trailing zero
1037 - [BUG] typo in timeout error reporting : report *res and not *err
1038 - [OPTIM] maintain_proxies: only wake up when the frontend will be ready
1039 - [OPTIM] rate-limit: cleaner behaviour on low rates and reduce consumption
1040 - [BUG] switch server-side stream interface to close in case of abort
1041 - [CLEANUP] remove last references to term_trace
1042 - [OPTIM] freq_ctr: do not rotate the counters when reading
1043 - [BUG] disable any analysers for monitoring requests
1044 - [BUG] rate-limit in defaults section was ignored
1045 - [BUG] task: fix handling of duplicate keys
1046 - [OPTIM] task: don't unlink a task from a wait queue when waking it up
1047 - [OPTIM] displace tasks in the wait queue only if absolutely needed
1048 - [MEDIUM] minor update to the task api: let the scheduler queue itself
1049 - [BUG] event_accept() must always wake the task up, even in health mode
1050 - [CLEANUP] task: distinguish between clock ticks and timers
1051 - [OPTIM] task: reduce the number of calls to task_queue()
1052 - [OPTIM] do not re-check req buffer when only response has changed
1053 - [CLEANUP] don't enable kernel splicing when socket is closed
1054 - [CLEANUP] buffer_flush() was misleading, rename it as buffer_erase
1055 - [MINOR] buffers: implement buffer_flush()
1056 - [MEDIUM] rearrange forwarding condition to enable splice during analysis
1057 - [BUILD] build fixes for Solaris
1058 - [BUILD] proto_http did not build on gcc-2.95 (again)
1059 - [CONTRIB] halog: fast log parser for haproxy
1060 - [CONTRIB] halog: faster fgets() and add support for percentile reporting
1061
Willy Tarreau7b4c5ae2008-04-19 21:06:14 +020010622008/04/19 : 1.3.15
1063 - [BUILD] Added support for 'make install'
1064 - [BUILD] Added 'install-man' make target for installing the man page
1065 - [BUILD] Added 'install-bin' make target
1066 - [BUILD] Added 'install-doc' make target
1067 - [BUILD] Removed "/" after '$(DESTDIR)' in install targets
1068 - [BUILD] Changed 'install' target to install the binaries first
1069 - [BUILD] Replace hardcoded 'LD = gcc' with 'LD = $(CC)'
1070 - [MEDIUM]: Inversion for options
1071 - [MEDIUM]: Count retries and redispatches also for servers, fix redistribute_pending, extend logs, %d->%u cleanup
1072 - [BUG]: Restore clearing t->logs.bytes
1073 - [MEDIUM]: rework checks handling
1074 - [DOC] Update a "contrib" file with a hint about a scheme used for formathing subjects
1075 - [MEDIUM] Implement "track [<backend>/]<server>"
1076 - [MINOR] Implement persistent id for proxies and servers
1077 - [BUG] Don't increment server connections too much + fix retries
1078 - [MEDIUM]: Prevent redispatcher from selecting the same server, version #3
1079 - [MAJOR] proto_uxst rework -> SNMP support
1080 - [BUG] appsession lookup in URL does not work
1081 - [BUG] transparent proxy address was ignored in backend
1082 - [BUG] hot reconfiguration failed because of a wrong error check
1083 - [DOC] big update to the configuration manual
1084 - [DOC] large update to the configuration manual
1085 - [DOC] document more options
1086 - [BUILD] major rework of the GNU Makefile
1087 - [STATS] add support for "show info" on the unix socket
1088 - [DOC] document options forwardfor to logasap
1089 - [MINOR] add support for the "backlog" parameter
1090 - [OPTIM] introduce global parameter "tune.maxaccept"
1091 - [MEDIUM] introduce "timeout http-request" in frontends
1092 - [MINOR] tarpit timeout is also allowed in backends
1093 - [BUG] increment server connections for each connect()
1094 - [MEDIUM] add a turn-around state of one second after a connection failure
1095 - [BUG] fix typo in redispatched connection
1096 - [DOC] document options nolinger to ssl-hello-chk
1097 - [DOC] added documentation for "option tcplog" to "use_backend"
1098 - [BUG] connect_server: server might not exist when sending error report
1099 - [MEDIUM] support fully transparent proxy on Linux (USE_LINUX_TPROXY)
1100 - [MEDIUM] add non-local bind to connect() on Linux
1101 - [MINOR] add transparent proxy support for balabit's Tproxy v4
1102 - [BUG] use backend's source and not server's source with tproxy
1103 - [BUG] fix overlapping server flags
1104 - [MEDIUM] fix server health checks source address selection
1105 - [BUG] build failed on CONFIG_HAP_LINUX_TPROXY without CONFIG_HAP_CTTPROXY
1106 - [DOC] added "server", "source" and "stats" keywords
1107 - [DOC] all server parameters have been documented
1108 - [DOC] document all req* and rsp* keywords.
1109 - [DOC] added documentation about HTTP header manipulations
1110 - [BUG] log response byte count, not request
1111 - [BUILD] code did not build in full debug mode
1112 - [BUG] fix truncated responses with sepoll
1113 - [MINOR] use s->frt_addr as the server's address in transparent proxy
1114 - [MINOR] fix configuration hint about timeouts
1115 - [DOC] minor cleanup of the doc and notice to contributors
1116 - [MINOR] report correct section type for unknown keywords.
1117 - [BUILD] update MacOS Makefile to build on newer versions
1118 - [DOC] fix erroneous "useallbackups" option in the doc
1119 - [DOC] applied small fixes from early readers
1120 - [MINOR] add configuration support for "redir" server keyword
1121 - [MEDIUM] completely implement the server redirection method
1122 - [TESTS] add a test case for the server redirection mechanism
1123 - [DOC] add a configuration entry for "server ... redir <prefix>"
1124 - [BUILD] backend.c and checks.c did not build without tproxy !
1125 - Revert "[BUILD] backend.c and checks.c did not build without tproxy !"
1126 - [BUILD] backend.c and checks.c did not build without tproxy !
1127 - [OPTIM] used unsigned ints for HTTP state and message offsets
1128 - [OPTIM] GCC4's builtin_expect() is suboptimal
1129 - [BUG] failed conns were sometimes incremented in the frontend!
1130 - [BUG] timeout.check was not pre-set to eternity
1131 - [TESTS] add test-pollers.cfg to easily report pollers in use
1132 - [BUG] do not apply timeout.connect in checks if unset
1133 - [BUILD] ensure that makefile understands USE_DLMALLOC=1
1134 - [MINOR] silent gcc for a wrong warning
1135 - [CLEANUP] update .gitignore to ignore more temporary files
1136 - [CLEANUP] report dlmalloc's source path only if explictly specified
1137 - [BUG] str2sun could leak a small buffer in case of error during parsing
1138 - [BUG] option allbackups was not working anymore in roundrobin mode
1139 - [MAJOR] implementation of the "leastconn" load balancing algorithm
1140 - [BUILD] ensure that users don't build without setting the target anymore.
1141 - [DOC] document the leastconn LB algo
1142 - [MEDIUM] fix stats socket limitation to 16 kB
1143 - [DOC] fix unescaped space in httpchk example.
1144 - [BUG] fix double-decrement of server connections
1145 - [TESTS] add a test case for port mapping
1146 - [TESTS] add a benchmark for integer hashing
1147 - [TESTS] add new methods in ip-hash test file
1148 - [MAJOR] implement parameter hashing for POST requests
1149
Willy Tarreaue5b77e82007-12-06 01:25:44 +010011502007/12/06 : 1.3.14
1151 - New option http_proxy (Alexandre Cassen)
1152 - add support for "maxqueue" to limit server queue overload (Elijah Epifanov)
1153 - Check for duplicated conflicting proxies (Krzysztof Oledzki)
1154 - stats: report server and backend cumulated downtime (Krzysztof Oledzki)
1155 - use backends only with use_backend directive (Krzysztof Oledzki)
1156 - Handle long lines properly (Krzysztof Oledzki)
1157 - Implement and use generic findproxy and relax duplicated proxy check (Krzysztof Oledzki)
1158 - continous statistics (Krzysztof Oledzki)
1159 - add support for logging via a UNIX socket (Robert Tsai)
1160 - fix error checking in strl2ic/strl2uic()
1161 - fix calls to localtime()
1162 - provide easier-to-use ultoa_* functions
1163 - provide easy-to-use limit_r and LIM2A* macros
1164 - add a simple test for the status page
1165 - move error codes to common/errors.h
1166 - silent warning about LIST_* being redefined on OpenBSD
1167 - add socket address length to the protocols
1168 - group PR_O_BALANCE_* bits into a checkable value
1169 - externalize the "balance" option parser to backend.c
1170 - introduce the "url_param" balance method
1171 - make default_backend work in TCP mode too
1172 - disable warning about localtime_r on Solaris
1173 - adjust error messages about conflicting proxies
1174 - avoid calling some layer7 functions if not needed
1175 - simplify error path in event_accept()
1176 - add an options field to the listeners
1177 - added a new state to listeners
1178 - unbind_listener() must use fd_delete() and not close()
1179 - add a generic unbind_listener() primitive
1180 - add a generic delete_listener() primitive
1181 - add a generic unbind_all_listeners() primitive
1182 - create proto_tcp and move initialization of proxy listeners
1183 - stats: report numerical process ID, proxy ID and server ID
1184 - relative_pid was not initialized
1185 - missing header names in raw stats output
1186 - fix missing parenthesis in check_response_for_cacheability
1187 - small optimization on session_process_counters()
1188 - merge ebtree version 3.0
1189 - make ebtree headers multiple-include compatible
1190 - ebtree: include config.h for REGPRM*
1191 - differentiate between generic LB params and map-specific ones
1192 - add a weight divisor to the struct proxy
1193 - implement the Fast Weighted Round Robin (FWRR) algo
1194 - include filltab25.c to experiment on FWRR for dynamic weights
1195 - merge test-fwrr.cfg to validate dynamic weights
1196 - move the load balancing algorithm to be->lbprm.algo
1197 - change server check result to a bit field
1198 - implement "http-check disable-on-404" for graceful shutdown
1199 - secure the calling conditions of ->set_server_status_{up,down}
1200 - report disabled servers as "NOLB" when they are still UP
1201 - document the "http-check disable-on-404" option
1202 - http-check disable-on-404 is not limited to HTTP mode
1203 - add a test file for disable-on-404
1204 - use distinct bits per load-balancing algorithm type
1205 - implement the slowstart parameter for servers
1206 - document the server's slowstart parameter
1207 - stats: report the server warm up status in a "throttle" column
1208 - fix 2 minor issues on AIX
1209 - add the "nbsrv" ACL verb
1210 - add the "fail" condition to monitor requests
1211 - remove a warning from gcc due to htons() in standard.c
1212 - fwrr: ensure that we never overflow in placements
1213 - store the build options to report with -vv
1214 - fix the status return of the init script (R.I. Pienaar)
1215 - stats: real time monitoring script for unix socket (Prizee)
1216 - document "nbsrv" and "monitor fail"
1217 - restrict the set of allowed characters for identifiers
1218 - implement a time parsing function
1219 - add support for time units in the configuration
1220 - add a bit of documentation about timers
1221 - introduce separation between contimeout, and tarpit + queue
1222 - introduce the "timeout" keyword
1223 - grouped all timeouts in one structure
1224 - slowstart is in ms, not seconds
1225 - slowstart: ensure we don't start with a null weight
1226 - report the number of times each server was selected
1227 - fix build on AIX due to recent log changes
1228 - fix build on Solaris due to recent log changes
1229
Willy Tarreaue855f422007-10-18 22:38:22 +020012302007/10/18 : 1.3.13
1231 - replace the code under O'Reilly license (Arnaud Cornet)
1232 - add a small man page (Arnaud Cornet)
1233 - stats: report haproxy's version by default (Krzysztof Oledzki)
1234 - stats: count server retries and redispatches (Krzysztof Oledzki)
1235 - core: added easy support for Doug Lea's malloc (dlmalloc)
1236 - core: fade out memory usage when stopping proxies
1237 - core: moved the sockaddr pointer to the fdtab structure
1238 - core: add generic protocol support
1239 - core: implement client-side support for PF_UNIX sockets
1240 - stats: implement the CSV output
1241 - stats: add a link to the CSV export HTML page
1242 - stats: implement the statistics output on a unix socket
1243 - config: introduce the "stats" keyword in global section
1244 - build: centralize version and date into one file for each
1245 - tests: added a new hash algorithm
1246
12472007/10/18 : 1.3.12.3
1248 - add the "nolinger" option to disable data lingering (Alexandre Cassen)
1249 - fix double-free during clean exit (Krzysztof Oledzki)
1250 - prevent the system from sending an RST when closing health-checks
1251 (Krzysztof Oledzki)
1252 - do not add a cache-control header when on non-cacheable responses
1253 (Krzysztof Oledzki)
1254 - spread health checks even more (Krzysztof Oledzki)
1255 - stats: scope "." must match the backend and not the frontend
1256 - fixed call to chroot() during startup
1257 - fix wrong timeout computation in event_accept()
1258 - remove condition for exit() under fork() failure
1259
12602007/09/20 : 1.3.12.2
1261 - fix configuration sanity checks for TCP listeners
1262 - set the log socket receive window to zero bytes
1263 - pre-initialize timeouts to infinity, not zero
1264 - fix the SIGHUP message not to alert on server-less proxies
1265 - timeouts and retries could be ignored when switching backend
1266 - added a file to check that "retries" works.
1267 - O'Reilly has clarified its license
1268
12692007/09/05 : 1.3.12.1
1270 - spec I/O: fix allocations of spec entries for an FD
1271 - ensure we never overflow in chunk_printf()
1272 - improve behaviour with large number of servers per proxy
1273 - add support for "stats refresh <interval>"
1274 - stats page: added links for 'refresh' and 'hide down'
1275 - fix backend's weight in the stats page.
1276 - the "stats" keyword is not allowed in a pure frontend.
1277 - provide a test configuration file for stats and checks
1278
Willy Tarreaub21152b2007-06-17 23:41:40 +020012792007/06/17 : 1.3.12
1280 - fix segfault at exit when using captures
1281 - bug: negation in ACL conds was not cleared between terms
1282 - errorfile: use a local file to feed error messages
1283 - acl: support '-i' to ignore case when matching
1284 - acl: smarter integer comparison with operators eq,lt,gt,le,ge
1285 - acl: support maching on 'path' component
1286 - acl: implement matching on header values
1287 - acl: distinguish between request and response headers
1288 - acl: permit to return any header when no name specified
1289 - acl: provide default ACLs
1290 - added the 'use_backend' keyword for full content-switching
1291 - acl: specify the direction during fetches
1292 - acl: provide the argument length for fetch functions
1293 - acl: provide a reference to the expr to fetch()
1294 - improve memory freeing upon exit
1295 - str2net() must not change the const char *
1296 - shut warnings 'is*' macros from ctype.h on solaris
1297
Willy Tarreaua3503e02007-06-03 17:27:07 +020012982007/06/03 : 1.3.11.4
1299 - do not re-arm read timeout in SHUTR state !
1300 - optimize I/O by detecting system starvation
1301 - the epoll FD must not be shared between processes
1302 - limit the number of events returned by *poll*
1303
Willy Tarreau3c6fc072007-05-14 14:40:25 +020013042007/05/14 : 1.3.11.3
1305 - pre-initialize timeouts with tv_eternity during parsing
1306
Willy Tarreaufc273c22007-05-14 03:42:47 +020013072007/05/14 : 1.3.11.2
1308 - fixed broken health-checks since switch to timeval
1309
Willy Tarreau3c5340c2007-05-14 03:18:43 +020013102007/05/14 : 1.3.11.1
1311 - fixed ev_kqueue which was forgotten during the switch to timeval
1312 - allowed null timeouts for past events in select
1313
Willy Tarreau544eb402007-05-14 02:42:33 +020013142007/05/14 : 1.3.11
1315 - fixed ev_sepoll again by rewriting the state machine
1316 - switched all timeouts to timevals instead of milliseconds
1317 - improved memory management using mempools v2.
1318 - several minor optimizations
1319
Willy Tarreau9ca931f2007-05-10 07:51:17 +020013202007/05/09 : 1.3.10.2
1321 - fixed build on OpenBSD (missing types.h)
1322
Willy Tarreau13398d32007-05-09 22:58:28 +020013232007/05/09 : 1.3.10.1
1324 - fixed sepoll transition matrix (two states were missing)
1325
Willy Tarreau61beedf2007-05-09 01:44:58 +020013262007/05/08 : 1.3.10
1327 - several fixes in ev_sepoll
1328 - fixed some expiration dates on some tasks
1329 - fixed a bug in connection establishment detection due to speculative I/O
1330 - fixed rare bug occuring on TCP with early close (reported by Andy Smith)
1331 - implemented URI hashing algorithm (Guillaume Dallaire)
1332 - implemented SMTP health checks (Peter van Dijk)
1333 - replaced the rbtree with ul2tree from old scheduler project
1334 - new framework for generic ACL support
1335 - added the 'acl' and 'block' keywords to the config language
1336 - added several ACL criteria and matches (IP, port, URI, ...)
1337 - cleaned up and better modularization for some time functions
1338 - fixed list macros
1339 - fixed useless memory allocation in str2net()
1340 - store the original destination address in the session
1341
Willy Tarreau6e0433f2007-04-16 01:18:12 +020013422007/04/15 : 1.3.9
1343 - modularized the polling mechanisms and use function pointers instead
1344 of macros at many places
1345 - implemented support for FreeBSD's kqueue() polling mechanism
1346 - fixed a warning on OpenBSD : MIN/MAX redefined
1347 - change socket registration order at startup to accomodate kqueue.
1348 - several makefile cleanups to support old shells
1349 - fix build with limits.h once for all
1350 - ev_epoll: do not rely on fd_sets anymore, use changes stacks instead.
1351 - fdtab now holds the results of polling
1352 - implemented support for speculative I/O processing with epoll()
1353 - remove useless calls to shutdown(SHUT_RD), resulting in small speed boost
1354 - auto-registering of pollers at load time
1355
Willy Tarreau42c76592007-04-03 20:30:13 +020013562007/04/03 : 1.3.8.2
1357 - rewriting either the status line or request line could crash the
1358 process due to a pointer which ought to be reset before parsing.
1359 - rewriting the status line in the response did not work, it caused
1360 a 502 Bad Gateway due to an erroneous state during parsing
1361
Willy Tarreauef6d7612007-04-01 11:06:22 +020013622007/04/01 : 1.3.8.1
1363 - fix reqadd when no option httpclose is used.
1364 - removed now unused fiprm and beprm from proxies
1365 - split logs into two versions : TCP and HTTP
1366 - added some docs about http headers storage and acls
1367 - added a VIM script for syntax color highlighting (Bruno Michel)
1368
Willy Tarreaud661cc02007-03-26 00:24:56 +020013692007/03/25 : 1.3.8
1370 - fixed several bugs which might have caused a crash with bad configs
1371 - several optimizations in header processing
1372 - many progresses towards transaction-based processing
1373 - option forwardfor may be used in frontends
1374 - completed HTTP response processing
1375 - some code refactoring between request and response processing
1376 - new HTTP header manipulation functions
1377 - optimizations on the recv() patch to reduce CPU usage under very
1378 high data rates.
1379 - more user-friendly help about the 'usesrc' keyword (CTTPROXY)
1380 - username/groupname support from Marcus Rueckert
1381 - added the "except" keyword to the "forwardfor" option (Bryan German)
1382 - support for health-checks on other addresses (Fabrice Dulaunoy)
1383 - makefile for MacOS 10.4 / Darwin (Dan Zinngrabe)
1384 - do not insert "Connection: close" in HTTP/1.0 messages
1385
Willy Tarreau9cabf702007-01-26 23:49:01 +010013862007/01/26 : 1.3.7
1387 - fix critical bug introduced with 1.3.6 : an empty request header
1388 may lead to a crash due to missing pointer assignment
1389 - hdr_idx might be left uninitialized in debug mode
1390 - fixed build on FreeBSD due to missing fd_set declaration
1391
Willy Tarreaue7a24382007-01-22 08:57:44 +010013922007/01/22 : 1.3.6.1
1393 - change in the header chaining broke cookies and authentication
1394
Willy Tarreau49e1ee82007-01-22 00:56:46 +010013952007/01/22 : 1.3.6
1396 - stats now support the HEAD method too
1397 - extracted http request from the session
1398 - huge rework of the HTTP parser which is now a 28-state FSM.
1399 - linux-style likely/unlikely macros for optimization hints
1400 - do not create a server socket when there's no server
1401 - imported lots of docs
1402
Willy Tarreau5871f8e2007-01-07 02:47:01 +010014032007/01/07 : 1.3.5
1404 - stats: swap color sets for active and backup servers
1405 - try to guess server check port when unset
1406 - added complete support and doc for TCP Splicing
1407 - replace the wait-queue linked list with an rbtree.
1408 - a few bugfixes and cleanups
1409
Willy Tarreau85270da2007-01-02 00:59:39 +010014102007/01/02 : 1.3.4
1411 - support for cttproxy on the server side to present the client
1412 address to the server.
1413 - added support for SO_REUSEPORT on Linux (needs kernel patch)
1414 - new RFC2616-compliant HTTP request parser with header indexing
1415 - split proxies in frontends, rulesets and backends
1416 - implemented the 'req[i]setbe' to select a backend depending
1417 on the contents
1418 - added the 'default_backend' keyword to select a default BE.
1419 - new stats page featuring FEs and BEs + bytes in both dirs
1420 - improved log format to indicate the backend and the time in ms.
1421 - lots of cleanups
1422
Willy Tarreau9c9fea42006-10-16 00:03:35 +020014232006/10/15 : 1.3.3
1424 - fix broken redispatch option in case the connection has already
1425 been marked "in progress" (ie: nearly always).
1426 - support regparm on x86 to speed up some often called functions
1427 - removed a few useless calls to gettimeofday() in log functions.
1428 - lots of 'const char*' cleanups
1429 - turn every FD_* into functions which are faster on recent CPUs
1430
Willy Tarreau690f9aa2006-09-03 11:23:06 +020014312006/09/03 : 1.3.2
1432 - started the changes towards I/O completion callbacks. stream_sock* have
1433 replaced event_*.
1434 - added the new "reqtarpit" and "reqitarpit" protection features
1435
Willy Tarreau8f2b8552006-07-09 17:11:39 +020014362006/07/09 : 1.3.1 (1.2.15)
1437 - now, haproxy warns about missing timeout during startup to try to
1438 eliminate all those buggy configurations.
1439 - added "Content-Type: text/html" in responses wherever appropriate, as
1440 suggested by Cameron Simpson.
1441 - implemented "option ssl-hello-chk" to use SSLv3 CLIENT HELLO messages to
1442 test server's health
1443 - implemented "monitor-uri" so that haproxy can reply to a specific URI with
1444 an "HTTP/1.0 200 OK" response. This is useful to validate multiple proxies
1445 at once.
1446
Willy Tarreaub9e98b62006-07-03 10:32:46 +020014472006/06/29 : 1.3.0
1448 - exploded the whole file into multiple .c and .h. No functionnal
Willy Tarreau8f2b8552006-07-09 17:11:39 +02001449 difference is expected at all.
1450 - fixed a bug by which neither stats nor error messages could be returned if
1451 'clitimeout' was missing.
Willy Tarreaub9e98b62006-07-03 10:32:46 +02001452
willy tarreau7e6328d2006-05-21 23:26:20 +020014532006/05/21 : 1.2.14
1454 - new HTML status report with the 'stats' keyword.
1455 - added the 'abortonclose' option to better resist traffic surges
1456 - implemented dynamic traffic regulation with the 'minconn' option
1457 - show request time on denied requests
1458 - definitely fixed hot reconf on OpenBSD by the use of SO_REUSEPORT
1459 - now a proxy instance is allowed to run without servers, which is
1460 useful to dedicate one instance to stats
1461 - added lots of error counters
1462 - a missing parenthesis preventd matching of cacheable cookies
1463 - a missing parenthesis in poll_loop() might have caused missed events.
1464
Willy TARREAU4404b7e2006-05-14 10:00:09 +020014652006/05/14 : 1.2.13.1
1466 - an uninitialized field in the struct session could cause a crash when
1467 the session was freed. This has been encountered on Solaris only.
1468 - Solaris and OpenBSD no not support shutdown() on listening socket. Let's
1469 be nice to them by performing a soft stop if pause fails.
1470
willy tarreauc3a2e072006-05-13 18:51:38 +020014712006/05/13 : 1.2.13
1472 - 'maxconn' server parameter to do per-server session limitation
1473 - queueing to support non-blocking session limitation
1474 - fixed removal of cookies for cookie-less servers such as backup servers
1475 - two separate wait queues for expirable and non-expirable tasks provide
1476 better performance with lots of sessions.
1477 - some code cleanups and performance improvements
1478 - made state dumps a bit more verbose
1479 - fixed missing checks for NULL srv in dispatch mode
1480 - load balancing on backup servers was not possible in source hash mode.
1481 - two session flags shared the same bit, but fortunately they were not
1482 compatible.
1483
willy tarreauc0d4bbd2006-04-15 21:47:50 +020014842006/04/15 : 1.2.12
1485 Very few changes preparing for more important changes to support per-server
1486 session limitations and queueing :
1487 - ignore leading empty lines in HTTP requests as suggested by RFC2616.
1488 - added the 'weight' parameter to the servers, limited to 1..256. It applies
1489 to roundrobin and source hash.
1490 - the optional '-s' option could clobber '-st' and '-sf' if compiled in.
1491
willy tarreaue0dd2692006-03-30 16:27:34 +020014922006/03/30 : 1.2.11.1
1493 - under some conditions, it might have been possible that when the
1494 last dead server became available, it would not have been used
1495 till another one would have changed state. Could not be reproduced
1496 at all, however seems possible from the code.
1497
willy tarreaud2058dc2006-03-25 20:35:41 +010014982006/03/25 : 1.2.11
1499 - added the '-db' command-line option to disable backgrounding.
1500 - added the -sf/-st command-line arguments which are used to specify
1501 a list of pids to send a FINISH or TERMINATE signal upon startup.
1502 They will also be asked to release their port if a bind fails.
1503 - reworked the startup mechanism to allow the sending of a signal to a list
1504 of old pids if a socket cannot be bound, with a retry for a limited amount
1505 of time (1 second by default).
1506 - added the ability to enforce limits on memory usage.
1507 - added the 'source' load-balancing algorithm which uses the source IP(v4|v6)
1508 - re-architectured the server round-robin mechanism to ease integration of
1509 other algorithms. It now relies on the number of active and backup servers.
1510 - added a counter for the number of active and backup servers, and report
1511 these numbers upon SIGHUP or state change.
1512
willy tarreaubfad5742006-03-23 14:19:11 +010015132006/03/23 : 1.2.10.1
1514 - while fixing the backup server round-robin "feature", a new bug was
1515 introduced which could miss some backup servers.
1516 - the displayed proxy name was wrong when dumping upon SIGHUP.
1517
willy tarreauaaff30e2006-03-19 21:30:41 +010015182006/03/19 : 1.2.10
1519 - assert.h is needed when DEBUG is defined.
1520 - ENORMOUS long standing bug affecting the epoll polling system :
1521 event_data is a union, not a structure !
1522 - Make fd management more robust and easier to debug. Also some
1523 micro-optimisations.
1524 - Limit the number of consecutive accept() in multi-process mode.
1525 This produces a more evenly distributed load across the processes and
1526 slightly improves performance by reducing bottlenecks.
1527 - Make health-checks be more regular, and faster to retry after a timeout.
1528 - Fixed some messages to ease parsing of alerts.
1529 - provided a patch to enable epoll on RHEL3 kernels.
1530 - Separated OpenBSD build from the main Makefile into a new one.
1531
willy tarreau50be0172006-03-15 19:41:19 +010015322006/03/15 : 1.2.9
1533 - haproxy could not be stopped after being paused, it had to be woken up
1534 first. This has been fixed.
1535 - the 'ulimit-n' parameter is now optional and by default computed from
1536 maxconn + the number of listeners + the number of health-checks.
1537 - it is now possible to specify a maximum number of connections at build
1538 time with the SYSTEM_MAXCONN define. The value set in the configuration
1539 file will then be limited to this value, and only the command-line '-n'
1540 option will be able to bypass it. It will prevent against accidental
1541 high memory usage on small systems.
1542 - RFC2616 expects that any HTTP agent accepts multi-line headers. Earlier
1543 versions did not detect a line beginning with a space as the continuation
1544 of previous header. It is now correct.
1545 - health checks sent to servers configured with identical intervals were
1546 sent in perfect synchronisation because the initial time was the same
1547 for all. This could induce high load peaks when fragile servers were
1548 hosting tens of instances for the same application. Now the load is
1549 spread evenly across the smallest interval amongst a listener.
1550 - a new 'forceclose' option was added to make the proxy close the outgoing
1551 channel to the server once it has sent all its headers and the server
1552 starts responding. This helps some servers which don't close upon the
1553 'Connection: close' header. It implies 'option httpclose'.
1554 - there was a bug in the way the backup servers were handled. They were
1555 erroneously load-balanced while the doc said the opposite. Since
1556 load-balanced backup servers is one of the features some people have
1557 been asking for, the problem was fixed to reflect the documented
1558 behaviour and a new option 'allbackups' was introduced to provide the
1559 feature to those who need it.
1560 - a never ending connect() could lead to a fast select() loop if its
1561 timeout times the number of retransmits exceeded the server read or write
1562 timeout, because the later was used to compute select()'s timeout while
1563 the connection timeout was not reached.
1564 - now we initialize the libc's localtime structures very early so that even
1565 under OOM conditions, we can still send dated error messages without
1566 segfaulting.
1567 - the 'daemon' mode implies 'quiet' and disables 'verbose' because file
1568 descriptors are closed.
1569
willy tarreau065f1c02006-01-29 22:10:07 +010015702006/01/29 : 1.2.8
1571 - fixed a nasty bug affecting poll/epoll which could return unmodified data
1572 from the server to the client, and sometimes lead to memory corruption
1573 crashing the process.
1574 - added the new pause/play mechanism with SIGTTOU/SIGTTIN for hot-reconf.
1575
15762005/12/18 : 1.2.7.1
1577 - the "retries" option was ignored because connect() could not return an
1578 error if the connection failed before the timeout.
1579 - TCP health-checks could not detect a connection refused in poll/epoll
1580 mode.
1581
willy tarreaua56eca72005-12-18 01:34:42 +010015822005/11/13 : 1.2.7
willy tarreau77bc8542005-12-18 01:31:43 +01001583 - building with -DUSE_PCRE should include PCRE headers and not regex.h. At
1584 least on Solaris, this caused the libc's regex primitives to be used instead
1585 of PCRE, which caused trouble on group references. This is now fixed.
willy tarreaud0fb4652005-12-18 01:32:04 +01001586 - delayed the quiet mode during startup so that most of the startup alerts can
1587 be displayed even in quiet mode.
1588 - display an alert when a listener has no address, invalid or no port, or when
1589 there are no enabled listeners upon startup.
willy tarreau4373b962005-12-18 01:32:31 +01001590 - added "static-pcre" to the list of supported regex options in the Makefile.
willy tarreau77bc8542005-12-18 01:31:43 +01001591
willy tarreaub952e1d2005-12-18 01:31:20 +010015922005/10/09 : 1.2.7rc (1.1.33rc)
1593 - second batch of socklen_t changes.
1594 - clean-ups from Cameron Simpson.
1595 - because tv_remain() does not know about eternity, using no timeout can
1596 make select() spin around a null time-out. Bug reported by Cameron Simpson.
1597 - client read timeout was not properly set to eternity initialized after an
1598 accept() if it was not set in the config. It remained undetected so long
1599 because eternity is 0 and newly allocated pages are zeroed by the system.
1600 - do not call get_original_dst() when not in transparent mode.
1601 - implemented a workaround for a bug in certain epoll() implementations on
1602 linux-2.4 kernels (epoll-lt <= 0.21).
1603 - implemented TCP keepalive with new options : tcpka, clitcpka, srvtcpka.
1604
willy tarreauc5f73ed2005-12-18 01:26:38 +010016052005/08/07 : 1.2.6
1606 - clean-up patch from Alexander Lazic fixes build on Debian 3.1 (socklen_t).
1607
16082005/07/06 : 1.2.6-pre5 (1.1.32)
willy tarreau0fe39652005-12-18 01:25:24 +01001609 - added the number of active sessions (proxy/process) in the logs
1610
16112005/07/06 : 1.2.6-pre4 (1.1.32-pre4)
willy tarreaub1285d52005-12-18 01:20:14 +01001612 - the time-out fix introduced in 1.1.25 caused a corner case where it was
1613 possible for a client to keep a connection maintained regardless of the
1614 timeout if the server closed the connection during the HEADER phase,
1615 while the client ignored the close request while doing nothing in the
1616 other direction. This has been fixed now by ensuring that read timeouts
1617 are re-armed when switching to any SHUTW state.
1618
16192005/07/05 : 1.2.6-pre3 (1.1.32-pre3)
1620 - enhanced error reporting in the logs. Now the proxy will precisely detect
1621 various error conditions related to the system and/or process limits, and
1622 generate LOG_EMERG logs indicating that a resource has been exhausted.
1623 - logs will contain two new characters for the error cause : 'R' indicates
1624 a resource exhausted, and 'I' indicates an internal error, though this
1625 one should never happen.
1626 - server connection timeouts can now be reported in the logs (sC), as well
1627 as connections refused because of maxconn limitations (PC).
1628
16292005/07/05 : 1.2.6-pre2 (1.1.32-pre2)
1630 - new global configuration keyword "ulimit-n" may be used to raise the FD
1631 limit to usable values.
1632 - a warning is now displayed on startup if the FD limit is lower than the
1633 configured maximum number of sockets.
1634
16352005/07/05 : 1.2.6-pre1 (1.1.32-pre1)
1636 - new configuration keyword "monitor-net" makes it possible to be monitored
1637 by external devices which connect to the proxy without being logged nor
1638 forwarded to any server. Particularly useful on generic TCPv4 relays.
1639
willy tarreau5dffb602005-12-18 01:15:23 +010016402005/06/21 : 1.2.5.2
1641 - fixed build on PPC where chars are unsigned by default
1642
willy tarreau08dedbe2005-12-18 01:13:48 +010016432005/05/02 : 1.2.5.1
1644 - dirty hack to fix a bug introduced with epoll : if we close an FD and
1645 immediately reassign it to another session through a connect(), the
1646 Prev{Read,Write}Events are not updated, which causes trouble detecting
1647 changes, thus leading to many timeouts at high loads.
1648
willy tarreau64a3cc32005-12-18 01:13:11 +010016492005/04/30 : 1.2.5 (1.1.31)
1650 - changed the runtime argument to disable epoll() to '-de'
1651 - changed the runtime argument to disable poll() to '-dp'
1652 - added global options 'nopoll' and 'noepoll' to do the same at the
1653 configuration level.
1654 - added a 'linux24e' target to the Makefile for Linux 2.4 systems patched to
1655 support epoll().
1656 - changed default FD_SETSIZE to 65536 on Solaris (default=1024)
1657 - conditionned signals redirection to #ifdef DEBUG_MEMORY
1658
willy tarreau1c2ad212005-12-18 01:11:29 +010016592005/04/26 : 1.2.5-pre4
1660 - made epoll() support a compile-time option : ENABLE_EPOLL
1661 - provided a very little libc replacement for a possibly missing epoll()
1662 implementation which can be enabled by -DUSE_MY_EPOLL
1663 - implemented the poll() poller, which can be enabled with -DENABLE_POLL.
1664 The equivalent runtime argument becomes '-P'. A few tests show that it
1665 performs like select() with many fds, but slightly slower (certainly
1666 because of the higher amount of memory involved).
1667 - separated the 3 polling methods and the tasks scheduler into 4 distinct
1668 functions which makes the code a lot more modular.
1669 - moved some event tables to private static declarations inside the poller
1670 functions.
1671 - the poller functions can now initialize themselves, run, and cleanup.
1672 - changed the runtime argument to enable epoll() to '-E'.
1673 - removed buggy epoll_ctl() code in the client_retnclose() function. This
1674 function was never meant to remove anything.
1675 - fixed a typo which caused glibc to yell about a double free on exit.
1676 - removed error checking after epoll_ctl(DEL) because we can never know if
1677 the fd is still active or already closed.
1678 - added a few entries in the makefile
1679
willy tarreauad90a0c2005-12-18 01:09:15 +010016802005/04/25 : 1.2.5-pre3
1681 - experimental epoll() support (use temporary '-e' argument)
1682
16832005/04/24 : 1.2.5-pre2
willy tarreauc1f47532005-12-18 01:08:26 +01001684 - implemented the HTTP 303 code for error redirection. This forces the
1685 browser to fetch the given URI with a GET request. The new keyword for
1686 this is 'errorloc303', and a new 'errorloc302' keyword has been created
1687 to make them easily distinguishable.
1688 - added more controls in the parser for valid use of '\x' sequence.
1689 - few fixes from Alex & Klaus
1690
willy tarreauad90a0c2005-12-18 01:09:15 +010016912005/02/17 : 1.2.5-pre1
willy tarreauc1f47532005-12-18 01:08:26 +01001692 - fixed a few errors in the documentation
1693
16942005/02/13
1695 - do not pre-initialize unused file-descriptors before select() anymore.
1696
willy tarreau12350152005-12-18 01:03:27 +010016972005/01/22 : 1.2.4
1698 - merged Alexander Lazic's and Klaus Wagner's work on application
1699 cookie-based persistence. Since this is the first merge, this version is
1700 not intended for general use and reports are more than welcome. Some
1701 documentation is really needed though.
1702
willy tarreau0174f312005-12-18 01:02:42 +010017032005/01/22 : 1.2.3 (1.1.30)
1704 - add an architecture guide to the documentation
1705 - released without any changes
1706
17072004/12/26 : 1.2.3-pre1 (1.1.30-pre1)
1708 - increased default BUFSIZE to 16 kB to accept max headers of 8 kB which is
1709 compatible with Apache. This limit can be configured in the makefile now.
1710 Thanks to Eric Fehr for the checks.
1711 - added a per-server "source" option which now makes it possible to bind to
1712 a different source for each (potentially identical) server.
1713 - changed cookie-based server selection slightly to allow several servers to
1714 share a same cookie, thus making it possible to associate backup servers to
1715 live servers and ease soft-stop for maintenance periods. (Alexander Lazic)
1716 - added the cookie 'prefix' mode which makes it possible to use persistence
1717 with thin clients which support only one cookie. The server name is prefixed
1718 before the application cookie, and restore back.
1719 - fixed the order of servers within an instance to match documentation. Now
1720 the servers are *really* used in the order of their declaration. This is
1721 particularly important when multiple backup servers are in use.
1722
willy tarreau4302f492005-12-18 01:00:37 +010017232004/10/18 : 1.2.2 (1.1.29)
1724 - fixed a bug where a TCP connection would be logged twice if the 'logasap'
1725 option was enabled without the 'tcplog' option.
1726 - encode_string() would use hdr_encode_map instead of the map argument.
1727
17282004/08/10 : (1.1.29-pre2)
1729 - the logged request is now encoded with '#XX' for unprintable characters
1730 - new keywords 'capture request header' and 'capture response header' enable
1731 logging of arbitrary HTTP headers in requests and responses
1732 - removed "-DSOLARIS" after replacing the last inet_aton() with inet_pton()
1733
willy tarreau982249e2005-12-18 00:57:06 +010017342004/06/06 : 1.2.1 (1.1.28)
1735 - added the '-V' command line option to verbosely report errors even though
1736 the -q or 'quiet' options are specified. This is useful with '-c'.
1737 - added a Red Hat init script and a .spec from Simon Matter <simon.matter@invoca.ch>
willy tarreau036e1ce2005-12-17 13:46:33 +01001738
willy tarreau982249e2005-12-18 00:57:06 +010017392004/06/05 :
1740 - added the "logasap" option which produces a log without waiting for the data
1741 to be transferred from the server to the client.
1742 - added the "httpclose" option which removes any "connection:" header and adds
1743 "Connection: close" in both direction.
willy tarreau97f58572005-12-18 00:53:44 +01001744 - added the 'checkcache' option which blocks cacheable responses containing
1745 dangerous headers, such as 'set-cookie'.
willy tarreau982249e2005-12-18 00:57:06 +01001746 - added 'rspdeny' and 'rspideny' to block certain responses to avoid sensible
1747 information leak from servers.
willy tarreau25c4ea52005-12-18 00:49:49 +01001748
17492004/04/18 :
willy tarreaudd07e972005-12-18 00:48:48 +01001750 - send an EMERG log when no server is available for a given proxy
1751 - added the '-c' command line option to syntactically check the
1752 configuration file without starting the service.
1753
willy tarreau8a86dbf2005-12-18 00:45:59 +010017542003/11/09 : 1.2.0
1755 - the same as 1.1.27 + IPv6 support on the client side
1756
willy tarreaufe2c5c12005-12-17 14:14:34 +010017572003/10/27 : 1.1.27
1758 - the configurable HTTP health check introduced in 1.1.23 revealed a shameful
1759 bug : the code still assumed that HTTP requests were the same size as the
1760 original ones (22 bytes), and failed if they were not.
1761 - added support for pidfiles.
1762
willy tarreauc58fc692005-12-17 14:13:08 +010017632003/10/22 : 1.1.26
1764 - the fix introduced in 1.1.25 for client timeouts while waiting for servers
1765 broke almost all compatibility with POST requests, because the proxy
1766 stopped to read anything from the client as soon as it got all of its
1767 headers.
1768
willy tarreauc1cae632005-12-17 14:12:23 +010017692003/10/15 : 1.1.25
1770 - added the 'tcplog' option, which provides enhanced, HTTP-like logs for
1771 generic TCP proxies, or lighter logs for HTTP proxies.
1772 - fixed a time-out condition wrongly reported as client time-out in data
1773 phase if the client timeout was lower than the connect timeout times the
1774 number of retries.
1775
willy tarreau197e8ec2005-12-17 14:10:59 +010017762003/09/21 : 1.1.24
1777 - if a client sent a full request then shut its write connection down, then
1778 the request was aborted. This case was detected only when using haproxy
1779 both as health-check client and as a server.
1780 - if 'option httpchk' is used in a 'health' mode server, then responses will
1781 change from 'OK' to 'HTTP/1.0 200 OK'.
1782 - fixed a Linux-only bug in case of HTTP server health-checks, where a single
1783 server response followed by a close could be ignored, and the server seen
1784 as failed.
1785
willy tarreaueedaa9f2005-12-17 14:08:03 +010017862003/09/19 : 1.1.23
1787 - fixed a stupid bug introduced in 1.1.22 which caused second and subsequent
1788 'default' sections to keep previous parameters, and not initialize logs
1789 correctly.
1790 - fixed a second stupid bug introduced in 1.1.22 which caused configurations
1791 relying on 'dispatch' mode to segfault at the first connection.
1792 - 'option httpchk' now supports method, HTTP version and a few headers.
1793 - now, 'option httpchk', 'cookie' and 'capture' can be specified in
1794 'defaults' section
1795
17962003/09/10 : 1.1.22
willy tarreaua41a8b42005-12-17 14:02:24 +01001797 - 'listen' now supports optionnal address:port-range lists
1798 - 'bind' introduced to add new listen addresses
1799 - fixed a bug which caused a session to be kept established on a server till
1800 it timed out if the client closed during the DATA phase.
1801 - the port part of each server address can now be empty to make the proxy
1802 connect to the server on the same port it was connected to, be an absolute
1803 unsigned number to reflect a single port (as in older versions), or an
1804 explicitly signed number (+N/-N) to indicate that this offset must be
1805 applied to the port the proxy was connected to, when connecting to the
1806 server.
1807 - the 'port' server option allows the user to specify a different
1808 health-check port than the service one. It is mandatory when only relative
1809 ports have been specified and check is required. By default, the checks are
1810 sent to the service port.
1811 - new 'defaults' section which is rather similar to 'listen' except that all
1812 values are only used as default values for future 'listen' sections, until
1813 a new 'defaults' resets them. At the moment, server options, regexes,
1814 cookie names and captures cannot be set in the 'defaults' section.
1815
willy tarreau2f6ba652005-12-17 13:57:42 +010018162003/05/06 : 1.1.21
1817 - changed the debug output format so that it now includes the session unique
1818 ID followed by the instance name at the beginning of each line.
1819 - in debug mode, accept now shows the client's IP and port.
1820 - added one 3 small debugging scripts to search and pretty print debug output
1821 - changed the default health check request to "OPTIONS /" instead of
1822 "OPTIONS *" since not all servers implement the later one.
1823 - "option httpchk" now accepts an optional parameter allowing the user to
1824 specify and URI other than '/' during health-checks.
1825
willy tarreaub1ff9db2005-12-17 13:51:03 +010018262003/04/21 : 1.1.20
1827 - fixed two problems with time-outs, one where a server would be logged as
1828 timed out during transfer that take longer to complete than the fixed
1829 time-out, and one where clients were logged as timed-out during the data
1830 phase because they didn't have anything to send. This sometimes caused
1831 slow client connections to close too early while in fact there was no
1832 problem. The proper fix would be to have a per-fd time-out with
1833 conditions depending on the state of the HTTP FSM.
1834
willy tarreau906b2682005-12-17 13:49:52 +010018352003/04/16 : 1.1.19
1836 - haproxy was NOT RFC compliant because it was case-sensitive on HTTP
1837 "Cookie:" and "Set-Cookie:" headers. This caused JVM 1.4 to fail on
1838 cookie persistence because it uses "cookie:". Two memcmp() have been
1839 replaced with strncasecmp().
1840
willy tarreau036e1ce2005-12-17 13:46:33 +010018412003/04/02 : 1.1.18
1842 - Haproxy can be compiled with PCRE regex instead of libc regex, by setting
1843 REGEX=pcre on the make command line.
1844 - HTTP health-checks now use "OPTIONS *" instead of "OPTIONS /".
1845 - when explicit source address binding is required, it is now also used for
1846 health-checks.
1847 - added 'reqpass' and 'reqipass' to allow certain headers but not the request
1848 itself.
1849 - factored several strings to reduce binary size by about 2 kB.
1850 - replaced setreuid() and setregid() with more standard setuid() and setgid().
1851 - added 4 status flags to the log line indicating who ended the connection
1852 first, the sessions state, the validity of the cookie, and action taken on
1853 the set-cookie header.
1854
18552002/10/18 : 1.1.17
1856 - add the notion of "backup" servers, which are used only when all other
1857 servers are down.
1858 - make Set-Cookie return "" instead of "(null)" when the server has no
1859 cookie assigned (useful for backup servers).
1860 - "log" now supports an optionnal level name (info, notice, err ...) above
1861 which nothing is sent.
1862 - replaced some strncmp() with memcmp() for better efficiency.
1863 - added "capture cookie" option which logs client and/or server cookies
1864 - cleaned up/down messages and dump servers states upon SIGHUP
1865 - added a redirection feature for errors : "errorloc <errnum> <url>"
1866 - now we won't insist on connecting to a dead server, even with a cookie,
1867 unless option "persist" is specified.
1868 - added HTTP/408 response for client request time-out and HTTP/50[234] for
1869 server reply time-out or errors.
1870
18712002/09/01 : 1.1.16
1872 - implement HTTP health checks when option "httpchk" is specified.
1873
18742002/08/07 : 1.1.15
1875 - replaced setpgid()/setpgrp() with setsid() for better portability, because
1876 setpgrp() doesn't have the same meaning under Solaris, Linux, and OpenBSD.
1877
18782002/07/20 : 1.1.14
1879 - added "postonly" cookie mode
1880
18812002/07/15 : 1.1.13
1882 - tv_diff used inverted parameters which led to negative times !
1883
18842002/07/13 : 1.1.12
1885 - fixed stats monitoring, and optimized some tv_* for most common cases.
1886 - replaced temporary 'newhdr' with 'trash' to reduce stack size
1887 - made HTTP errors more HTML-fiendly.
1888 - renamed strlcpy() to strlcpy2() because of a slightly difference between
1889 their behaviour (return value), to avoid confusion.
1890 - restricted HTTP messages to HTTP proxies only
1891 - added a 502 message when the connection has been refused by the server,
1892 to prevent clients from believing this is a zero-byte HTTP 0.9 reply.
1893 - changed 'Cache-control:' from 'no-cache="set-cookie"' to 'private' when
1894 inserting a cookie, because some caches (apache) don't understand it.
1895 - fixed processing of server headers when client is in SHUTR state
1896
18972002/07/04 :
1898 - automatically close fd's 0,1 and 2 when going daemon ; setpgrp() after
1899 setpgid()
1900
19012002/06/04 : 1.1.11
1902 - fixed multi-cookie handling in client request to allow clean deletion
1903 in insert+indirect mode. Now, only the server cookie is deleted and not
willy tarreau906b2682005-12-17 13:49:52 +01001904 all the header. Should now be compliant to RFC2965.
willy tarreau036e1ce2005-12-17 13:46:33 +01001905 - added a "nocache" option to "cookie" to specify that we explicitly want
1906 to add a "cache-control" header when we add a cookie.
1907 It is also possible to add an "Expires: <old-date>" to keep compatibility
1908 with old/broken caches.
1909
19102002/05/10 : 1.1.10
1911 - if a cookie is used in insert+indirect mode, it's desirable that the
1912 the servers don't see it. It was not possible to remove it correctly
1913 with regexps, so now it's removed automatically.
1914
19152002/04/19 : 1.1.9
1916 - don't use snprintf()'s return value as an end of message since it may
1917 be larger. This caused bus errors and segfaults in internal libc's
1918 getenv() during localtime() in send_log().
1919 - removed dead insecure send_syslog() function and all references to it.
1920 - fixed warnings on Solaris due to buggy implementation of isXXXX().
1921
19222002/04/18 : 1.1.8
1923 - option "dontlognull"
1924 - fixed "double space" bug in config parser
1925 - fixed an uninitialized server field in case of dispatch
1926 with no existing server which could cause a segfault during
1927 logging.
1928 - the pid logged was always the father's, which was wrong for daemons.
1929 - fixed wrong level "LOG_INFO" for message "proxy started".
1930
19312002/04/13 :
1932 - http logging is now complete :
1933 - ip:port, date, proxy, server
1934 - req_time, conn_time, hdr_time, tot_time
1935 - status, size, request
1936 - source address
1937
19382002/04/12 : 1.1.7
1939 - added option forwardfor
1940 - added reqirep, reqidel, reqiallow, reqideny, rspirep, rspidel
1941 - added "log global" in "listen" section.
1942
19432002/04/09 :
1944 - added a new "global" section :
1945 - logs
1946 - debug, quiet, daemon modes
1947 - uid, gid, chroot, nbproc, maxconn
1948
19492002/04/08 : 1.1.6
1950 - regex are now chained and not limited anymore.
1951 - unavailable server now returns HTTP/502.
1952 - increased per-line args limit to 40
1953 - added reqallow/reqdeny to block some request on matches
1954 - added HTTP 400/403 responses
1955
19562002/04/03 : 1.1.5
1957 - connection logging displayed incorrect source address.
1958 - added proxy start/stop and server up/down log events.
1959 - replaced log message short buffers with larger trash.
1960 - enlarged buffer to 8 kB and replace buffer to 4 kB.
1961
19622002/03/25 : 1.1.4
1963 - made rise/fall/interval time configurable
1964
19652002/03/22 : 1.1.3
1966 - fixed a bug : cr_expire and cw_expire were inverted in CL_STSHUT[WR]
1967 which could lead to loops.
1968
19692002/03/21 : 1.1.2
1970 - fixed a bug in buffer management where we could have a loop
1971 between event_read() and process_{cli|srv} if R==BUFSIZE-MAXREWRITE.
1972 => implemented an adjustable buffer limit.
1973 - fixed a bug : expiration of tasks in wait queue timeout is used again,
1974 and running tasks are skipped.
1975 - added some debug lines for accept events.
1976 - send warnings for servers up/down.
1977
19782002/03/12 : 1.1.1
1979 - fixed a bug in total failure handling
1980 - fixed a bug in timestamp comparison within same second (tv_cmp_ms)
1981
19822002/03/10 : 1.1.0
1983 - fixed a few timeout bugs
1984 - rearranged the task scheduler subsystem to improve performance,
1985 add new tasks, and make it easier to later port to librt ;
1986 - allow multiple accept() for one select() wake up ;
1987 - implemented internal load balancing with basic health-check ;
1988 - cookie insertion and header add/replace/delete, with better strings
1989 support.
1990
19912002/03/08
1992 - reworked buffer handling to fix a few rewrite bugs, and
1993 improve overall performance.
1994 - implement the "purge" option to delete server cookies in direct mode.
1995
19962002/03/07
1997 - fixed some error cases where the maxfd was not decreased.
1998
19992002/02/26
2000 - now supports transparent proxying, at least on linux 2.4.
2001
20022002/02/12
2003 - soft stop works again (fixed select timeout computation).
2004 - it seems that TCP proxies sometimes cannot timeout.
2005 - added a "quiet" mode.
2006 - enforce file descriptor limitation on socket() and accept().
2007
20082001/12/30 : release of version 1.0.2 : fixed a bug in header processing
20092001/12/19 : release of version 1.0.1 : no MSG_NOSIGNAL on solaris
20102001/12/16 : release of version 1.0.0.
20112001/12/16 : added syslog capability for each accepted connection.
20122001/11/19 : corrected premature end of files and occasional SIGPIPE.
20132001/10/31 : added health-check type servers (mode health) which replies OK then closes.
20142001/10/30 : added the ability to support standard TCP proxies and HTTP proxies
2015 with or without cookies (use keyword http for this).
20162001/09/01 : added client/server header replacing with regexps.
2017 eg:
2018 cliexp ^(Host:\ [^:]*).* Host:\ \1:80
2019 srvexp ^Server:\ .* Server:\ Apache
20202000/11/29 : first fully working release with complete FSMs and timeouts.
20212000/11/28 : major rewrite
20222000/11/26 : first write