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