blob: d56113f2b9f61a301a76f18748d2ec2c9a3f8c2e [file] [log] [blame]
willy tarreau036e1ce2005-12-17 13:46:33 +01001ChangeLog :
2===========
willy tarreau4302f492005-12-18 01:00:37 +01003
Willy Tarreaua0564f32012-05-08 21:56:27 +020042012/05/08 : 1.5-dev9
5 - MINOR: Add release callback to si_applet
6 - CLEANUP: Fix some minor typos
7 - MINOR: Add TO/FROM_SET flags to struct stream_interface
8 - CLEANUP: Fix some minor whitespace issues
9 - MINOR: stats admin: allow unordered parameters in POST requests
10 - CLEANUP: fix typo in findserver() log message
11 - MINOR: stats admin: use the backend id instead of its name in the form
12 - MINOR: stats admin: reduce memcmp()/strcmp() calls on status codes
13 - DOC: cleanup indentation, alignment, columns and chapters
14 - DOC: fix some keywords arguments documentation
15 - MINOR: cli: display the 4 IP addresses and ports on "show sess XXX"
16 - BUG/MAJOR: log: possible segfault with logformat
17 - MEDIUM: log: split of log_format generation
18 - MEDIUM: log: New format-log flags: %Fi %Fp %Si %Sp %Ts %rt %H %pid
19 - MEDIUM: log: Unique ID
20 - MINOR: log: log-format: usable without httplog and tcplog
21 - BUG/MEDIUM: balance source did not properly hash IPv6 addresses
22 - MINOR: contrib/iprange: add a network IP range to mask converter
23 - MEDIUM: session: implement the "use-server" directive
24 - MEDIUM: log: add a new cookie flag 'U' to report situations where cookie is not used
25 - MEDIUM: http: make extract_cookie_value() iterate over cookie values
26 - MEDIUM: http: add cookie and scookie ACLs
27 - CLEANUP: lb_first: add reference to a paper describing the original idea
28 - MEDIUM: stream_sock: add a get_src and get_dst callback and remove SN_FRT_ADDR_SET
29 - BUG/MINOR: acl: req_ssl_sni would randomly fail if a session ID is present
30 - BUILD: http: make extract_cookie_value() return an int not size_t
31 - BUILD: http: stop gcc-4.1.2 from complaining about possibly uninitialized values
32 - CLEANUP: http: message parser must ignore HTTP_MSG_ERROR
33 - MINOR: standard: add a memprintf() function to build formatted error messages
34 - CLEANUP: remove a few warning about unchecked return values in debug code
35 - MEDIUM: move message-related flags from transaction to message
36 - DOC: add a diagram to explain how circular buffers work
37 - MAJOR: buffer rework: replace ->send_max with ->o
38 - MAJOR: buffer: replace buf->l with buf->{o+i}
39 - MINOR: buffers: provide simple pointer normalization functions
40 - MINOR: buffers: remove unused function buffer_contig_data()
41 - MAJOR: buffers: replace buf->w with buf->p - buf->o
42 - MAJOR: buffers: replace buf->r with buf->p + buf->i
43 - MAJOR: http: move buffer->lr to http_msg->next
44 - MAJOR: http: change msg->{som,col,sov,eoh} to be relative to buffer origin
45 - CLEANUP: http: remove unused http_msg->col
46 - MAJOR: http: turn http_msg->eol to a buffer-relative offset
47 - MEDIUM: http: add a pointer to the buffer in http_msg
48 - MAJOR: http: make http_msg->sol relative to buffer's origin
49 - MEDIUM: http: http_send_name_header: remove references to msg and buffer
50 - MEDIUM: http: remove buffer arg in a few header manipulation functions
51 - MEDIUM: http: remove buffer arg in http_capture_bad_message
52 - MEDIUM: http: remove buffer arg in http_msg_analyzer
53 - MEDIUM: http: remove buffer arg in http_upgrade_v09_to_v10
54 - MEDIUM: http: remove buffer arg in http_buffer_heavy_realign
55 - MEDIUM: http: remove buffer arg in chunk parsing functions
56 - MINOR: http: remove useless wrapping checks in http_msg_analyzer
57 - MEDIUM: buffers: fix unsafe use of buffer_ignore at some places
58 - MEDIUM: buffers: add new pointer wrappers and get rid of almost all buffer_wrap_add calls
59 - MEDIUM: buffers: implement b_adv() to advance a buffer's pointer
60 - MEDIUM: buffers: rename a number of buffer management functions
61 - MEDIUM: http: add a prefetch function for ACL pattern fetch
62 - MEDIUM: http: make all ACL fetch function use acl_prefetch_http()
63 - BUG/MINOR: http_auth: ACLs are volatile, not permanent
64 - MEDIUM: http/acl: merge all request and response ACL fetches of headers and cookies
65 - MEDIUM: http/acl: make acl_fetch_hdr_{ip,val} rely on acl_fetch_hdr()
66 - MEDIUM: add a new typed argument list parsing framework
67 - MAJOR: acl: make use of the new argument parsing framework
68 - MAJOR: acl: store the ACL argument types in the ACL keyword declaration
69 - MEDIUM: acl: acl_find_target() now resolves arguments based on their types
70 - MAJOR: acl: make acl_find_targets also resolve proxy names at config time
71 - MAJOR: acl: ensure that implicit table and proxies are valid
72 - MEDIUM: acl: remove unused tests for missing args when args are mandatory
73 - MEDIUM: pattern: replace type pattern_arg with type arg
74 - MEDIUM: pattern: get rid of arg_i in all functions making use of arguments
75 - MEDIUM: pattern: use the standard arg parser
76 - MEDIUM: pattern: add an argument validation callback to pattern descriptors
77 - MEDIUM: pattern: report the precise argument parsing error when known.
78 - MEDIUM: acl: remove the ACL_TEST_F_NULL_MATCH flag
79 - MINOR: pattern: add a new 'sample' type to store fetched data
80 - MEDIUM: pattern: add new sample types to replace pattern types
81 - MAJOR: acl: make use of the new sample struct and get rid of acl_test
82 - MEDIUM: pattern/acl: get rid of temp_pattern in ACLs
83 - MEDIUM: acl: get rid of the SET_RES flags
84 - MEDIUM: get rid of SMP_F_READ_ONLY and SMP_F_MUST_FREE
85 - MINOR: pattern: replace struct pattern with struct sample
86 - MEDIUM: pattern: integrate pattern_data into sample and use sample everywhere
87 - MEDIUM: pattern: retrieve the sample type in the sample, not in the keyword description
88 - MEDIUM: acl/pattern: switch rdp_cookie functions stack up-down
89 - MEDIUM: acl: replace acl_expr with args in acl fetch_* functions
90 - MINOR: tcp: replace acl_fetch_rdp_cookie with smp_fetch_rdp_cookie
91 - MEDIUM: acl/pattern: use the same direction scheme
92 - MEDIUM: acl/pattern: start merging common sample fetch functions
93 - MEDIUM: pattern: ensure that sample types always cast into other types.
94 - MEDIUM: acl/pattern: factor out the src/dst address fetches
95 - MEDIUM: acl: implement payload and payload_lv
96 - CLEANUP: pattern: ensure that payload and payload_lv always stay in the buffer
97 - MINOR: stick_table: centralize the handling of empty keys
98 - MINOR: pattern: centralize handling of unstable data in pattern_process()
99 - MEDIUM: pattern: use smp_fetch_rdp_cookie instead of the pattern specific version
100 - MINOR: acl: set SMP_OPT_ITERATE on fetch functions
101 - MINOR: acl: add a val_args field to keywords
102 - MINOR: proto_tcp: validate arguments of payload and payload_lv ACLs
103 - MEDIUM: http: merge acl and pattern header fetch functions
104 - MEDIUM: http: merge ACL and pattern cookie fetches into a single one
105 - MEDIUM: acl: report parsing errors to the caller
106 - MINOR: arg: improve error reporting on invalid arguments
107 - MINOR: acl: report errors encountered when loading patterns from files
108 - MEDIUM: acl: extend the pattern parsers to report meaningful errors
109 - REORG: use the name "sample" instead of "pattern" to designate extracted data
110 - REORG: rename "pattern" files
111 - MINOR: acl: add types to ACL patterns
112 - MINOR: standard: add an IPv6 parsing function (str62net)
113 - MEDIUM: acl: support IPv6 address matching
114 - REORG: stream_interface: create a struct sock_ops to hold socket operations
115 - REORG/MEDIUM: move protocol->{read,write} to sock_ops
116 - REORG/MEDIUM: stream_interface: initialize socket ops from descriptors
117 - REORG/MEDIUM: replace stream interface protocol functions by a proto pointer
118 - REORG/MEDIUM: move the default accept function from sockstream to protocols.c
119 - MEDIUM: proto_tcp: remove src6 and dst6 pattern fetch methods
120 - BUG/MINOR: http: error snapshots are wrong if buffer wraps
121 - BUG/MINOR: http: ensure that msg->err_pos is always relative to buf->p
122 - MEDIUM: http: improve error capture reports
123 - MINOR: acl: add the cook_val() match to match a cookie against an integer
124 - BUG/MEDIUM: send_proxy: fix initialisation of send_proxy_ofs
125 - MEDIUM: memory: add the ability to poison memory at run time
126 - BUG/MEDIUM: log: ensure that unique_id is properly initialized
127 - MINOR: cfgparse: use a common errmsg pointer for all parsers
128 - MEDIUM: cfgparse: make backend_parse_balance() use memprintf to report errors
129 - MEDIUM: cfgparse: use the new error reporting framework for remaining cfg_keywords
130 - MINOR: http: replace http_message_realign() with buffer_slow_realign()
131
Willy Tarreau9eeb57b2012-03-26 06:15:29 +02001322012/03/26 : 1.5-dev8
133 - MINOR: patch for minor typo (ressources/resources)
134 - MEDIUM: http: add support for sending the server's name in the outgoing request
135 - DOC: mention that default checks are TCP connections
136 - BUG/MINOR: fix options forwardfor if-none when an alternative header name is specified
137 - CLEANUP: Make check_statuses, analyze_statuses and process_chk static
138 - CLEANUP: Fix HCHK spelling errors
139 - BUG/MINOR: fix typo in processing of http-send-name-header
140 - MEDIUM: log: Use linked lists for loggers
141 - BUILD: fix declaration inside a scope block
142 - REORG: log: split send_log function
143 - MINOR: config: Parse the string of the log-format config keyword
144 - MINOR: add ultoa, ulltoa, ltoa, lltoa implementations
145 - MINOR: Date and time fonctions that don't use snprintf
146 - MEDIUM: log: make http_sess_log use log_format
147 - DOC: log-format documentation
148 - MEDIUM: log: use log_format for mode tcplog
149 - MEDIUM: log-format: backend source address %Bi %Bp
150 - BUG/MINOR: log-format: fix %o flag
151 - BUG/MEDIUM: bad length in log_format and __send_log
152 - MINOR: logformat %st is signed
153 - BUILD/MINOR: fix the source URL in the spec file
154 - DOC: acl is http_first_req, not http_req_first
155 - BUG/MEDIUM: don't trim last spaces from headers consisting only of spaces
156 - MINOR: acl: add new matches for header/path/url length
157 - BUILD: halog: make halog build on solaris
158 - BUG/MINOR: don't use a wrong port when connecting to a server with mapped ports
159 - MINOR: remove the client/server side distinction in SI addresses
160 - MINOR: halog: add support for matching queued requests
161 - DOC: indicate that cookie "prefix" and "indirect" should not be mixed
162 - OPTIM/MINOR: move struct sockaddr_storage to the tail of structs
163 - OPTIM/MINOR: make it possible to change pipe size (tune.pipesize)
164 - BUILD/MINOR: silent a build warning in src/pipe.c (fcntl)
165 - OPTIM/MINOR: move the hdr_idx pools out of the proxy struct
166 - MEDIUM: tune.http.maxhdr makes it possible to configure the maximum number of HTTP headers
167 - BUG/MINOR: fix a segfault when parsing a config with undeclared peers
168 - CLEANUP: rename possibly confusing struct field "tracked"
169 - BUG/MEDIUM: checks: fix slowstart behaviour when server tracking is in use
170 - MINOR: config: tolerate server "cookie" setting in non-HTTP mode
171 - MEDIUM: buffers: add some new primitives and rework existing ones
172 - BUG: buffers: don't return a negative value on buffer_total_space_res()
173 - MINOR: buffers: make buffer_pointer() support negative pointers too
174 - CLEANUP: kill buffer_replace() and use an inline instead
175 - BUG: tcp: option nolinger does not work on backends
176 - CLEANUP: ebtree: remove a few annoying signedness warnings
177 - CLEANUP: ebtree: clarify licence and update to 6.0.6
178 - CLEANUP: ebtree: remove 4-year old harmless typo in duplicates insertion code
179 - CLEANUP: ebtree: remove another typo, a wrong initialization in insertion code
180 - BUG: ebtree: ebst_lookup() could return the wrong entry
181 - OPTIM: stream_sock: reduce the amount of in-flight spliced data
182 - OPTIM: stream_sock: save a failed recv syscall when splice returns EAGAIN
183 - MINOR: acl: add support for TLS server name matching using SNI
184 - BUG: http: re-enable TCP quick-ack upon incomplete HTTP requests
185 - BUG: proto_tcp: don't try to bind to a foreign address if sin_family is unknown
186 - MINOR: pattern: export the global temporary pattern
187 - CLEANUP: patterns: get rid of pattern_data_setstring()
188 - MEDIUM: acl: use temp_pattern to store fetched information in the "method" match
189 - MINOR: acl: include pattern.h to make pattern migration more transparent
190 - MEDIUM: pattern: change the pattern data integer from unsigned to signed
191 - MEDIUM: acl: use temp_pattern to store any integer-type information
192 - MEDIUM: acl: use temp_pattern to store any address-type information
193 - CLEANUP: acl: integer part of acl_test is not used anymore
194 - MEDIUM: acl: use temp_pattern to store any string-type information
195 - CLEANUP: acl: remove last data fields from the acl_test struct
196 - MEDIUM: http: replace get_ip_from_hdr2() with http_get_hdr()
197 - MEDIUM: patterns: the hdr() pattern is now of type string
198 - DOC: add minimal documentation on how ACLs work internally
199 - DOC: add a coding-style file
200 - OPTIM: halog: keep a fast path for the lines-count only
201 - CLEANUP: silence a warning when building on sparc
202 - BUG: http: tighten the list of allowed characters in a URI
203 - MEDIUM: http: block non-ASCII characters in URIs by default
204 - DOC: add some documentation from RFC3986 about URI format
205 - BUG/MINOR: cli: correctly remove the whole table on "clear table"
206 - BUG/MEDIUM: correctly disable servers tracking another disabled servers.
207 - BUG/MEDIUM: zero-weight servers must not dequeue requests from the backend
208 - MINOR: halog: add some help on the command line
209 - BUILD: fix build error on FreeBSD
210 - BUG: fix double free in peers config error path
211 - MEDIUM: improve config check return codes
212 - BUILD: make it possible to look for pcre in the default system paths
213 - MINOR: config: emit a warning when 'default_backend' masks servers
214 - MINOR: backend: rework the LC definition to support other connection-based algos
215 - MEDIUM: backend: add the 'first' balancing algorithm
216 - BUG: fix httplog trailing LF
217 - MEDIUM: increase chunk-size limit to 2GB-1
218 - BUG: queue: fix dequeueing sequence on HTTP keep-alive sessions
219 - BUG: http: disable TCP delayed ACKs when forwarding content-length data
220 - BUG: checks: fix server maintenance exit sequence
221 - BUG/MINOR: stream_sock: don't remove BF_EXPECT_MORE and BF_SEND_DONTWAIT on partial writes
222 - DOC: enumerate valid status codes for "observe layer7"
223 - MINOR: buffer: switch a number of buffer args to const
224 - CLEANUP: silence signedness warning in acl.c
225 - BUG: stream_sock: si->release was not called upon shutw()
226 - MINOR: log: use "%ts" to log term status only and "%tsc" to log with cookie
227 - BUG/CRITICAL: log: fix risk of crash in development snapshot
228 - BUG/MAJOR: possible crash when using capture headers on TCP frontends
229 - MINOR: config: disable header captures in TCP mode and complain
230
Willy Tarreau60612eb2011-09-10 23:43:11 +02002312011/09/10 : 1.5-dev7
232 - [BUG] fix binary stick-tables
233 - [MINOR] http: *_dom matching header functions now also split on ":"
234 - [BUG] checks: fix support of Mysqld >= 5.5 for mysql-check
235 - [MINOR] acl: add srv_conn acl to count connections on a specific backend server
236 - [MINOR] check: add redis check support
237 - [DOC] small fixes to clearly distinguish between keyword and variables
238 - [MINOR] halog: add support for termination code matching (-tcn/-TCN)
239 - [DOC] Minor spelling fixes and grammatical enhancements
240 - [CLEANUP] dumpstats: make symbols static where possible
241 - [MINOR] Break out dumping table
242 - [MINOR] Break out processing of clear table
243 - [MINOR] Allow listing of stick table by key
244 - [MINOR] Break out all stick table socat command parsing
245 - [MINOR] More flexible clearing of stick table
246 - [MINOR] Allow showing and clearing by key of ipv6 stick tables
247 - [MINOR] Allow showing and clearing by key of integer stick tables
248 - [MINOR] Allow showing and clearing by key of string stick tables
249 - [CLEANUP] Remove assigned but unused variables
250 - [CLEANUP] peers.h: fix declarations
251 - [CLEANUP] session.c: Make functions static where possible
252 - [MINOR] Add active connection list to server
253 - [MINOR] Allow shutdown of sessions when a server becomes unavailable
254 - [MINOR] Add down termination condition
255 - [MINOR] Make appsess{,ion}_refresh static
256 - [MINOR] Add rdp_cookie pattern fetch function
257 - [CLEANUP] Remove unnecessary casts
258 - [MINOR] Add non-stick server option
259 - [MINOR] Consistently use error in tcp_parse_tcp_req()
260 - [MINOR] Consistently free expr on error in cfg_parse_listen()
261 - [MINOR] Free rdp_cookie_name on denint()
262 - [MINOR] Free tcp rules on denint()
263 - [MINOR] Free stick table pool on denint()
264 - [MINOR] Free stick rules on denint()
265 - [MEDIUM] Fix stick-table replication on soft-restart
266 - [MEDIUM] Correct ipmask() logic
267 - [MINOR] Correct type in table dump examples
268 - [MINOR] Fix build error in stream_int_register_handler()
269 - [MINOR] Use DPRINTF in assign_server()
270 - [BUG] checks: http-check expect could fail a check on multi-packet responses
271 - [DOC] fix minor typo in the "dispatch" doc
272 - [BUG] proto_tcp: fix address binding on remote source
273 - [MINOR] http: don't report the "haproxy" word on the monitoring response
274 - [REORG] http: move HTTP error codes back to proto_http.h
275 - [MINOR] http: make the "HTTP 200" status code configurable.
276 - [MINOR] http: partially revert the chunking optimization for now
277 - [MINOR] stream_sock: always clear BF_EXPECT_MORE upon complete transfer
278 - [CLEANUP] stream_sock: remove unneeded FL_TCP and factor out test
279 - [MEDIUM] http: add support for "http-no-delay"
280 - [OPTIM] http: optimize chunking again in non-interactive mode
281 - [OPTIM] stream_sock: avoid fast-forwarding of partial data
282 - [OPTIM] stream_sock: don't use splice on too small payloads
283 - [MINOR] config: make it possible to specify a cookie even without a server
284 - [BUG] stats: support url-encoded forms
285 - [MINOR] config: automatically compute a default fullconn value
286 - [CLEANUP] config: remove some left-over printf debugging code from previous patch
287 - [DOC] add missing entry or stick store-response
288 - [MEDIUM] http: add support for 'cookie' and 'set-cookie' patterns
289 - [BUG] halog: correctly handle truncated last line
290 - [MINOR] halog: make SKIP_CHAR stop on field delimiters
291 - [MINOR] halog: add support for HTTP log matching (-H)
292 - [MINOR] halog: gain back performance before SKIP_CHAR fix
293 - [OPTIM] halog: cache some common fields positions
294 - [OPTIM] halog: check once for correct line format and reuse the pointer
295 - [OPTIM] halog: remove many 'if' by using a function pointer for the filters
296 - [OPTIM] halog: remove support for tab delimiters in input data
297 - [BUG] session: risk of crash on out of memory (1.5-dev regression)
298 - [MINOR] session: try to emit a 500 response on memory allocation errors
299 - [OPTIM] stream_sock: reduce the default number of accepted connections at once
300 - [BUG] stream_sock: disable listener when system resources are exhausted
301 - [MEDIUM] proxy: add a PAUSED state to listeners and move socket tricks out of proxy.c
302 - [BUG] stream_sock: ensure orphan listeners don't accept too many connections
303 - [MINOR] listeners: add listen_full() to mark a listener full
304 - [MINOR] listeners: add support for queueing resource limited listeners
305 - [MEDIUM] listeners: put listeners in queue upon resource shortage
306 - [MEDIUM] listeners: queue proxy-bound listeners at the proxy's
307 - [MEDIUM] listeners: don't stop proxies when global maxconn is reached
308 - [MEDIUM] listeners: don't change listeners states anymore in maintain_proxies
309 - [CLEANUP] proxy: rename a few proxy states (PR_STIDLE and PR_STRUN)
310 - [MINOR] stats: report a "WAITING" state for sockets waiting for resource
311 - [MINOR] proxy: make session rate-limit more accurate
312 - [MINOR] sessions: only wake waiting listeners up if rate limit is OK
313 - [BUG] proxy: peers must only be stopped once, not upon every call to maintain_proxies
314 - [CLEANUP] proxy: merge maintain_proxies() operation inside a single loop
315 - [MINOR] task: new function task_schedule() to schedule a wake up
316 - [MAJOR] proxy: finally get rid of maintain_proxies()
317 - [BUG] proxy: stats frontend and peers were missing many initializers
318 - [MEDIUM] listeners: add a global listener management task
319 - [MINOR] proxy: make findproxy() return proxies from numeric IDs too
320 - [DOC] fix typos, "#" is a sharp, not a dash
321 - [MEDIUM] stats: add support for changing frontend's maxconn at runtime
322 - [MEDIUM] checks: group health checks methods by values and save option bits
323 - [MINOR] session-counters: add the ability to clear the counters
324 - [BUG] check: http-check expect + regex would crash in defaults section
325 - [MEDIUM] http: make x-forwarded-for addition conditional
326 - [REORG] build: move syscall redefinition to specific places
327 - [CLEANUP] update the year in the copyright banner
328 - [BUG] possible crash in 'show table' on stats socket
329 - [BUG] checks: use the correct destination port for sending checks
330 - [BUG] backend: risk of picking a wrong port when mapping is used with crossed families
331 - [MINOR] make use of set_host_port() and get_host_port() to get rid of family mismatches
332 - [DOC] fixed a few "sensible" -> "sensitive" errors
333 - [MINOR] make use of addr_to_str() and get_host_port() to replace many inet_ntop()
334 - [BUG] http: trailing white spaces must also be trimmed after headers
335 - [MINOR] stats: display "<NONE>" instead of the frontend name when unknown
336 - [MINOR] http: take a capture of too large requests and responses
337 - [MINOR] http: take a capture of truncated responses
338 - [MINOR] http: take a capture of bad content-lengths.
339 - [DOC] add a few old and uncommitted docs
340 - [CLEANUP] cfgparse: fix reported options for the "bind" keyword
341 - [MINOR] halog: add -hs/-HS to filter by HTTP status code range
342 - [MINOR] halog: support backslash-escaped quotes
343 - [CLEANUP] remove dirty left-over of a debugging message
344 - [MEDIUM] stats: disable complex socket reservation for stats socket
345 - [CLEANUP] remove a useless test in manage_global_listener_queue()
346 - [MEDIUM] stats: add the "set maxconn" setting to the command line interface
347 - [MEDIUM] add support for global.maxconnrate to limit the per-process conn rate.
348 - [MINOR] stats: report the current and max global connection rates
349 - [MEDIUM] stats: add the ability to adjust the global maxconnrate
350 - [BUG] peers: don't pre-allocate 65000 connections to each peer
351 - [MEDIUM] don't limit peers nor stats socket to maxconn nor maxconnrate
352 - [BUG] peers: the peer frontend must not emit any log
353 - [CLEANUP] proxy: make pause_proxy() perform the required controls and emit the logs
354 - [BUG] peers: don't keep a peers section which has a NULL frontend
355 - [BUG] peers: ensure the peers are resumed if they were paused
356 - [MEDIUM] stats: add the ability to enable/disable/shutdown a frontend at runtime
357 - [MEDIUM] session: make session_shutdown() an independant function
358 - [MEDIUM] stats: offer the possibility to kill a session from the CLI
359 - [CLEANUP] stats: centralize tests for backend/server inputs on the CLI
360 - [MEDIUM] stats: offer the possibility to kill sessions by server
361 - [MINOR] halog: do not consider byte 0x8A as end of line
362 - [MINOR] frontend: ensure debug message length is always initialized
363 - [OPTIM] halog: make fgets parse more bytes by blocks
364 - [OPTIM] halog: add assembly version of the field lookup code
365 - [MEDIUM] poll: add a measurement of idle vs work time
366 - [CLEANUP] startup: report only the basename in the usage message
367 - [MINOR] startup: add an option to change to a new directory
368 - [OPTIM] task: don't scan the run queue if we know it's empty
369 - [BUILD] stats: stdint is not present on solaris
370 - [DOC] update the README file to reflect new naming rules for patches
371 - [MINOR] stats: report the number of requests intercepted by the frontend
372 - [DOC] update ROADMAP file
373
Willy Tarreau04df1122011-04-08 00:56:41 +02003742011/04/08 : 1.5-dev6
375 - [BUG] stream_sock: use get_addr_len() instead of sizeof() on sockaddr_storage
376 - [BUG] TCP source tracking was broken with IPv6 changes
377 - [BUG] stick-tables did not work when converting IPv6 to IPv4
378 - [CRITICAL] fix risk of crash when dealing with space in response cookies
379
Willy Tarreaub06ed2c2011-03-29 01:10:33 +02003802011/03/29 : 1.5-dev5
381 - [BUG] standard: is_addr return value for IPv4 was inverted
382 - [MINOR] update comment about IPv6 support for server
383 - [MEDIUM] use getaddrinfo to resolve names if gethostbyname fail
384 - [DOC] update IPv6 support for bind
385 - [DOC] document IPv6 support for server
386 - [DOC] fix a minor typo
387 - [MEDIUM] IPv6 support for syslog
388 - [DOC] document IPv6 support for syslog
389 - [MEDIUM] IPv6 support for stick-tables
390 - [DOC] document IPv6 support for stick-tables
391 - [DOC] update ROADMAP file
392 - [BUG] session: src_conn_cur was returning src_conn_cnt instead
393 - [MINOR] frontend: add a make_proxy_line function
394 - [MEDIUM] stream_sock: add support for sending the proxy protocol header line
395 - [MEDIUM] server: add support for the "send-proxy" option
396 - [DOC] update the spec on the proxy protocol
397 - [BUILD] proto_tcp: fix build issue with CTTPROXY
398 - [DOC] update ROADMAP file
399 - [MEDIUM] config: rework the IPv4/IPv6 address parser to support host-only addresses
400 - [MINOR] cfgparse: better report wrong listening addresses and make use of str2sa_range
401 - [BUILD] add the USE_GETADDRINFO build option
402 - [TESTS] provide a test case for various address formats
403 - [BUG] session: conn_retries was not always initialized
404 - [BUG] log: retrieve the target from the session, not the SI
405 - [BUG] http: fix possible incorrect forwarded wrapping chunk size (take 2)
406 - [MINOR] tools: add two macros MID_RANGE and MAX_RANGE
407 - [BUG] http: fix content-length handling on 32-bit platforms
408 - [OPTIM] buffers: uninline buffer_forward()
409 - [BUG] stream_sock: fix handling for server side PROXY protocol
410 - [MINOR] acl: add support for table_cnt and table_avl matches
411 - [DOC] update ROADMAP file
412
Willy Tarreaue0052cc2011-03-13 22:15:02 +01004132011/03/13 : 1.5-dev4
414 - [MINOR] cfgparse: Check whether the path given for the stats socket actually fits into the sockaddr_un structure to avoid truncation.
415 - [MINOR] unix sockets : inherits the backlog size from the listener
416 - [CLEANUP] unix sockets : move create_uxst_socket() in uxst_bind_listener()
417 - [DOC] fix a minor typo
418 - [DOC] fix ignore-persist documentation
419 - [MINOR] add warnings on features not compatible with multi-process mode
420 - [BUG] http: fix http-pretend-keepalive and httpclose/tunnel mode
421 - [MINOR] stats: add support for several packets in stats admin
422 - [BUG] stats: admin commands must check the proxy state
423 - [BUG] stats: admin web interface must check the proxy state
424 - [MINOR] http: add pattern extraction method to stick on query string parameter
425 - [MEDIUM] add internal support for IPv6 server addresses
426 - [MINOR] acl: add be_id/srv_id to match backend's and server's id
427 - [MINOR] log: add support for passing the forwarded hostname
428 - [MINOR] log: ability to override the syslog tag
429 - [MINOR] checks: add PostgreSQL health check
430 - [DOC] update ROADMAP file
431 - [BUILD] pattern: use 'int' instead of 'int32_t'
432 - [OPTIM] linux: add support for bypassing libc to force using vsyscalls
433 - [BUG] debug: report the correct poller list in verbose mode
434 - [BUG] capture: do not capture a cookie if there is no memory left
435 - [BUG] appsession: fix possible double free in case of out of memory
436 - [CRITICAL] cookies: mixing cookies in indirect mode and appsession can crash the process
437 - [BUG] http: correctly update the header list when removing two consecutive headers
438 - [BUILD] add the CPU=native and ARCH=32/64 build options
439 - [BUILD] add -fno-strict-aliasing to fix warnings with gcc >= 4.4
440 - [CLEANUP] hash: move the avalanche hash code globally available
441 - [MEDIUM] hash: add support for an 'avalanche' hash-type
442 - [DOC] update roadmap file
443 - [BUG] http: do not re-enable the PROXY analyser on keep-alive
444 - [OPTIM] http: don't send each chunk in a separate packet
445 - [DOC] fix minor typos reported recently in the peers section
446 - [DOC] fix another typo in the doc
447 - [MINOR] stats: report HTTP message state and buffer flags in error dumps
448 - [BUG] http chunking: don't report a parsing error on connection errors
449 - [BUG] stream_interface: truncate buffers when sending error messages
450 - [MINOR] http: support wrapping messages in error captures
451 - [MINOR] http: capture incorrectly chunked message bodies
452 - [MINOR] stats: add global event ID and count
453 - [BUG] http: analyser optimizations broke pipelining
454 - [CLEANUP] frontend: only apply TCP-specific settings to TCP/TCP6 sockets
455 - [BUG] http: fix incorrect error reporting during data transfers
456 - [CRITICAL] session: correctly leave turn-around and queue states on abort
457 - [BUG] session: release slot before processing pending connections
458 - [MINOR] tcp: add support for dynamic MSS setting
459 - [BUG] stick-table: correctly terminate string keys during lookups
460 - [BUG] acl: fix handling of empty lines in pattern files
461 - [BUG] stick-table: use the private buffer when padding strings
462 - [BUG] ebtree: fix ebmb_lookup() with len smaller than the tree's keys
463 - [OPTIM] ebtree: ebmb_lookup: reduce stack usage by moving the return code out of the loop
464 - [OPTIM] ebtree: inline ebst_lookup_len and ebis_lookup_len
465 - [REVERT] undo the stick-table string key lookup fixes
466 - [MINOR] http: improve url_param pattern extraction to ignore empty values
467 - [BUILD] frontend: shut a warning with TCP_MAXSEG
468 - [BUG] http: update the header list's tail when removing the last header
469 - [DOC] fix minor typo in the proxy protocol doc
470 - [DOC] fix typos (http-request instead of http-check)
471 - [BUG] http: use correct ACL pointer when evaluating authentication
472 - [BUG] cfgparse: correctly count one socket per port in ranges
473 - [BUG] startup: set the rlimits before binding ports, not after.
474 - [BUG] acl: srv_id must return no match when the server is NULL
475 - [MINOR] acl: add ability to check for internal response-only parameters
476 - [MINOR] acl: srv_id is only valid in responses
477 - [MINOR] config: warn if response-only conditions are used in "redirect" rules
478 - [BUG] acl: fd leak when reading patterns from file
479 - [DOC] fix minor typo in "usesrc"
480 - [BUG] http: fix possible incorrect forwarded wrapping chunk size
481 - [BUG] http: fix computation of message body length after forwarding has started
482 - [BUG] http: balance url_param did not work with first parameters on POST
483 - [TESTS] update the url_param regression test to test check_post too
484 - [DOC] update ROADMAP
485 - [DOC] internal: reflect the fact that SI_ST_ASS is transient
486 - [BUG] config: don't crash on empty pattern files.
487 - [MINOR] stream_interface: make use of an applet descriptor for IO handlers
488 - [REORG] stream_interface: move the st0, st1 and private members to the applet
489 - [REORG] stream_interface: split the struct members in 3 parts
490 - [REORG] session: move client and server address to the stream interface
491 - [REORG] tcp: make tcpv4_connect_server() take the target address from the SI
492 - [MEDIUM] stream_interface: store the target pointer and type
493 - [CLEANUP] stream_interface: remove the applet.handler pointer
494 - [MEDIUM] log: take the logged server name from the stream interface
495 - [CLEANUP] session: remove data_source from struct session
496 - [CLEANUP] stats: make all dump functions only rely on the stream interface
497 - [REORG] session: move the data_ctx struct to the stream interface's applet
498 - [MINOR] proxy: add PR_O2_DISPATCH to detect dispatch mode
499 - [MINOR] cfgparse: only keep one of dispatch, transparent, http_proxy
500 - [MINOR] session: add a pointer to the new target into the session
501 - [MEDIUM] session: remove s->prev_srv which is not needed anymore
502 - [CLEANUP] stream_interface: use inline functions to manipulate targets
503 - [MAJOR] session: remove the ->srv pointer from struct session
504 - [MEDIUM] stats: split frontend and backend stats
505 - [MEDIUM] http: always evaluate http-request rules before stats http-request
506 - [REORG] http: move the http-request rules to proto_http
507 - [BUG] http: stats were not incremented on http-request deny
508 - [MINOR] checks: report it if checks fail due to socket creation error
509
Willy Tarreau442e8342010-11-11 23:29:35 +01005102010/11/11 : 1.5-dev3
511 - [DOC] fix http-request documentation
512 - [MEDIUM] enable/disable servers from the stats web interface
513 - [MEDIUM] stats: add an admin level
514 - [DOC] stats: document the "stats admin" statement
515 - [MINOR] startup: print the proxy socket which caused an error
516 - [CLEANUP] Remove unneeded chars allocation
517 - [MINOR] config: detect options not supported due to compilation options
518 - [MINOR] Add pattern's fetchs payload and payload_lv
519 - [MINOR] frontend: improve accept-proxy header parsing
520 - [MINOR] frontend: add tcpv6 support on accept-proxy bind
521 - [MEDIUM] Enhance message errors management on binds
522 - [MINOR] Manage unix socket source field on logs
523 - [MINOR] Manage unix socket source field on session dump on sock stats
524 - [MINOR] Support of unix listener sockets for debug and log event messages on frontend.c
525 - [MINOR] Add some tests on sockets family for port remapping and mode transparent.
526 - [MINOR] Manage socket type unix for some logs
527 - [MINOR] Enhance controls of socket's family on acls and pattern fetch
528 - [MINOR] Support listener's sockets unix on http logs.
529 - [MEDIUM] Add supports of bind on unix sockets.
530 - [BUG] stick table purge failure if size less than 255
531 - [BUG] stick table entries expire on counters updates/read or show table, even if there is no "expire" parameter
532 - [MEDIUM] Implement tcp inspect response rules
533 - [DOC] tcp-response content and inspect
534 - [MINOR] new acls fetch req_ssl_hello_type and rep_ssl_hello_type
535 - [DOC] acls rep_ssl_hello and req_ssl_hello
536 - [MEDIUM] Create new protected pattern types CONSTSTRING and CONSTDATA to force memcpy if data from protected areas need to be manipulated.
537 - [DOC] new type binary in stick-table
538 - [DOC] stick store-response and new patterns payload and payload_lv
539 - [MINOR] Manage all types (ip, integer, string, binary) on cli "show table" command
540 - [MEDIUM] Create updates tree on stick table to manage sync.
541 - [MAJOR] Add new files src/peer.c, include/proto/peers.h and include/types/peers.h for sync stick table management
542 - [MEDIUM] Manage peers section parsing and stick table registration on peers.
543 - [MEDIUM] Manage soft stop on peers proxy
544 - [DOC] add documentation for peers section
545 - [MINOR] checks: add support for LDAPv3 health checks
546 - [MINOR] add better support to "mysql-check"
547 - [BUG] Restore info about available active/backup servers
548 - [CONTRIB] Update haproxy.pl
549 - [CONTRIB] Update Cacti Tempates
550 - [CONTRIB] add templates for Cacti.
551 - [BUG] http: don't consider commas as a header delimitor within quotes
552 - [MINOR] support a global jobs counter
553 - [DOC] add a summary about cookie incompatibilities between specs and browsers
554 - [DOC] fix description of cookie "insert" and "indirect" modes
555 - [MEDIUM] http: fix space handling in the request cookie parser
556 - [MEDIUM] http: fix space handling in the response cookie parser
557 - [DOC] fix typo in the queue() definition (backend, not frontend)
558 - [BUG] deinit: unbind listeners before freeing them
559 - [BUG] stream_interface: only call si->release when both dirs are closed
560 - [MEDIUM] buffers: rework the functions to exchange between SI and buffers
561 - [DOC] fix typo in the avg_queue() and be_conn() definition (backend, not frontend)
562 - [MINOR] halog: add '-tc' to sort by termination codes
563 - [MINOR] halog: skip non-traffic logs for -st and -tc
564 - [BUG] stream_sock: cleanly disable the listener in case of resource shortage
565 - [BUILD] stream_sock: previous fix lacked the #include, causing a warning.
566 - [DOC] bind option is "defer-accept", not "defer_accept"
567 - [DOC] missing index entry for http-check send-state
568 - [DOC] tcp-request inspect-delay is for backends too
569 - [BUG] ebtree: string_equal_bits() could return garbage on identical strings
570 - [BUG] stream_sock: try to flush any extra pending request data after a POST
571 - [BUILD] proto_http: eliminate some build warnings with gcc-2.95
572 - [MEDIUM] make it possible to combine http-pretend-keepalived with httpclose
573 - [MEDIUM] tcp-request : don't wait for inspect-delay to expire when the buffer is full
574 - [MEDIUM] checks: add support for HTTP contents lookup
575 - [TESTS] add test-check-expect to test various http-check methods
576 - [MINOR] global: add "tune.chksize" to change the default check buffer size
577 - [MINOR] cookie: add options "maxidle" and "maxlife"
578 - [MEDIUM] cookie: support client cookies with some contents appended to their value
579 - [MINOR] http: make some room in the transaction flags to extend cookies
580 - [MINOR] cookie: add the expired (E) and old (O) flags for request cookies
581 - [MEDIUM] cookie: reassign set-cookie status flags to store more states
582 - [MINOR] add encode/decode function for 30-bit integers from/to base64
583 - [MEDIUM] cookie: check for maxidle and maxlife for incoming dated cookies
584 - [MEDIUM] cookie: set the date in the cookie if needed
585 - [DOC] document the cookie maxidle and maxlife parameters
586 - [BUG] checks: don't log backend down for all zero-weight servers
587 - [MEDIUM] checks: set server state to one state from failure when leaving maintenance
588 - [BUG] config: report correct keywords for "observe"
589 - [MINOR] checks: ensure that we can inherit binary checks from the defaults section
590 - [MINOR] acl: add the http_req_first match
591 - [DOC] fix typos about bind-process syntax
592 - [BUG] cookie: correctly unset default cookie parameters
593 - [MINOR] cookie: add support for the "preserve" option
594 - [BUG] ebtree: fix duplicate strings insertion
595 - [CONTRIB] halog: report per-url counts, errors and times
596 - [CONTRIB] halog: minor speed improvement in timer parser
597 - [MINOR] buffers: add a new request analyser flag for PROXY mode
598 - [MINOR] listener: add the "accept-proxy" option to the "bind" keyword
599 - [MINOR] standard: add read_uint() to parse a delimited unsigned integer
600 - [MINOR] standard: change arg type from const char* to char*
601 - [MINOR] frontend: add a new analyser to parse a proxied connection
602 - [MEDIUM] session: call the frontend_decode_proxy analyser on proxied connections
603 - [DOC] add the proxy protocol's specifications
604 - [DOC] document the 'accept-proxy' bind option
605 - [MINOR] cfgparse: report support of <path> for the 'bind' statements
606 - [DOC] add references to unix socket handling
607 - [MINOR] move MAXPATHLEN definition to compat.h
608 - [MEDIUM] unix sockets: cleanup the error reporting path
609 - [BUG] session: don't stop forwarding of data upon last packet
610 - [CLEANUP] accept: replace some inappropriate Alert() calls with send_log()
611 - [BUILD] peers: shut a printf format warning (key_size is a size_t)
612 - [BUG] accept: don't close twice upon error
613 - [OPTIM] session: don't recheck analysers when buffer flags have not changed
614 - [OPTIM] stream_sock: don't clear FDs that are already cleared
615 - [BUG] proto_tcp: potential bug on pattern fetch dst and dport
616
Willy Tarreau37242fa2010-08-28 19:21:00 +02006172010/08/28 : 1.5-dev2
618 - [MINOR] startup: release unused structs after forking
619 - [MINOR] startup: don't wait for nothing when no old pid remains
620 - [CLEANUP] reference product branch 1.5
621 - [MEDIUM] signals: add support for registering functions and tasks
622 - [MEDIUM] signals: support redistribution of signal zero when stopping
623 - [BUG] http: don't set auto_close if more data are expected
624
Willy Tarreaufc815fd2010-08-25 10:56:53 +02006252010/08/25 : 1.5-dev1
626 - [BUG] stats: session rate limit gets garbaged in the stats
627 - [DOC] mention 'option http-server-close' effect in Tq section
628 - [DOC] summarize and highlight persistent connections behaviour
629 - [DOC] add configuration samples
630 - [BUG] http: dispatch and http_proxy modes were broken for a long time
631 - [BUG] http: the transaction must be initialized even in TCP mode
632 - [BUG] tcp: dropped connections must be counted as "denied" not "failed"
633 - [BUG] consistent hash: balance on all servers, not only 2 !
634 - [CONTRIB] halog: report per-server status codes, errors and response times
635 - [BUG] http: the transaction must be initialized even in TCP mode (part 2)
636 - [BUG] client: always ensure to zero rep->analysers
637 - [BUG] session: clear BF_READ_ATTACHED before next I/O
638 - [BUG] http: automatically close response if req is aborted
639 - [BUG] proxy: connection rate limiting was eating lots of CPU
640 - [BUG] http: report correct flags in case of client aborts during body
641 - [TESTS] refine non-regression tests and add 4 new tests
642 - [BUG] debug: wrong pointer was used to report a status line
643 - [BUG] debug: correctly report truncated messages
644 - [DOC] document the "dispatch" keyword
645 - [BUG] stick_table: fix possible memory leak in case of connection error
646 - [CLEANUP] acl: use 'L6' instead of 'L4' in ACL flags relying on contents
647 - [MINOR] accept: count the incoming connection earlier
648 - [CLEANUP] tcp: move some non tcp-specific layer6 processing out of proto_tcp
649 - [CLEANUP] client: move some ACLs away to their respective locations
650 - [CLEANUP] rename client -> frontend
651 - [MEDIUM] separate protocol-level accept() from the frontend's
652 - [MINOR] proxy: add a list to hold future layer 4 rules
653 - [MEDIUM] config: parse tcp layer4 rules (tcp-request accept/reject)
654 - [MEDIUM] tcp: check for pure layer4 rules immediately after accept()
655 - [OPTIM] frontend: tell the compiler that errors are unlikely to occur
656 - [MEDIUM] frontend: check for LI_O_TCP_RULES in the listener
657 - [MINOR] frontend: only check for monitor-net rules if LI_O_CHK_MONNET is set
658 - [CLEANUP] buffer->cto is not used anymore
659 - [MEDIUM] session: finish session establishment sequence in with I/O handlers
660 - [MEDIUM] session: initialize server-side timeouts after connect()
661 - [MEDIUM] backend: initialize the server stream_interface upon connect()
662 - [MAJOR] frontend: don't initialize the server-side stream_int anymore
663 - [MEDIUM] session: move the conn_retries attribute to the stream interface
664 - [MEDIUM] session: don't assign conn_retries upon accept() anymore
665 - [MINOR] frontend: rely on the frontend and not the backend for INDEPSTR
666 - [MAJOR] frontend: reorder the session initialization upon accept
667 - [MINOR] proxy: add an accept() callback for the application layer
668 - [MAJOR] frontend: split accept() into frontend_accept() and session_accept()
669 - [MEDIUM] stats: rely on the standard session_accept() function
670 - [MINOR] buffer: refine the flags that may wake an analyser up.
671 - [MINOR] stream_sock: don't dereference a non-existing frontend
672 - [MINOR] session: differenciate between accepted connections and received connections
673 - [MEDIUM] frontend: count the incoming connection earlier
674 - [MINOR] frontend: count denied TCP requests separately
675 - [CLEANUP] stick_table: add/clarify some comments
676 - [BUILD] memory: add a few missing parenthesis to the pool management macros
677 - [MINOR] stick_table: add support for variable-sized data
678 - [CLEANUP] stick_table: rename some stksess struct members to avoid confusion
679 - [CLEANUP] stick_table: move pattern to key functions to stick_table.c
680 - [MEDIUM] stick_table: add room for extra data types
681 - [MINOR] stick_table: add support for "conn_cum" data type.
682 - [MEDIUM] stick_table: don't overwrite data when storing an entry
683 - [MINOR] config: initialize stick tables after all the parsing
684 - [MINOR] stick_table: provide functions to return stksess data from a type
685 - [MEDIUM] stick_table: move the server ID to a generic data type
686 - [MINOR] stick_table: enable it for frontends too
687 - [MINOR] stick_table: export the stick_table_key
688 - [MINOR] tcp: add per-source connection rate limiting
689 - [MEDIUM] stick_table: separate storage and update of session entries
690 - [MEDIUM] stick-tables: add a reference counter to each entry
691 - [MINOR] session: add a pointer to the tracked counters for the source
692 - [CLEANUP] proto_tcp: make the config parser a little bit more flexible
693 - [BUG] config: report the correct proxy type in tcp-request errors
694 - [MINOR] config: provide a function to quote args in a more friendly way
695 - [BUG] stick_table: the fix for the memory leak caused a regression
696 - [MEDIUM] backend: support servers on 0.0.0.0
697 - [BUG] stick-table: correctly refresh expiration timers
698 - [MEDIUM] stream-interface: add a ->release callback
699 - [MINOR] proxy: add a "parent" member to the structure
700 - [MEDIUM] session: make it possible to call an I/O handler on both SI
701 - [MINOR] tools: add a fast div64_32 function
702 - [MINOR] freq_ctr: add new types and functions for periods different from 1s
703 - [MINOR] errors: provide new status codes for config parsing functions
704 - [BUG] http: denied requests must not be counted as denied resps in listeners
705 - [MINOR] tools: add a get_std_op() function to parse operators
706 - [MEDIUM] acl: make use of get_std_op() to parse intger ranges
707 - [MAJOR] stream_sock: better wakeup conditions on read()
708 - [BUG] session: analysers must be checked when SI state changes
709 - [MINOR] http: reset analysers to listener's, not frontend's
710 - [MEDIUM] session: support "tcp-request content" rules in backends
711 - [BUILD] always match official tags when doing git-tar
712 - [MAJOR] stream_interface: fix the wakeup conditions for embedded iohandlers
713 - [MEDIUM] buffer: make buffer_feed* support writing non-contiguous chunks
714 - [MINOR] tcp: src_count acl does not have a permanent result
715 - [MAJOR] session: add track-counters to track counters related to the session
716 - [MINOR] stick-table: provide a table lookup function
717 - [MINOR] stick-table: use suffix "_cnt" for cumulated counts
718 - [MEDIUM] session: move counter ACL fetches from proto_tcp
719 - [MEDIUM] session: add concurrent connections counter
720 - [MEDIUM] session: add data in and out volume counters
721 - [MINOR] session: add the trk_conn_cnt ACL keyword to track connection counts
722 - [MEDIUM] session-counters: automatically update tracked connection count
723 - [MINOR] session: add the trk_conn_cur ACL keyword to track concurrent connection
724 - [MINOR] session: add trk_kbytes_* ACL keywords to track data size
725 - [MEDIUM] session: add a counter on the cumulated number of sessions
726 - [MINOR] config: support a comma-separated list of store data types in stick-table
727 - [MEDIUM] stick-tables: add support for arguments to data_types
728 - [MEDIUM] stick-tables: add stored data argument type checking
729 - [MEDIUM] session counters: add conn_rate and sess_rate counters
730 - [MEDIUM] session counters: add bytes_in_rate and bytes_out_rate counters
731 - [MINOR] stktable: add a stktable_update_key() function
732 - [MINOR] session-counters: add a general purpose counter (gpc0)
733 - [MEDIUM] session-counters: add HTTP req/err tracking
734 - [MEDIUM] stats: add "show table [<name>]" to dump a stick-table
735 - [MEDIUM] stats: add "clear table <name> key <value>" to clear table entries
736 - [CLEANUP] stick-table: declare stktable_data_types as extern
737 - [MEDIUM] stick-table: make use of generic types for stored data
738 - [MINOR] stats: correctly report errors on "show table" and "clear table"
739 - [MEDIUM] stats: add the ability to dump table entries matching criteria
740 - [DOC] configuration: document all the new tracked counters
741 - [DOC] stats: document "show table" and "clear table"
742 - [MAJOR] session-counters: split FE and BE track counters
743 - [MEDIUM] tcp: accept the "track-counters" in "tcp-request content" rules
744 - [MEDIUM] session counters: automatically remove expired entries.
745 - [MEDIUM] config: replace 'tcp-request <action>' with "tcp-request connection"
746 - [MEDIUM] session-counters: make it possible to count connections from frontend
747 - [MINOR] session-counters: use "track-sc{1,2}" instead of "track-{fe,be}-counters"
748 - [MEDIUM] session-counters: correctly unbind the counters tracked by the backend
749 - [CLEANUP] stats: use stksess_kill() to remove table entries
750 - [DOC] update the references to session counters and to tcp-request connection
751 - [DOC] cleanup: split a few long lines
752 - [MEDIUM] http: forward client's close when abortonclose is set
753 - [BUG] queue: don't dequeue proxy-global requests on disabled servers
754 - [BUG] stats: global stats timeout may be specified before stats socket.
755 - [BUG] conf: add tcp-request content rules to the correct list
756
Willy Tarreau21475e32010-05-23 08:46:08 +02007572010/05/23 : 1.5-dev0
758 - exact copy of 1.4.6
759
Willy Tarreau5fdd77d2010-05-16 22:34:28 +02007602010/05/16 : 1.4.6
761 - [BUILD] ebtree: update to v6.0.1 to remove references to dprintf()
762 - [CLEANUP] acl: make use of eb_is_empty() instead of open coding the tree's emptiness test
763 - [MINOR] acl: add srv_is_up() to check that a specific server is up or not
764 - [DOC] add a few precisions about the use of RDP cookies
765
Willy Tarreau9d4d9e32010-05-13 22:17:08 +02007662010/05/13 : 1.4.5
767 - [DOC] report minimum kernel version for tproxy in the Makefile
768 - [MINOR] add the "ignore-persist" option to conditionally ignore persistence
769 - [DOC] add the "ignore-persist" option to conditionally ignore persistence
770 - [DOC] fix ignore-persist/force-persist documentation
771 - [BUG] cttproxy: socket fd leakage in check_cttproxy_version
772 - [DOC] doc/configuration.txt: fix typos
773 - [MINOR] option http-pretend-keepalive is both for FEs and BEs
774 - [MINOR] fix possible crash in debug mode with invalid responses
775 - [MINOR] halog: add support for statisticts on status codes
776 - [OPTIM] halog: use a faster zero test in fgets()
777 - [OPTIM] halog: minor speedup by using unlikely()
778 - [OPTIM] halog: speed up fgets2-64 by about 10%
779 - [DOC] refresh the README file and merge the CONTRIB file into it
780 - [MINOR] acl: support loading values from files
781 - [MEDIUM] ebtree: upgrade to version 6.0
782 - [MINOR] acl trees: add flags and union members to store values in trees
783 - [MEDIUM] acl: add ability to insert patterns in trees
784 - [MEDIUM] acl: add tree-based lookups of exact strings
785 - [MEDIUM] acl: add tree-based lookups of networks
786 - [MINOR] acl: ignore empty lines and comments in pattern files
787 - [MINOR] stick-tables: add support for "stick on hdr"
788
Willy Tarreau9508c1c2010-04-07 23:12:24 +02007892010/04/07 : 1.4.4
790 - [BUG] appsession should match the whole cookie name
791 - [CLEANUP] proxy: move PR_O_SSL3_CHK to options2 to release one flag
792 - [MEDIUM] backend: move the transparent proxy address selection to backend
793 - [MINOR] add very fast IP parsing functions
794 - [MINOR] add new tproxy flags for dynamic source address binding
795 - [MEDIUM] add ability to connect to a server from an IP found in a header
796 - [BUILD] config: last patch breaks build without CONFIG_HAP_LINUX_TPROXY
797 - [MINOR] http: make it possible to pretend keep-alive when doing close
798 - [MINOR] config: report "default-server" instead of "(null)" in error messages
799
Willy Tarreau75934a12010-03-30 09:50:08 +02008002010/03/30 : 1.4.3
801 - [CLEANUP] stats: remove printf format warning in stats_dump_full_sess_to_buffer()
802 - [MEDIUM] session: better fix for connection to servers with closed input
803 - [DOC] indicate in the doc how to bind to port ranges
804 - [BUG] backend: L7 hashing must not be performed on incomplete requests
805 - [TESTS] add a simple program to test connection resets
806 - [MINOR] cli: "show errors" should display "backend <NONE>" when backend was not used
807 - [MINOR] config: emit warnings when HTTP-only options are used in TCP mode
808 - [MINOR] config: allow "slowstart 0s"
809 - [BUILD] 'make tags' did not consider files ending in '.c'
810 - [MINOR] checks: add the ability to disable a server in the config
811
Willy Tarreauda618cb2010-03-17 23:41:57 +01008122010/03/17 : 1.4.2
813 - [CLEANUP] product branch update
814 - [DOC] Some more documentation cleanups
815 - [BUG] clf logs segfault when capturing a non existant header
816 - [OPTIM] config: only allocate check buffer when checks are enabled
817 - [MEDIUM] checks: support multi-packet health check responses
818 - [CLEANUP] session: remove duplicate test
819 - [BUG] http: don't wait for response data to leave buffer is client has left
820 - [MINOR] proto_uxst: set accept_date upon accept() to the wall clock time
821 - [MINOR] stats: don't send empty lines in "show errors"
822 - [MINOR] stats: make the data dump function reusable for other purposes
823 - [MINOR] stats socket: add show sess <id> to dump details about a session
824 - [BUG] stats: connection reset counters must be plain ascii, not HTML
825 - [BUG] url_param hash may return a down server
826 - [MINOR] force null-termination of hostname
827 - [MEDIUM] connect to servers even when the input has already been closed
828 - [BUG] don't merge anonymous ACLs !
829 - [BUG] config: fix endless loop when parsing "on-error"
830 - [MINOR] http: don't mark a server as failed when it returns 501/505
831 - [OPTIM] checks: try to detect the end of response without polling again
832 - [BUG] checks: don't report an error when recv() returns an error after data
833 - [BUG] checks: don't abort when second poll returns an error
834 - [MINOR] checks: make shutdown() silently fail
835 - [BUG] http: fix truncated responses on chunk encoding when size divides buffer size
836 - [BUG] init: unconditionally catch SIGPIPE
837 - [BUG] checks: don't wait for a close to start parsing the response
838
Willy Tarreauc5e60c32010-03-04 23:39:19 +01008392010/03/04 : 1.4.1
840 - [BUG] Clear-cookie path issue
841 - [DOC] fix typo on stickiness rules
842 - [BUILD] fix BSD and OSX makefiles for missing files
843 - [BUILD] includes order breaks OpenBSD build
844 - [BUILD] fix some build warnings on Solaris with is* macros
845 - [BUG] logs: don't report "last data" when we have just closed after an error
846 - [BUG] logs: don't report "proxy request" when server closes early
847 - [BUILD] fix platform-dependant build issues related to crypt()
848 - [STATS] count transfer aborts caused by client and by server
849 - [STATS] frontend requests were not accounted for failed requests
850 - [MINOR] report total number of processed connections when stopping a proxy
851 - [DOC] be more clear about the limitation to one single monitor-net entry
852
Willy Tarreaue18fdfd2010-02-26 14:55:22 +01008532010/02/26 : 1.4.0
854 - [MINOR] stats: report maint state for tracking servers too
855 - [DOC] fix summary to add pattern extraction
856 - [DOC] Documentation cleanups
857 - [BUG] cfgparse memory leak and missing free calls in deinit()
858 - [BUG] pxid/puid/luid: don't shift IDs when some of them are forced
859 - [EXAMPLES] add auth.cfg
860 - [BUG] uri_auth: ST_SHLGNDS should be 0x00000008 not 0x0000008
861 - [BUG] uri_auth: do not attemp to convert uri_auth -> http-request more than once
862 - [BUILD] auth: don't use unnamed unions
863 - [BUG] config: report unresolvable host names as errors
864 - [BUILD] fix build breakage with DEBUG_FULL
865 - [DOC] fix a typo about timeout check and clarify the explanation.
866 - [MEDIUM] http: don't use trash to realign large buffers
867 - [STATS] report HTTP requests (total and rate) in frontends
868 - [STATS] separate frontend and backend HTTP stats
869 - [MEDIUM] http: revert to use a swap buffer for realignment
870 - [MINOR] stats: report the request rate in frontends as cell titles
871 - [MINOR] stats: mark areas with an underline when tooltips are available
872 - [DOC] reorder some entries to maintain the alphabetical order
873 - [DOC] cleanup of the keyword matrix
874
Willy Tarreaub05613d2010-02-02 10:18:28 +01008752010/02/02 : 1.4-rc1
876 - [MEDIUM] add a maintenance mode to servers
877 - [MINOR] http-auth: last fix was wrong
878 - [CONTRIB] add base64rev-gen.c that was used to generate the base64rev table.
879 - [MINOR] Base64 decode
880 - [MINOR] generic auth support with groups and encrypted passwords
881 - [MINOR] add ACL_TEST_F_NULL_MATCH
882 - [MINOR] http-request: allow/deny/auth support for frontend/backend/listen
883 - [MINOR] acl: add http_auth and http_auth_group
884 - [MAJOR] use the new auth framework for http stats
885 - [DOC] add info about userlists, http-request and http_auth/http_auth_group acls
886 - [STATS] make it possible to change a CLI connection timeout
887 - [BUG] patterns: copy-paste typo in type conversion arguments
888 - [MINOR] pattern: make the converter more flexible by supporting void* and int args
889 - [MINOR] standard: str2mask: string to netmask converter
890 - [MINOR] pattern: add support for argument parsers for converters
891 - [MINOR] pattern: add the "ipmask()" converting function
892 - [MINOR] config: off-by-one in "stick-table" after list of converters
893 - [CLEANUP] acl, patterns: make use of my_strndup() instead of malloc+memcpy
894 - [BUG] restore accidentely removed line in last patch !
895 - [MINOR] checks: make the HTTP check code add the CRLF itself
896 - [MINOR] checks: add the server's status in the checks
897 - [BUILD] halog: make without arch-specific optimizations
898 - [BUG] halog: fix segfault in case of empty log in PCT mode (cherry picked from commit fe362fe4762151d209b9656639ee1651bc2b329d)
899 - [MINOR] http: disable keep-alive when process is going down
900 - [MINOR] acl: add build_acl_cond() to make it easier to add ACLs in config
901 - [CLEANUP] config: use build_acl_cond() instead of parse_acl_cond()
902 - [CLEANUP] config: use warnif_cond_requires_resp() to check for bad ACLs
903 - [MINOR] prepare req_*/rsp_* to receive a condition
904 - [CLEANUP] config: specify correct const char types to warnif_* functions
905 - [MEDIUM] config: factor out the parsing of 20 req*/rsp* keywords
906 - [MEDIUM] http: make the request filter loop check for optional conditions
907 - [MEDIUM] http: add support for conditional request filter execution
908 - [DOC] add some build info about the AIX platform (cherry picked from commit e41914c77edbc40aebf827b37542d37d758e371e)
909 - [MEDIUM] http: add support for conditional request header addition
910 - [MEDIUM] http: add support for conditional response header rewriting
911 - [DOC] add some missing ACLs about response header matching
912 - [MEDIUM] http: add support for proxy authentication
913 - [MINOR] http-auth: make the 'unless' keyword work as expected
914 - [CLEANUP] config: use build_acl_cond() to simplify http-request ACL parsing
915 - [MEDIUM] add support for anonymous ACLs
916 - [MEDIUM] http: switch to tunnel mode after status 101 responses
917 - [MEDIUM] http: stricter processing of the CONNECT method
918 - [BUG] config: reset check request to avoid double free when switching to ssl/sql
919 - [MINOR] config: fix too large ssl-hello-check message.
920 - [BUG] fix error response in case of server error
921
Willy Tarreau2eba6aa2010-01-25 23:28:05 +01009222010/01/25 : 1.4-dev8
923 - [CLEANUP] Keep in sync "defaults" support between documentation and code
924 - [MEDIUM] http: add support for Proxy-Connection header
925 - [CRITICAL] buffers: buffer_insert_line2 must not change the ->w entry
926 - [MINOR] http: remove a copy-paste typo in transaction cleaning
927 - [BUG] http: trim any excess buffer data when recycling a connection
928
Willy Tarreau6939b552010-01-25 01:54:37 +01009292010/01/25 : 1.4-dev7
930 - [BUG] appsession: possible memory leak in case of out of memory condition
931 - [MINOR] config: don't accept 'appsession' in defaults section
932 - [MINOR] Add function to parse a size in configuration
933 - [MEDIUM] Add stick table (persistence) management functions and types
934 - [MEDIUM] Add pattern fetch management types and functions
935 - [MEDIUM] Add src dst and dport pattern fetches.
936 - [MEDIUM] Add stick table configuration and init.
937 - [MEDIUM] Add stick and store rules analysers.
938 - [MINOR] add option "mysql-check" to use MySQL health checks
939 - [BUG] health checks: fix requeued message
940 - [OPTIM] remove SSP_O_VIA and SSP_O_STATUS
941 - [BUG] checks: fix newline termination
942 - [MINOR] acl: add fe_id/so_id to match frontend's and socket's id
943 - [BUG] appsession's sessid must be reset at end of transaction
944 - [BUILD] appsession did not build anymore under gcc-2.95
945 - [BUG] server redirection used an uninitialized string.
946 - [MEDIUM] http: fix handling of message pointers
947 - [MINOR] http: fix double slash prefix with server redirect
948 - [MINOR] http redirect: add the ability to append a '/' to the URL
949 - [BUG] stream_interface: fix retnclose and remove cond_close
950 - [MINOR] http redirect: don't explicitly state keep-alive on 1.1
951 - [MINOR] http: move appsession 'sessid' from session to http_txn
952 - [OPTIM] reorder http_txn to optimize cache lines placement
953 - [MINOR] http: differentiate waiting for new request and waiting for a complete requst
954 - [MINOR] http: add a separate "http-keep-alive" timeout
955 - [MINOR] config: remove undocumented and buggy 'timeout appsession'
956 - [DOC] fix various too large lines
957 - [DOC] remove several trailing spaces
958 - [DOC] add the doc about stickiness
959 - [BUILD] remove a warning in standard.h on AIX
960 - [BUG] checks: chars are unsigned on AIX, check was always true
961 - [CLEANUP] stream_sock: MSG_NOSIGNAL is only for send(), not recv()
962 - [BUG] check: we must not check for error before reading a response
963 - [BUG] buffers: remove remains of wrong obsolete length check
964 - [OPTIM] stream_sock: don't shutdown(write) when the socket is in error
965 - [BUG] http: don't count req errors on client resets or t/o during keep-alive
966 - [MEDIUM] http: don't switch to tunnel mode upon close
967 - [DOC] add documentation about connection header processing
968 - [MINOR] http: add http_remove_header2() to remove a header value.
969 - [MINOR] tools: add a "word_match()" function to match words and ignore spaces
970 - [MAJOR] http: rework request Connection header handling
971 - [MAJOR] http: rework response Connection header handling
972 - [MINOR] add the ability to force kernel socket buffer size.
973 - [BUG] http_server_error() must not purge a previous pending response
974 - [OPTIM] http: don't delay response if next request is incomplete
975 - [MINOR] add the "force-persist" statement to force persistence on down servers
976 - [MINOR] http: logs must report persistent connections to down servers
977 - [BUG] buffer_replace2 must never change the ->w entry
978
Willy Tarreau11f8f542010-01-08 07:49:44 +01009792010/01/08 : 1.4-dev6
980 - [BUILD] warning in stream_interface.h
981 - [BUILD] warning ultoa_r returns char *
982 - [MINOR] hana: only report stats if it is enabled
983 - [MINOR] stats: add "a link" & "a href" for sockets
984 - [MINOR]: stats: add show-legends to report additional informations
985 - [MEDIUM] default-server support
986 - [BUG]: add 'observer', 'on-error', 'error-limit' to supported options list
987 - [MINOR] stats: add href to tracked server
988 - [BUG] stats: show UP/DOWN status also in tracking servers
989 - [DOC] Restore ability to search a keyword at the beginning of a line
990 - [BUG] stats: cookie should be reported under backend not under proxy
991 - [BUG] cfgparser/stats: fix error message
992 - [BUG] http: disable auto-closing during chunk analysis
993 - [BUG] http: fix hopefully last closing issue on data forwarding
994 - [DEBUG] add an http_silent_debug function to debug HTTP states
995 - [MAJOR] http: fix again the forward analysers
996 - [BUG] http_process_res_common() must not skip the forward analyser
997 - [BUG] http: some possible missed close remain in the forward chain
998 - [BUG] http: redirect needed to be updated after recent changes
999 - [BUG] http: don't set no-linger on response in case of forced close
1000 - [MEDIUM] http: restore the original behaviour of option httpclose
1001 - [TESTS] add a file to test various connection modes
1002 - [BUG] http: check options before the connection header
1003 - [MAJOR] session: fix the order by which the analysers are run
1004 - [MEDIUM] session: also consider request analysers added during response
1005 - [MEDIUM] http: make safer use of the DONT_READ and AUTO_CLOSE flags
1006 - [BUG] http: memory leak with captures when using keep-alive
1007 - [BUG] http: fix for capture memory leak was incorrect
1008 - [MINOR] http redirect: use proper call to return last response
1009 - [MEDIUM] http: wait for some flush of the response buffer before a new request
1010 - [MEDIUM] session: limit the number of analyser loops
1011
Willy Tarreau1f445892010-01-03 23:23:36 +010010122010/01/03 : 1.4-dev5
1013 - [MINOR] server tracking: don't care about the tracked server's mode
1014 - [MEDIUM] appsession: add "len", "prefix" and "mode" options
1015 - [MEDIUM] appsession: add the "request-learn" option
1016 - [BUG] Configuration parser bug when escaping characters
1017 - [MINOR] CSS & HTML fun
1018 - [MINOR] Collect & provide http response codes received from servers
1019 - [BUG] Fix silly typo: hspr_other -> hrsp_other
1020 - [MINOR] Add "a name" to stats page
1021 - [MINOR] add additional "a href"s to stats page
1022 - [MINOR] Collect & provide http response codes for frontends, fix backends
1023 - [DOC] some small spell fixes and unifications
1024 - [MEDIUM] Decrease server health based on http responses / events, version 3
1025 - [BUG] format '%d' expects type 'int', but argument 5 has type 'long int'
1026 - [BUG] config: fix erroneous check on cookie domain names, again
1027 - [BUG] Healthchecks: get a proper error code if connection cannot be completed immediately
1028 - [DOC] trivial fix for man page
1029 - [MINOR] config: report all supported options for the "bind" keyword
1030 - [MINOR] tcp: add support for the defer_accept bind option
1031 - [MINOR] unix socket: report the socket path in case of bind error
1032 - [CONTRIB] halog: support searching by response time
1033 - [DOC] add a reminder about obsolete documents
1034 - [DOC] point to 1.4 doc, not 1.3
1035 - [DOC] option tcp-smart-connect was missing from index
1036 - [MINOR] http: detect connection: close earlier
1037 - [CLEANUP] sepoll: clean up the fd_clr/fd_set functions
1038 - [OPTIM] move some rarely used fields out of fdtab
1039 - [MEDIUM] fd: merge fd_list into fdtab
1040 - [MAJOR] buffer: flag BF_DONT_READ to disable reads when not required
1041 - [MINOR] http: add new transaction flags for keep-alive and content-length
1042 - [MEDIUM] http request: parse connection, content-length and transfer-encoding
1043 - [MINOR] http request: update the TX_SRV_CONN_KA flag on rewrite
1044 - [MINOR] http request: simplify the test of no-data
1045 - [MEDIUM] http request: simplify POST length detection
1046 - [MEDIUM] http request: make use of pre-parsed transfer-encoding header
1047 - [MAJOR] http: create the analyser which waits for a response
1048 - [MINOR] http: pre-set the persistent flags in the transaction
1049 - [MEDIUM] http response: check body length and set transaction flags
1050 - [MINOR] http response: update the TX_CLI_CONN_KA flag on rewrite
1051 - [MINOR] http: remove the last call to stream_int_return
1052 - [IMPORT] import ebtree v5.0 into directory ebtree/
1053 - [MEDIUM] build: switch ebtree users to use new ebtree version
1054 - [CLEANUP] ebtree: remove old unused files
1055 - [BUG] definitely fix regparm issues between haproxy core and ebtree
1056 - [CLEANUP] ebtree: cast to char * to get rid of gcc warning
1057 - [BUILD] missing #ifndef in ebmbtree.h
1058 - [BUILD] missing #ifndef in ebsttree.h
1059 - [MINOR] tools: add hex2i() function to convert hex char to int
1060 - [MINOR] http: create new MSG_BODY sub-states
1061 - [BUG] stream_sock: BUF_INFINITE_FORWARD broke splice on 64-bit platforms
1062 - [DOC] option is "defer-accept", not "defer_accept"
1063 - [MINOR] http: keep pointer to beginning of data
1064 - [BUG] x-original-to: name was not set in default instance
1065 - [MINOR] http: detect tunnel mode and set it in the session
1066 - [BUG] config: fix error message when config file is not found
1067 - [BUG] config: fix wrong handling of too large argument count
1068 - [BUG] config: disable 'option httplog' on TCP proxies
1069 - [BUG] config: fix erroneous check on cookie domain names
1070 - [BUG] config: cookie domain was ignored in defaults sections
1071 - [MINOR] config: support passing multiple "domain" statements to cookies
1072 - [MINOR] ebtree: add functions to lookup non-null terminated strings
1073 - [MINOR] config: don't report error on all subsequent files on failure
1074 - [BUG] second fix for the printf format warning
1075 - [BUG] check_post: limit analysis to the buffer length
1076 - [MEDIUM] http: process request body in a specific analyser
1077 - [MEDIUM] backend: remove HTTP POST parsing from get_server_ph_post()
1078 - [MAJOR] http: completely process the "connection" header
1079 - [MINOR] http: only consider chunk encoding with HTTP/1.1
1080 - [MAJOR] buffers: automatically compute the maximum buffer length
1081 - [MINOR] http: move the http transaction init/cleanup code to proto_http
1082 - [MINOR] http: move 1xx handling earlier to eliminate a lot of ifs
1083 - [MINOR] http: introduce a new synchronisation state : HTTP_MSG_DONE
1084 - [MEDIUM] http: rework chunk-size parser
1085 - [MEDIUM] http: add a new transaction flags indicating if we know the transfer length
1086 - [MINOR] buffers: add buffer_ignore() to skip some bytes
1087 - [BUG] http: offsets are relative to the buffer, not to ->som
1088 - [MEDIUM] http: automatically re-aling request buffer
1089 - [BUG] http: body parsing must consider the start of message
1090 - [MINOR] new function stream_int_cond_close()
1091 - [MAJOR] http: implement body parser
1092 - [BUG] http: typos on several unlikely() around header insertion
1093 - [BUG] stream_sock: wrong max computation on recv
1094 - [MEDIUM] http: rework the buffer alignment logic
1095 - [BUG] buffers: wrong size calculation for displaced data
1096 - [MINOR] stream_sock: prepare for closing when all pending data are sent
1097 - [MEDIUM] http: add two more states for the closing period
1098 - [MEDIUM] http: properly handle "option forceclose"
1099 - [MINOR] stream_sock: add SI_FL_NOLINGER for faster close
1100 - [MEDIUM] http: make forceclose use SI_FL_NOLINGER
1101 - [MEDIUM] session: set SI_FL_NOLINGER when aborting on write timeouts
1102 - [MEDIUM] http: add some SI_FL_NOLINGER around server errors
1103 - [MINOR] config: option forceclose is valid in frontends too
1104 - [BUILD] halog: insufficient include path in makefile
1105 - [MEDIUM] http: make the analyser not rely on msg being initialized anymore
1106 - [MEDIUM] http: make the parsers able to wait for a buffer flush
1107 - [MAJOR] http: add support for option http-server-close
1108 - [BUG] http: ensure we abort data transfer on write error
1109 - [BUG] last fix was overzealous and disabled server-close
1110 - [BUG] http: fix erroneous trailers size computation
1111 - [MINOR] stream_sock: enable MSG_MORE when forwarding finite amount of data
1112 - [OPTIM] http: set MSG_MORE on response when a pipelined request is pending
1113 - [BUG] http: redirects were broken by chunk changes
1114 - [BUG] http: the request URI pointer is relative to the buffer
1115 - [OPTIM] http: don't immediately enable reading on request
1116 - [MINOR] http: move redirect messages to HTTP/1.1 with a content-length
1117 - [BUG] http: take care of errors, timeouts and aborts during the data phase
1118 - [MINOR] http: don't wait for sending requests to the server
1119 - [MINOR] http: make the conditional redirect support keep-alive
1120 - [BUG] http: fix cookie parser to support spaces and commas in values
1121 - [MINOR] config: some options were missing for "redirect"
1122 - [MINOR] redirect: add support for unconditional rules
1123 - [MINOR] config: centralize proxy struct initialization
1124 - [MEDIUM] config: remove the limitation of 10 reqadd/rspadd statements
1125 - [MEDIUM] config: remove the limitation of 10 config files
1126 - [CLEANUP] http: remove a remaining impossible condition
1127 - [OPTIM] http: optimize a bit the construct of the forward loops
1128
Willy Tarreauc82a9e52009-10-12 06:40:53 +020011292009/10/12 : 1.4-dev4
1130 - [DOC] add missing rate_lim and rate_max
1131 - [MAJOR] struct chunk rework
1132 - [MEDIUM] Health check reporting code rework + health logging, v3
1133 - [BUG] check if rise/fall has an argument and it is > 0
1134 - [MINOR] health checks logging unification
1135 - [MINOR] add "description", "node" and show-node"/"show-desc", remove "node-name", v2
1136 - [MINOR] Allow dots in show-node & add "white-space: nowrap" in th.pxname.
1137 - [DOC] Add information about http://haproxy.1wt.eu/contrib.html
1138 - [MINOR] Introduce include/types/counters.h
1139 - [CLEANUP] Move counters to dedicated structures
1140 - [MINOR] Add "clear counters" to clear statistics counters
1141 - [MEDIUM] Collect & provide separate statistics for sockets, v2
1142 - [BUG] Fix NULL pointer dereference in stats_check_uri_auth(), v2
1143 - [MINOR] acl: don't report valid acls as potential mistakes
1144 - [MINOR] Add cut_crlf(), ltrim(), rtrim() and alltrim()
1145 - [MINOR] Add chunk_htmlencode and chunk_asciiencode
1146 - [MINOR] Capture & display more data from health checks, v2
1147 - [BUG] task.c: don't assing last_timer to node-less entries
1148 - [BUG] http stats: large outputs sometimes got some parts chopped off
1149 - [MINOR] backend: export some functions to recount servers
1150 - [MINOR] backend: uninline some LB functions
1151 - [MINOR] include time.h from freq_ctr.h as is uses "now".
1152 - [CLEANUP] backend: move LB algos to individual files
1153 - [MINOR] lb_map: reorder code in order to ease integration of new hash functions
1154 - [CLEANUP] proxy: move last lb-specific bits to their respective files
1155 - [MINOR] backend: separate declarations of LB algos from their lookup method
1156 - [MINOR] backend: reorganize the LB algorithm selection
1157 - [MEDIUM] backend: introduce the "static-rr" LB algorithm
1158 - [MINOR] report list of supported pollers with -vv
1159 - [DOC] log-health-checks is an option, not a directive
1160 - [MEDIUM] new option "independant-streams" to stop updating read timeout on writes
1161 - [BUG] stats: don't call buffer_shutw(), but ->shutw() instead
1162 - [MINOR] stats: strip CR and LF from the input command line
1163 - [BUG] don't refresh timeouts late after detected activity
1164 - [MINOR] stats_dump_errors_to_buffer: use buffer_feed_chunk()
1165 - [MINOR] stats_dump_sess_to_buffer: use buffer_feed_chunk()
1166 - [MINOR] stats: make stats_dump_raw_to_buffer() use buffer_feed_chunk
1167 - [MEDIUM] stats: don't use s->ana_state anymore
1168 - [MINOR] remove now obsolete ana_state from the session struct
1169 - [MEDIUM] stats: make HTTP stats use an I/O handler
1170 - [MEDIUM] stream_int: adjust WAIT_ROOM handling
1171 - [BUG] config: look for ID conflicts in all sockets, not only last ones.
1172 - [MINOR] config: reference file and line with any listener/proxy/server declaration
1173 - [MINOR] config: report places of duplicate names or IDs
1174 - [MINOR] config: add pointer to file name in block/redirect/use_backend/monitor rules
1175 - [MINOR] tools: add a new get_next_id() function
1176 - [MEDIUM] config: automatically find unused IDs for proxies, servers and listeners
1177 - [OPTIM] counters: move some max numbers to the counters struct
1178 - [BUG] counters: fix segfault on missing counters for a listener
1179 - [MEDIUM] backend: implement consistent hashing variation
1180 - [MINOR] acl: add fe_conn, be_conn, queue, avg_queue
1181 - [MINOR] stats: use 'clear counters all' to clear all values
1182 - [MEDIUM] add access restrictions to the stats socket
1183 - [MINOR] buffers: add buffer_feed2() and make buffer_feed() measure string length
1184 - [MINOR] proxy: provide function to retrieve backend/server pointers
1185 - [MINOR] add the "initial weight" to the server struct.
1186 - [MEDIUM] stats: add the "get weight" command to report a server's weight
1187 - [MEDIUM] stats: add the "set weight" command
1188 - [BUILD] add a 'make tags' target
1189 - [MINOR] stats: add support for numeric IDs in set weight/get weight
1190 - [MINOR] stats: use a dedicated state to output static data
1191 - [OPTIM] stats: check free space before trying to print
1192
Willy Tarreau9f389e02009-09-24 00:12:50 +020011932009/09/24 : 1.4-dev3
1194 - [BUILD] compilation of haproxy-1.4-dev2 on FreeBSD
1195 - [MEDIUM] Collect & show information about last health check, v3
1196 - [MINOR] export the hostname variable so that all the code can access it
1197 - [MINOR] stats: add a new node-name setting
1198 - [MEDIUM] remove old experimental tcpsplice option
1199 - [BUILD] fix build for systems without SOL_TCP
1200 - [MEDIUM] move connection establishment from backend to the SI.
1201 - [MEDIUM] make the global stats socket part of a frontend
1202 - [MEDIUM] session: account per-listener connections
1203 - [MINOR] session: switch to established state if no connect function
1204 - [MEDIUM] make the unix stats sockets use the generic session handler
1205 - [CLEANUP] unix: remove uxst_process_session()
1206 - [CLEANUP] move remaining stats sockets code to dumpstats
1207 - [MINOR] move the initial task's nice value to the listener
1208 - [MINOR] cleanup set_session_backend by using pre-computed analysers
1209 - [MINOR] set s->srv_error according to the analysers
1210 - [MEDIUM] set rep->analysers from fe and be analysers
1211 - [MEDIUM] replace BUFSIZE with buf->size in computations
1212 - [MEDIUM] make it possible to change the buffer size in the configuration
1213 - [MEDIUM] report error on buffer writes larger than buffer size
1214 - [MEDIUM] stream_interface: add and use ->update function to resync
1215 - [CLEANUP] remove ifdef MSG_NOSIGNAL and define it instead
1216 - [MEDIUM] remove TCP_CORK and make use of MSG_MORE instead
1217 - [BUG] tarpit did not work anymore
1218 - [MINOR] acl: add support for hdr_ip to match IP addresses in headers
1219 - [MAJOR] buffers: fix misuse of the BF_SHUTW_NOW flag
1220 - [MINOR] buffers: provide more functions to handle buffer data
1221 - [MEDIUM] buffers: provide new buffer_feed*() function
1222 - [MINOR] buffers: add peekchar and peekline functions for stream interfaces
1223 - [MINOR] buffers: provide buffer_si_putchar() to send a char from a stream interface
1224 - [BUG] buffer_forward() would not correctly consider data already scheduled
1225 - [MINOR] buffers: add buffer_cut_tail() to cut only unsent data
1226 - [MEDIUM] stream_interface: make use of buffer_cut_tail() to report errors
1227 - [MAJOR] http: add support for HTTP 1xx informational responses
1228 - [MINOR] buffers: inline buffer_si_putchar()
1229 - [MAJOR] buffers: split BF_WRITE_ENA into BF_AUTO_CONNECT and BF_AUTO_CLOSE
1230 - [MAJOR] buffers: fix the BF_EMPTY flag's meaning
1231 - [BUG] stream_interface: SI_ST_CLO must have buffers SHUT
1232 - [MINOR] stream_sock: don't set SI_FL_WAIT_DATA if BF_SHUTW_NOW is set
1233 - [MEDIUM] add support for infinite forwarding
1234 - [BUILD] stream_interface: fix conflicting declaration
1235 - [BUG] buffers: buffer_forward() must not always clear BF_OUT_EMPTY
1236 - [BUG] variable buffer size ignored at initialization time
1237 - [MINOR] ensure that buffer_feed() and buffer_skip() set BF_*_PARTIAL
1238 - [BUG] fix buffer_skip() and buffer_si_getline() to correctly handle wrap-arounds
1239 - [MINOR] stream_interface: add SI_FL_DONT_WAKE flag
1240 - [MINOR] stream_interface: add iohandler callback
1241 - [MINOR] stream_interface: add functions to support running as internal/external tasks
1242 - [MEDIUM] session: call iohandler for embedded tasks (applets)
1243 - [MINOR] add a ->private member to the stream_interface
1244 - [MEDIUM] stats: prepare the connection for closing before dumping
1245 - [MEDIUM] stats: replace the stats socket analyser with an SI applet
1246
Willy Tarreau68dcd252009-08-09 22:57:09 +020012472009/08/09 : 1.4-dev2
1248 - [BUG] task: fix possible crash when some timeouts are not configured
1249 - [BUG] log: option tcplog would log to global if no logger was defined
1250
Willy Tarreaub03d2982009-07-29 22:38:32 +020012512009/07/29 : 1.4-dev1
1252 - [MINOR] acl: add support for matching of RDP cookies
1253 - [MEDIUM] add support for RDP cookie load-balancing
1254 - [MEDIUM] add support for RDP cookie persistence
1255 - [MINOR] add a new CLF log format
1256 - [MINOR] startup: don't imply -q with -D
1257 - [BUG] ensure that we correctly re-start old process in case of error
1258 - [MEDIUM] add support for binding to source port ranges during connect
1259 - [MINOR] config: track "no option"/"option" changes
1260 - [MINOR] config: support resetting options do default values
1261 - [MEDIUM] implement option tcp-smart-accept at the frontend
1262 - [MEDIUM] stream_sock: implement tcp-cork for use during shutdowns on Linux
1263 - [MEDIUM] implement tcp-smart-connect option at the backend
1264 - [MEDIUM] add support for TCP MSS adjustment for listeners
1265 - [MEDIUM] support setting a server weight to zero
1266 - [MINOR] make DEFAULT_MAXCONN user-configurable at build time
1267 - [MAJOR] session: don't clear buffer status flags anymore
1268 - [MAJOR] session: only check for timeouts when they have just occurred.
1269 - [MAJOR] session: simplify buffer error handling
1270 - [MEDIUM] config: split parser and checker in two functions
1271 - [MEDIUM] config: support loading multiple configuration files
1272 - [MEDIUM] stream_sock: don't close prematurely when nolinger is set
1273 - [MEDIUM] session: rework buffer analysis to permit permanent analysers
1274 - [MEDIUM] splice: set the capability on each stream_interface
1275 - [BUG] http: redirect rules were processed too early
1276 - [CLEANUP] remove unused DEBUG_PARSE_NO_SPEEDUP define
1277 - [MEDIUM] http: split request waiter from request processor
1278 - [MEDIUM] session: tell analysers what bit they were called for
1279 - [MAJOR] http: complete splitting of the remaining stages
1280 - [MINOR] report in the proxies the requirements for ACLs
1281 - [MINOR] http: rely on proxy->acl_requires to allocate hdr_idx
1282 - [MINOR] acl: add HTTP protocol detection (req_proto_http)
1283 - [MINOR] prepare callers of session_set_backend to handle errors
1284 - [BUG] default ACLs did not properly set the ->requires flag
1285 - [MEDIUM] allow a TCP frontend to switch to an HTTP backend
1286 - [MINOR] ensure we can jump from swiching rules to http without data
1287 - [MINOR] http: take http request timeout from the backend
1288 - [MINOR] allow TCP inspection rules to make use of HTTP ACLs
1289 - [BUILD] report commit date and not author's date as build date
1290 - [MINOR] acl: don't complain anymore when using L7 acls in TCP
1291 - [BUG] stream_sock: always shutdown(SHUT_WR) before closing
1292 - [BUG] stream_sock: don't stop reading when the poller reports an error
1293 - [BUG] config: tcp-request content only accepts "if" or "unless"
1294 - [BUG] task: fix possible timer drift after update
1295 - [MINOR] apply tcp-smart-connect option for the checks too
1296 - [MINOR] stats: better displaying in MSIE
1297 - [MINOR] config: improve error reporting in global section
1298 - [MINOR] config: improve error reporting in listen sections
1299 - [MINOR] config: the "capture" keyword is not allowed in backends
1300 - [MINOR] config: improve error reporting when checking configuration
1301 - [BUILD] fix a minor build warning on AIX
1302 - [BUILD] use "git cmd" instead of "git-cmd"
1303 - [CLEANUP] report 2009 not 2008 in the copyright banner.
1304 - [MINOR] print usage on the stats sockets upon invalid commands
1305 - [MINOR] acl: detect and report potential mistakes in ACLs
1306 - [BUILD] fix incorrect printf arg count with tcp_splice
1307 - [BUG] fix random pauses on last segment of a series
1308 - [BUILD] add support for build under Cygwin
1309
Willy Tarreau79158882009-06-09 11:59:08 +020013102009/06/09 : 1.4-dev0
1311 - exact copy of 1.3.18
1312
Willy Tarreaubeb05ae2009-05-10 20:27:47 +020013132009/05/10 : 1.3.18
1314 - [MEDIUM] add support for "balance hdr(name)"
1315 - [CLEANUP] give a little bit more information in error message
1316 - [MINOR] add X-Original-To: header
1317 - [BUG] x-original-to: fix missing initialization to default value
1318 - [BUILD] spec file: fix broken pipe during rpmbuild and add man file
1319 - [MINOR] improve reporting of misplaced acl/reqxxx rules
1320 - [MEDIUM] http: add options to ignore invalid header names
1321 - [MEDIUM] http: capture invalid requests/responses even if accepted
1322 - [BUILD] add format(printf) to printf-like functions
1323 - [MINOR] fix several printf formats and missing arguments
1324 - [BUG] stats: total and lbtot are unsigned
1325 - [MINOR] fix a few remaining printf-like formats on 64-bit platforms
1326 - [CLEANUP] remove unused make option from haproxy.spec
1327 - [BUILD] make it possible to pass alternative arch at build time
1328 - [MINOR] switch all stat counters to 64-bit
1329 - [MEDIUM] ensure we don't recursively call pool_gc2()
1330 - [CRITICAL] uninitialized response field can sometimes cause crashes
1331 - [BUG] fix wrong pointer arithmetics in HTTP message captures
1332 - [MINOR] rhel init script : support the reload operation
1333 - [MINOR] add basic signal handling functions
1334 - [BUILD] add signal.o to all makefiles
1335 - [MEDIUM] call signal_process_queue from run_poll_loop
1336 - [MEDIUM] pollers: don't wait if a signal is pending
1337 - [MEDIUM] convert all signals to asynchronous signals
1338 - [BUG] O(1) pollers should check their FD before closing it
1339 - [MINOR] don't close stdio fds twice
1340 - [MINOR] add options dontlog-normal and log-separate-errors
1341 - [DOC] minor fixes and rearrangements
1342 - [BUG] fix parser crash on unconditional tcp content rules
1343 - [DOC] rearrange the configuration manual and add a summary
1344 - [MINOR] standard: provide a new 'my_strndup' function
1345 - [MINOR] implement per-logger log level limitation
1346 - [MINOR] compute the max of sessions/s on fe/be/srv
1347 - [MINOR] stats: report max sessions/s and limit in CSV export
1348 - [MINOR] stats: report max sessions/s and limit in HTML stats
1349 - [MINOR] stats/html: use the arial font before helvetica
1350
Willy Tarreauf459b422009-03-29 15:26:57 +020013512009/03/29 : 1.3.17
1352 - Update specfile to build for v2.6 kernel.
1353 - [BUG] reset the stream_interface connect timeout upon connect or error
1354 - [BUG] reject unix accepts when connection limit is reached
1355 - [MINOR] show sess: report number of calls to each task
1356 - [BUG] don't call epoll_ctl() on closed sockets
1357 - [BUG] stream_sock: disable I/O on fds reporting an error
1358 - [MINOR] sepoll: don't count two events on the same FD.
1359 - [MINOR] show sess: report a lot more information about sessions
1360 - [BUG] stream_sock: check for shut{r,w} before refreshing some timeouts
1361 - [BUG] don't set an expiration date directly from now_ms
1362 - [MINOR] implement ulltoh() to write HTML-formatted numbers
1363 - [MINOR] stats/html: group digits by 3 to clarify numbers
1364 - [BUILD] remove haproxy-small.spec
1365 - [BUILD] makefile: remove unused references to linux24eold and EPOLL_CTL_WORKAROUND
1366
Willy Tarreau8019ffa2009-03-22 23:46:12 +010013672009/03/22 : 1.3.16
1368 - [BUILD] Fixed Makefile for linking pcre
1369 - [CONTRIB] selinux policy for haproxy
1370 - [MINOR] show errors: encode backslash as well as non-ascii characters
1371 - [MINOR] cfgparse: some cleanups in the consistency checks
1372 - [MINOR] cfgparse: set backends to "balance roundrobin" by default
1373 - [MINOR] tcp-inspect: permit the use of no-delay inspection
1374 - [MEDIUM] reverse internal proxy declaration order to match configuration
1375 - [CLEANUP] config: catch and report some possibly wrong rule ordering
1376 - [BUG] connect timeout is in the stream interface, not the buffer
1377 - [BUG] session: errors were not reported in termination flags in TCP mode
1378 - [MINOR] tcp_request: let the caller take care of errors and timeouts
1379 - [CLEANUP] http: remove some commented out obsolete code in process_response
1380 - [MINOR] update ebtree to version 4.1
1381 - [MEDIUM] scheduler: get rid of the 4 trees thanks and use ebtree v4.1
1382 - [BUG] sched: don't leave 3 lasts tasks unprocessed when niced tasks are present
1383 - [BUG] scheduler: fix improper handling of duplicates __task_queue()
1384 - [MINOR] sched: permit a task to stay up between calls
1385 - [MINOR] task: keep a task count and clean up task creators
1386 - [MINOR] stats: report number of tasks (active and running)
1387 - [BUG] server check intervals must not be null
1388 - [OPTIM] stream_sock: don't retry to read after a large read
1389 - [OPTIM] buffer: new BF_READ_DONTWAIT flag reduces EAGAIN rates
1390 - [MEDIUM] session: don't resync FSMs on non-interesting changes
1391 - [BUG] check for global.maxconn before doing accept()
1392 - [OPTIM] sepoll: do not re-check whole list upon accepts
1393
Willy Tarreau8185ced2009-03-09 22:45:53 +010013942009/03/09 : 1.3.16-rc2
1395 - [BUG] stream_sock: write timeout must be updated when forwarding !
1396
Willy Tarreauff63b432009-03-09 01:03:42 +010013972009/03/09 : 1.3.16-rc1
1398 - appsessions: cleanup DEBUG_HASH and initialize request_counter
1399 - [MINOR] acl: add new keyword "connslots"
1400 - [MINOR] cfgparse: fix off-by 2 in error message size
1401 - [BUILD] fix build with gcc 4.3
1402 - [BUILD] fix MANDIR default location to match documentation
1403 - [TESTS] add a debug patch to help trigger the stats bug
1404 - [BUG] Flush buffers also where there are exactly 0 bytes left
1405 - [MINOR] Allow to specify a domain for a cookie
1406 - [BUG/CLEANUP] cookiedomain -> cookie_domain rename + free(p->cookie_domain)
1407 - [MEDIUM] Fix memory freeing at exit
1408 - [MEDIUM] Fix memory freeing at exit, part 2
1409 - [BUG] Fix listen & more of 2 couples <ip>:<port>
1410 - [DOC] remove buggy comment for use_backend
1411 - [CRITICAL] fix server state tracking: it was O(n!) instead of O(n)
1412 - [MEDIUM] add support for URI hash depth and length limits
1413 - [MINOR] permit renaming of x-forwarded-for header
1414 - [BUILD] fix Makefile.bsd and Makefile.osx for stream_interface
1415 - [BUILD] Haproxy won't compile if DEBUG_FULL is defined
1416 - [MEDIUM] upgrade to ebtree v4.0
1417 - [DOC] update the README file with new build options
1418 - [MEDIUM] reduce risk of event starvation in ev_sepoll
1419 - [MEDIUM] detect streaming buffers and tag them as such
1420 - [MEDIUM] add support for conditional HTTP redirection
1421 - [BUILD] make install should depend on haproxy not "all"
1422 - [DEBUG] add a TRACE macro to facilitate runtime data extraction
1423 - [BUG] event pollers must not wait if a task exists in the run queue
1424 - [BUG] queue management: wake oldest request in queues
1425 - [BUG] log: reported queue position was offed-by-one
1426 - [BUG] fix the dequeuing logic to ensure that all requests get served
1427 - [DOC] documentation for the "retries" parameter was missing.
1428 - [MEDIUM] implement a monotonic internal clock
1429 - [MEDIUM] further improve monotonic clock by check forward jumps
1430 - [OPTIM] add branch prediction hints in list manipulations
1431 - [MAJOR] replace ultree with ebtree in wait-queues
1432 - [BUG] we could segfault during exit while freeing uri_auths
1433 - [BUG] wqueue: perform proper timeout comparisons with wrapping values
1434 - [MINOR] introduce now_ms, the current date in milliseconds
1435 - [BUG] disable buffer read timeout when reading stats
1436 - [MEDIUM] rework the wait queue mechanism
1437 - [BUILD] change declaration of base64tab to fix build with Intel C++
1438 - [OPTIM] shrink wake_expired_tasks() by using task_wakeup()
1439 - [MAJOR] use an ebtree instead of a list for the run queue
1440 - [MEDIUM] introduce task->nice and boot access to statistics
1441 - [OPTIM] task_queue: assume most consecutive timers are equal
1442 - [BUILD] silent a warning in unlikely() with gcc 4.x
1443 - [MAJOR] convert all expiration timers from timeval to ticks
1444 - [BUG] use_backend would not correctly consider "unless"
1445 - [TESTS] added test-acl.cfg to test some ACL combinations
1446 - [MEDIUM] add support for configuration keyword registration
1447 - [MEDIUM] modularize the global "stats" keyword configuration parser
1448 - [MINOR] cfgparse: add support for warnings in external functions
1449 - [MEDIUM] modularize the "timeout" keyword configuration parser
1450 - [MAJOR] implement tcp request content inspection
1451 - [MINOR] acl: add a new parsing function: parse_dotted_ver
1452 - [MINOR] acl: add req_ssl_ver in TCP, to match an SSL version
1453 - [CLEANUP] remove unused include/types/client.h
1454 - [CLEANUP] remove many #include <types/xxx> from C files
1455 - [CLEANUP] remove dependency on obsolete INTBITS macro
1456 - [DOC] document the new "tcp-request" keyword and associated ACLs
1457 - [MINOR] acl: add REQ_CONTENT to the list of default acls
1458 - [MEDIUM] acl: permit fetch() functions to set the result themselves
1459 - [MEDIUM] acl: get rid of dummy values in always_true/always_false
1460 - [MINOR] acl: add the "wait_end" acl verb
1461 - [MEDIUM] acl: enforce ACL type checking
1462 - [MEDIUM] acl: set types on all currently known ACL verbs
1463 - [MEDIUM] acl: when possible, report the name and requirements of ACLs in warnings
1464 - [CLEANUP] remove 65 useless NULL checks before free
1465 - [MEDIUM] memory: update pool_free2() to support NULL pointers
1466 - [MEDIUM] buffers: ensure buffer_shut* are properly called upon shutdowns
1467 - [MEDIUM] process_srv: rely on buffer flags for client shutdown
1468 - [MEDIUM] process_srv: don't rely at all on client state
1469 - [MEDIUM] process_cli: don't rely at all on server state
1470 - [BUG] fix segfault with url_param + check_post
1471 - [BUG] server timeout was not considered in some circumstances
1472 - [BUG] client timeout incorrectly rearmed while waiting for server
1473 - [MAJOR] kill CL_STINSPECT and CL_STHEADERS (step 1)
1474 - [MAJOR] get rid of SV_STANALYZE (step 2)
1475 - [MEDIUM] simplify and centralize request timeout cancellation and request forwarding
1476 - [MAJOR] completely separate HTTP and TCP states on the request path
1477 - [BUG] fix recently introduced loop when client closes early
1478 - [MAJOR] get rid of the SV_STHEADERS state
1479 - [MAJOR] better separation of response processing and server state
1480 - [MAJOR] clearly separate HTTP response processing from TCP server state
1481 - [MEDIUM] remove unused references to {CL|SV}_STSHUT*
1482 - [MINOR] term_trace: add better instrumentations to trace the code
1483 - [BUG] ev_sepoll: closed file descriptors could persist in the spec list
1484 - [BUG] process_response must not enable the read FD
1485 - [BUG] buffers: remove BF_MAY_CONNECT and fix forwarding issue
1486 - [BUG] process_response: do not touch srv_state
1487 - [BUG] maintain_proxies must not disable backends
1488 - [CLEANUP] get rid of BF_SHUT*_PENDING
1489 - [MEDIUM] buffers: add BF_EMPTY and BF_FULL to remove dependency on req/rep->l
1490 - [MAJOR] process_session: rely only on buffer flags
1491 - [MEDIUM] use buffer->wex instead of buffer->cex for connect timeout
1492 - [MEDIUM] centralize buffer timeout checks at the top of process_session
1493 - [MINOR] ensure the termination flags are set by process_xxx
1494 - [MEDIUM] session: move the analysis bit field to the buffer
1495 - [OPTIM] process_cli/process_srv: reduce the number of tests
1496 - [BUG] regparm is broken on gcc < 3
1497 - [BUILD] fix warning in proto_tcp.c with gcc >= 4
1498 - [MEDIUM] merge inspect_exp and txn->exp into request buffer
1499 - [BUG] process_cli/process_srv: don't call shutdown when already done
1500 - [BUG] process_request: HTTP body analysis must return zero if missing data
1501 - [TESTS] test-fsm: 22 regression tests for state machines
1502 - [BUG] Fix empty X-Forwarded-For header name when set in defaults section
1503 - [BUG] fix harmless but wrong fd insertion sequence
1504 - [MEDIUM] make it possible for analysers to follow the whole session
1505 - [MAJOR] rework of the server FSM
1506 - [OPTIM] remove useless fd_set(read) upon shutdown(write)
1507 - [MEDIUM] massive cleanup of process_srv()
1508 - [MEDIUM] second level of code cleanup for process_srv_data
1509 - [MEDIUM] third cleanup and optimization of process_srv_data()
1510 - [MEDIUM] process_srv_data: ensure that we always correctly re-arm timeouts
1511 - [MEDIUM] stream_sock_process_data moved to stream_sock.c
1512 - [MAJOR] make the client side use stream_sock_process_data()
1513 - [MEDIUM] split stream_sock_process_data
1514 - [OPTIM] stream_sock_read must check for null-reads more often
1515 - [MINOR] only call flow analysers when their read side is connected.
1516 - [MEDIUM] reintroduce BF_HIJACK with produce_content
1517 - [MINOR] re-arrange buffer flags and rename some of them
1518 - [MINOR] do not check for BF_SHUTR when computing write timeout
1519 - [OPTIM] ev_sepoll: detect newly created FDs and check them once
1520 - [OPTIM] reduce the number of calls to task_wakeup()
1521 - [OPTIM] force inlining of large functions with gcc >= 3
1522 - [MEDIUM] indicate a reason for a task wakeup
1523 - [MINOR] change type of fdtab[]->owner to void*
1524 - [MAJOR] make stream sockets aware of the stream interface
1525 - [MEDIUM] stream interface: add the ->shutw method as well as in and out buffers
1526 - [MEDIUM] buffers: add BF_READ_ATTACHED and BF_ANA_TIMEOUT
1527 - [MEDIUM] process_session: make use of the new buffer flags
1528 - [CLEANUP] process_session: move debug outputs out of the critical loop
1529 - [MEDIUM] move QUEUE and TAR timers to stream interfaces
1530 - [OPTIM] add compiler hints in tick_is_expired()
1531 - [MINOR] add buffer_check_timeouts() to check what timeouts have fired.
1532 - [MEDIUM] use buffer_check_timeouts instead of stream_sock_check_timeouts()
1533 - [MINOR] add an expiration flag to the stream_sock_interface
1534 - [MAJOR] migrate the connection logic to stream interface
1535 - [MAJOR] add a connection error state to the stream_interface
1536 - [MEDIUM] add the SN_CURR_SESS flag to the session to track open sessions
1537 - [MEDIUM] continue layering cleanups.
1538 - [MEDIUM] stream_interface: added a DISconnected state between CON/EST and CLO
1539 - [MEDIUM] remove stream_sock_update_data()
1540 - [MINOR] maintain a global session list in order to ease debugging
1541 - [BUG] shutw must imply close during a connect
1542 - [MEDIUM] process shutw during connection attempt
1543 - [MEDIUM] make the stream interface control the SHUT{R,W} bits
1544 - [MAJOR] complete layer4/7 separation
1545 - [CLEANUP] move the session-related functions to session.c
1546 - [MINOR] call session->do_log() for logging
1547 - [MINOR] replace the ambiguous client_return function by stream_int_return
1548 - [MINOR] replace client_retnclose() with stream_int_retnclose()
1549 - [MINOR] replace srv_close_with_err() with http_server_error()
1550 - [MEDIUM] make the http server error function a pointer in the session
1551 - [CLEANUP] session.c: removed some migration left-overs in sess_establish()
1552 - [MINOR] stream_sock_data_finish() should not expose fd
1553 - [MEDIUM] extract TCP request processing from HTTP
1554 - [MEDIUM] extract the HTTP tarpit code from process_request().
1555 - [MEDIUM] move the HTTP request body analyser out of process_request().
1556 - [MEDIUM] rename process_request to http_process_request
1557 - [BUG] fix forgotten server session counter
1558 - [MINOR] declare process_session in session.h, not proto_http.h
1559 - [MEDIUM] first pass of lifting to proto_uxst.c:uxst_event_accept()
1560 - [MINOR] add an analyser code for UNIX stats request
1561 - [MINOR] pre-set analyser flags on the listener at registration time
1562 - [BUG] do not forward close from cons to prod with analysers
1563 - [MEDIUM] ensure that sock->shutw() also closes read for init states
1564 - [MINOR] add an analyser state in struct session
1565 - [MAJOR] make unix sockets work again with stats
1566 - [MEDIUM] remove cli_fd, srv_fd, cli_state and srv_state from the session
1567 - [MINOR] move the listener reference from fd to session
1568 - [MEDIUM] reference the current hijack function in the buffer itself
1569 - [MINOR] slightly rebalance stats_dump_{raw,http}
1570 - [MINOR] add a new back-reference type : struct bref
1571 - [MINOR] add back-references to sessions for later use by a dumper.
1572 - [MEDIUM] add support for "show sess" in unix stats socket
1573 - [BUG] do not release the connection slot during a retry
1574 - [BUG] dynamic connection throttling could return a max of zero conns
1575 - [BUG] do not try to pause backends during reload
1576 - [BUG] ensure that listeners from disabled proxies are correctly unbound.
1577 - [BUG] acl-related keywords are not allowed in defaults sections
1578 - [BUG] cookie capture is declared in the frontend but checked on the backend
1579 - [BUG] critical errors should be reported even in daemon mode
1580 - [MINOR] redirect: add support for the "drop-query" option
1581 - [MINOR] redirect: add support for "set-cookie" and "clear-cookie"
1582 - [MINOR] redirect: in prefix mode a "/" means not to change the URI
1583 - [BUG] do not dequeue requests on a dead server
1584 - [BUG] do not dequeue the backend's pending connections on a dead server
1585 - [MINOR] stats: indicate if a task is running in "show sess"
1586 - [BUG] check timeout must not be changed if timeout.check is not set
1587 - [BUG] "option transparent" is for backend, not frontend !
1588 - [MINOR] transfer errors were not reported anymore in data phase
1589 - [MEDIUM] add a send limit to a buffer
1590 - [MEDIUM] don't report buffer timeout when there is I/O activity
1591 - [MEDIUM] indicate when we don't care about read timeout
1592 - [MINOR] add flags to indicate when a stream interface is waiting for space/data
1593 - [MEDIUM] enable inter-stream_interface wakeup calls
1594 - [MAJOR] implement autonomous inter-socket forwarding
1595 - [MINOR] add the splice_len member to the buffer struct in preparation of splice support
1596 - [MEDIUM] stream_sock: factor out the return path in case of no-writes
1597 - [MEDIUM] i/o: rework ->to_forward and ->send_max
1598 - [OPTIM] stream_sock: do not ask for polling on EAGAIN if we have read
1599 - [OPTIM] buffer: replace rlim by max_len
1600 - [OPTIM] stream_sock: factor out the buffer full handling out of the loop
1601 - [CLEANUP] replace a few occurrences of (flags & X) && !(flags & Y)
1602 - [CLEANUP] stream_sock: move the write-nothing condition out of the loop
1603 - [MEDIUM] split stream_sock_write() into callback and core functions
1604 - [MEDIUM] stream_sock_read: call ->chk_snd whenever there are data pending
1605 - [MINOR] stream_sock: fix a few wrong empty calculations
1606 - [MEDIUM] stream_sock: try to send pending data on chk_snd()
1607 - [MINOR] global.maxpipes: add the ability to reserve file descriptors for pipes
1608 - [MEDIUM] splice: add configuration options and set global.maxpipes
1609 - [MINOR] introduce structures required to support Linux kernel splicing
1610 - [MEDIUM] add definitions for Linux kernel splicing
1611 - [MAJOR] complete support for linux 2.6 kernel splicing
1612 - [BUG] reserve some pipes for backends with splice enabled
1613 - [MEDIUM] splice: add hints to support older buggy kernels
1614 - [MEDIUM] introduce pipe pools
1615 - [MEDIUM] splice: make use of pipe pools
1616 - [STATS] report pipe usage in the statistics
1617 - [OPTIM] make global.maxpipes default to global.maxconn/4 when not specified
1618 - [BUILD] fix snapshot date extraction with negative timezones
1619 - [MEDIUM] move global tuning options to the global structure
1620 - [MEDIUM] splice: add the global "nosplice" option
1621 - [BUILD] add USE_LINUX_SPLICE to enable LINUX_SPLICE on linux 2.6
1622 - [BUG] we must not exit if protocol binding only returns a warning
1623 - [MINOR] add support for bind interface name
1624 - [BUG] inform the user when root is expected but not set
1625 - [MEDIUM] add support for source interface binding
1626 - [MEDIUM] add support for source interface binding at the server level
1627 - [MEDIUM] implement bind-process to limit service presence by process
1628 - [DOC] document maxpipes, nosplice, option splice-{auto,request,response}
1629 - [DOC] filled the logging section of the configuration manual
1630 - [DOC] document HTTP status codes
1631 - [DOC] document a few missing info about errorfile
1632 - [BUG] fix random memory corruption using "show sess"
1633 - [BUG] fix unix socket processing of interrupted output
1634 - [DOC] add diagrams of queuing and future ACL design
1635 - [BUILD] proto_http did not build on gcc-2.95
1636 - [BUG] the "source" keyword must first clear optional settings
1637 - [BUG] global.tune.maxaccept must be limited even in mono-process mode
1638 - [MINOR] ensure that http_msg_analyzer updates pointer to invalid char
1639 - [MEDIUM] store a complete dump of request and response errors in proxies
1640 - [MEDIUM] implement error dump on unix socket with "show errors"
1641 - [DOC] document "show errors"
1642 - [MINOR] errors dump must use user-visible date, not internal date.
1643 - [MINOR] time: add __usec_to_1024th to convert usecs to 1024th of second
1644 - [MINOR] add curr_sec_ms and curr_sec_ms_scaled for current second.
1645 - [MEDIUM] measure and report session rate on frontend, backends and servers
1646 - [BUG] the "connslots" keyword was matched as "connlots"
1647 - [MINOR] acl: add 2 new verbs: fe_sess_rate and be_sess_rate
1648 - [MEDIUM] implement "rate-limit sessions" for the frontend
1649 - [BUG] interface binding: length must include the trailing zero
1650 - [BUG] typo in timeout error reporting : report *res and not *err
1651 - [OPTIM] maintain_proxies: only wake up when the frontend will be ready
1652 - [OPTIM] rate-limit: cleaner behaviour on low rates and reduce consumption
1653 - [BUG] switch server-side stream interface to close in case of abort
1654 - [CLEANUP] remove last references to term_trace
1655 - [OPTIM] freq_ctr: do not rotate the counters when reading
1656 - [BUG] disable any analysers for monitoring requests
1657 - [BUG] rate-limit in defaults section was ignored
1658 - [BUG] task: fix handling of duplicate keys
1659 - [OPTIM] task: don't unlink a task from a wait queue when waking it up
1660 - [OPTIM] displace tasks in the wait queue only if absolutely needed
1661 - [MEDIUM] minor update to the task api: let the scheduler queue itself
1662 - [BUG] event_accept() must always wake the task up, even in health mode
1663 - [CLEANUP] task: distinguish between clock ticks and timers
1664 - [OPTIM] task: reduce the number of calls to task_queue()
1665 - [OPTIM] do not re-check req buffer when only response has changed
1666 - [CLEANUP] don't enable kernel splicing when socket is closed
1667 - [CLEANUP] buffer_flush() was misleading, rename it as buffer_erase
1668 - [MINOR] buffers: implement buffer_flush()
1669 - [MEDIUM] rearrange forwarding condition to enable splice during analysis
1670 - [BUILD] build fixes for Solaris
1671 - [BUILD] proto_http did not build on gcc-2.95 (again)
1672 - [CONTRIB] halog: fast log parser for haproxy
1673 - [CONTRIB] halog: faster fgets() and add support for percentile reporting
1674
Willy Tarreau7b4c5ae2008-04-19 21:06:14 +020016752008/04/19 : 1.3.15
1676 - [BUILD] Added support for 'make install'
1677 - [BUILD] Added 'install-man' make target for installing the man page
1678 - [BUILD] Added 'install-bin' make target
1679 - [BUILD] Added 'install-doc' make target
1680 - [BUILD] Removed "/" after '$(DESTDIR)' in install targets
1681 - [BUILD] Changed 'install' target to install the binaries first
1682 - [BUILD] Replace hardcoded 'LD = gcc' with 'LD = $(CC)'
1683 - [MEDIUM]: Inversion for options
1684 - [MEDIUM]: Count retries and redispatches also for servers, fix redistribute_pending, extend logs, %d->%u cleanup
1685 - [BUG]: Restore clearing t->logs.bytes
1686 - [MEDIUM]: rework checks handling
1687 - [DOC] Update a "contrib" file with a hint about a scheme used for formathing subjects
1688 - [MEDIUM] Implement "track [<backend>/]<server>"
1689 - [MINOR] Implement persistent id for proxies and servers
1690 - [BUG] Don't increment server connections too much + fix retries
1691 - [MEDIUM]: Prevent redispatcher from selecting the same server, version #3
1692 - [MAJOR] proto_uxst rework -> SNMP support
1693 - [BUG] appsession lookup in URL does not work
1694 - [BUG] transparent proxy address was ignored in backend
1695 - [BUG] hot reconfiguration failed because of a wrong error check
1696 - [DOC] big update to the configuration manual
1697 - [DOC] large update to the configuration manual
1698 - [DOC] document more options
1699 - [BUILD] major rework of the GNU Makefile
1700 - [STATS] add support for "show info" on the unix socket
1701 - [DOC] document options forwardfor to logasap
1702 - [MINOR] add support for the "backlog" parameter
1703 - [OPTIM] introduce global parameter "tune.maxaccept"
1704 - [MEDIUM] introduce "timeout http-request" in frontends
1705 - [MINOR] tarpit timeout is also allowed in backends
1706 - [BUG] increment server connections for each connect()
1707 - [MEDIUM] add a turn-around state of one second after a connection failure
1708 - [BUG] fix typo in redispatched connection
1709 - [DOC] document options nolinger to ssl-hello-chk
1710 - [DOC] added documentation for "option tcplog" to "use_backend"
1711 - [BUG] connect_server: server might not exist when sending error report
1712 - [MEDIUM] support fully transparent proxy on Linux (USE_LINUX_TPROXY)
1713 - [MEDIUM] add non-local bind to connect() on Linux
1714 - [MINOR] add transparent proxy support for balabit's Tproxy v4
1715 - [BUG] use backend's source and not server's source with tproxy
1716 - [BUG] fix overlapping server flags
1717 - [MEDIUM] fix server health checks source address selection
1718 - [BUG] build failed on CONFIG_HAP_LINUX_TPROXY without CONFIG_HAP_CTTPROXY
1719 - [DOC] added "server", "source" and "stats" keywords
1720 - [DOC] all server parameters have been documented
1721 - [DOC] document all req* and rsp* keywords.
1722 - [DOC] added documentation about HTTP header manipulations
1723 - [BUG] log response byte count, not request
1724 - [BUILD] code did not build in full debug mode
1725 - [BUG] fix truncated responses with sepoll
1726 - [MINOR] use s->frt_addr as the server's address in transparent proxy
1727 - [MINOR] fix configuration hint about timeouts
1728 - [DOC] minor cleanup of the doc and notice to contributors
1729 - [MINOR] report correct section type for unknown keywords.
1730 - [BUILD] update MacOS Makefile to build on newer versions
1731 - [DOC] fix erroneous "useallbackups" option in the doc
1732 - [DOC] applied small fixes from early readers
1733 - [MINOR] add configuration support for "redir" server keyword
1734 - [MEDIUM] completely implement the server redirection method
1735 - [TESTS] add a test case for the server redirection mechanism
1736 - [DOC] add a configuration entry for "server ... redir <prefix>"
1737 - [BUILD] backend.c and checks.c did not build without tproxy !
1738 - Revert "[BUILD] backend.c and checks.c did not build without tproxy !"
1739 - [BUILD] backend.c and checks.c did not build without tproxy !
1740 - [OPTIM] used unsigned ints for HTTP state and message offsets
1741 - [OPTIM] GCC4's builtin_expect() is suboptimal
1742 - [BUG] failed conns were sometimes incremented in the frontend!
1743 - [BUG] timeout.check was not pre-set to eternity
1744 - [TESTS] add test-pollers.cfg to easily report pollers in use
1745 - [BUG] do not apply timeout.connect in checks if unset
1746 - [BUILD] ensure that makefile understands USE_DLMALLOC=1
1747 - [MINOR] silent gcc for a wrong warning
1748 - [CLEANUP] update .gitignore to ignore more temporary files
1749 - [CLEANUP] report dlmalloc's source path only if explictly specified
1750 - [BUG] str2sun could leak a small buffer in case of error during parsing
1751 - [BUG] option allbackups was not working anymore in roundrobin mode
1752 - [MAJOR] implementation of the "leastconn" load balancing algorithm
1753 - [BUILD] ensure that users don't build without setting the target anymore.
1754 - [DOC] document the leastconn LB algo
1755 - [MEDIUM] fix stats socket limitation to 16 kB
1756 - [DOC] fix unescaped space in httpchk example.
1757 - [BUG] fix double-decrement of server connections
1758 - [TESTS] add a test case for port mapping
1759 - [TESTS] add a benchmark for integer hashing
1760 - [TESTS] add new methods in ip-hash test file
1761 - [MAJOR] implement parameter hashing for POST requests
1762
Willy Tarreaue5b77e82007-12-06 01:25:44 +010017632007/12/06 : 1.3.14
1764 - New option http_proxy (Alexandre Cassen)
1765 - add support for "maxqueue" to limit server queue overload (Elijah Epifanov)
1766 - Check for duplicated conflicting proxies (Krzysztof Oledzki)
1767 - stats: report server and backend cumulated downtime (Krzysztof Oledzki)
1768 - use backends only with use_backend directive (Krzysztof Oledzki)
1769 - Handle long lines properly (Krzysztof Oledzki)
1770 - Implement and use generic findproxy and relax duplicated proxy check (Krzysztof Oledzki)
1771 - continous statistics (Krzysztof Oledzki)
1772 - add support for logging via a UNIX socket (Robert Tsai)
1773 - fix error checking in strl2ic/strl2uic()
1774 - fix calls to localtime()
1775 - provide easier-to-use ultoa_* functions
1776 - provide easy-to-use limit_r and LIM2A* macros
1777 - add a simple test for the status page
1778 - move error codes to common/errors.h
1779 - silent warning about LIST_* being redefined on OpenBSD
1780 - add socket address length to the protocols
1781 - group PR_O_BALANCE_* bits into a checkable value
1782 - externalize the "balance" option parser to backend.c
1783 - introduce the "url_param" balance method
1784 - make default_backend work in TCP mode too
1785 - disable warning about localtime_r on Solaris
1786 - adjust error messages about conflicting proxies
1787 - avoid calling some layer7 functions if not needed
1788 - simplify error path in event_accept()
1789 - add an options field to the listeners
1790 - added a new state to listeners
1791 - unbind_listener() must use fd_delete() and not close()
1792 - add a generic unbind_listener() primitive
1793 - add a generic delete_listener() primitive
1794 - add a generic unbind_all_listeners() primitive
1795 - create proto_tcp and move initialization of proxy listeners
1796 - stats: report numerical process ID, proxy ID and server ID
1797 - relative_pid was not initialized
1798 - missing header names in raw stats output
1799 - fix missing parenthesis in check_response_for_cacheability
1800 - small optimization on session_process_counters()
1801 - merge ebtree version 3.0
1802 - make ebtree headers multiple-include compatible
1803 - ebtree: include config.h for REGPRM*
1804 - differentiate between generic LB params and map-specific ones
1805 - add a weight divisor to the struct proxy
1806 - implement the Fast Weighted Round Robin (FWRR) algo
1807 - include filltab25.c to experiment on FWRR for dynamic weights
1808 - merge test-fwrr.cfg to validate dynamic weights
1809 - move the load balancing algorithm to be->lbprm.algo
1810 - change server check result to a bit field
1811 - implement "http-check disable-on-404" for graceful shutdown
1812 - secure the calling conditions of ->set_server_status_{up,down}
1813 - report disabled servers as "NOLB" when they are still UP
1814 - document the "http-check disable-on-404" option
1815 - http-check disable-on-404 is not limited to HTTP mode
1816 - add a test file for disable-on-404
1817 - use distinct bits per load-balancing algorithm type
1818 - implement the slowstart parameter for servers
1819 - document the server's slowstart parameter
1820 - stats: report the server warm up status in a "throttle" column
1821 - fix 2 minor issues on AIX
1822 - add the "nbsrv" ACL verb
1823 - add the "fail" condition to monitor requests
1824 - remove a warning from gcc due to htons() in standard.c
1825 - fwrr: ensure that we never overflow in placements
1826 - store the build options to report with -vv
1827 - fix the status return of the init script (R.I. Pienaar)
1828 - stats: real time monitoring script for unix socket (Prizee)
1829 - document "nbsrv" and "monitor fail"
1830 - restrict the set of allowed characters for identifiers
1831 - implement a time parsing function
1832 - add support for time units in the configuration
1833 - add a bit of documentation about timers
1834 - introduce separation between contimeout, and tarpit + queue
1835 - introduce the "timeout" keyword
1836 - grouped all timeouts in one structure
1837 - slowstart is in ms, not seconds
1838 - slowstart: ensure we don't start with a null weight
1839 - report the number of times each server was selected
1840 - fix build on AIX due to recent log changes
1841 - fix build on Solaris due to recent log changes
1842
Willy Tarreaue855f422007-10-18 22:38:22 +020018432007/10/18 : 1.3.13
1844 - replace the code under O'Reilly license (Arnaud Cornet)
1845 - add a small man page (Arnaud Cornet)
1846 - stats: report haproxy's version by default (Krzysztof Oledzki)
1847 - stats: count server retries and redispatches (Krzysztof Oledzki)
1848 - core: added easy support for Doug Lea's malloc (dlmalloc)
1849 - core: fade out memory usage when stopping proxies
1850 - core: moved the sockaddr pointer to the fdtab structure
1851 - core: add generic protocol support
1852 - core: implement client-side support for PF_UNIX sockets
1853 - stats: implement the CSV output
1854 - stats: add a link to the CSV export HTML page
1855 - stats: implement the statistics output on a unix socket
1856 - config: introduce the "stats" keyword in global section
1857 - build: centralize version and date into one file for each
1858 - tests: added a new hash algorithm
1859
18602007/10/18 : 1.3.12.3
1861 - add the "nolinger" option to disable data lingering (Alexandre Cassen)
1862 - fix double-free during clean exit (Krzysztof Oledzki)
1863 - prevent the system from sending an RST when closing health-checks
1864 (Krzysztof Oledzki)
1865 - do not add a cache-control header when on non-cacheable responses
1866 (Krzysztof Oledzki)
1867 - spread health checks even more (Krzysztof Oledzki)
1868 - stats: scope "." must match the backend and not the frontend
1869 - fixed call to chroot() during startup
1870 - fix wrong timeout computation in event_accept()
1871 - remove condition for exit() under fork() failure
1872
18732007/09/20 : 1.3.12.2
1874 - fix configuration sanity checks for TCP listeners
1875 - set the log socket receive window to zero bytes
1876 - pre-initialize timeouts to infinity, not zero
1877 - fix the SIGHUP message not to alert on server-less proxies
1878 - timeouts and retries could be ignored when switching backend
1879 - added a file to check that "retries" works.
1880 - O'Reilly has clarified its license
1881
18822007/09/05 : 1.3.12.1
1883 - spec I/O: fix allocations of spec entries for an FD
1884 - ensure we never overflow in chunk_printf()
1885 - improve behaviour with large number of servers per proxy
1886 - add support for "stats refresh <interval>"
1887 - stats page: added links for 'refresh' and 'hide down'
1888 - fix backend's weight in the stats page.
1889 - the "stats" keyword is not allowed in a pure frontend.
1890 - provide a test configuration file for stats and checks
1891
Willy Tarreaub21152b2007-06-17 23:41:40 +020018922007/06/17 : 1.3.12
1893 - fix segfault at exit when using captures
1894 - bug: negation in ACL conds was not cleared between terms
1895 - errorfile: use a local file to feed error messages
1896 - acl: support '-i' to ignore case when matching
1897 - acl: smarter integer comparison with operators eq,lt,gt,le,ge
1898 - acl: support maching on 'path' component
1899 - acl: implement matching on header values
1900 - acl: distinguish between request and response headers
1901 - acl: permit to return any header when no name specified
1902 - acl: provide default ACLs
1903 - added the 'use_backend' keyword for full content-switching
1904 - acl: specify the direction during fetches
1905 - acl: provide the argument length for fetch functions
1906 - acl: provide a reference to the expr to fetch()
1907 - improve memory freeing upon exit
1908 - str2net() must not change the const char *
1909 - shut warnings 'is*' macros from ctype.h on solaris
1910
Willy Tarreaua3503e02007-06-03 17:27:07 +020019112007/06/03 : 1.3.11.4
1912 - do not re-arm read timeout in SHUTR state !
1913 - optimize I/O by detecting system starvation
1914 - the epoll FD must not be shared between processes
1915 - limit the number of events returned by *poll*
1916
Willy Tarreau3c6fc072007-05-14 14:40:25 +020019172007/05/14 : 1.3.11.3
1918 - pre-initialize timeouts with tv_eternity during parsing
1919
Willy Tarreaufc273c22007-05-14 03:42:47 +020019202007/05/14 : 1.3.11.2
1921 - fixed broken health-checks since switch to timeval
1922
Willy Tarreau3c5340c2007-05-14 03:18:43 +020019232007/05/14 : 1.3.11.1
1924 - fixed ev_kqueue which was forgotten during the switch to timeval
1925 - allowed null timeouts for past events in select
1926
Willy Tarreau544eb402007-05-14 02:42:33 +020019272007/05/14 : 1.3.11
1928 - fixed ev_sepoll again by rewriting the state machine
1929 - switched all timeouts to timevals instead of milliseconds
1930 - improved memory management using mempools v2.
1931 - several minor optimizations
1932
Willy Tarreau9ca931f2007-05-10 07:51:17 +020019332007/05/09 : 1.3.10.2
1934 - fixed build on OpenBSD (missing types.h)
1935
Willy Tarreau13398d32007-05-09 22:58:28 +020019362007/05/09 : 1.3.10.1
1937 - fixed sepoll transition matrix (two states were missing)
1938
Willy Tarreau61beedf2007-05-09 01:44:58 +020019392007/05/08 : 1.3.10
1940 - several fixes in ev_sepoll
1941 - fixed some expiration dates on some tasks
1942 - fixed a bug in connection establishment detection due to speculative I/O
1943 - fixed rare bug occuring on TCP with early close (reported by Andy Smith)
1944 - implemented URI hashing algorithm (Guillaume Dallaire)
1945 - implemented SMTP health checks (Peter van Dijk)
1946 - replaced the rbtree with ul2tree from old scheduler project
1947 - new framework for generic ACL support
1948 - added the 'acl' and 'block' keywords to the config language
1949 - added several ACL criteria and matches (IP, port, URI, ...)
1950 - cleaned up and better modularization for some time functions
1951 - fixed list macros
1952 - fixed useless memory allocation in str2net()
1953 - store the original destination address in the session
1954
Willy Tarreau6e0433f2007-04-16 01:18:12 +020019552007/04/15 : 1.3.9
1956 - modularized the polling mechanisms and use function pointers instead
1957 of macros at many places
1958 - implemented support for FreeBSD's kqueue() polling mechanism
1959 - fixed a warning on OpenBSD : MIN/MAX redefined
1960 - change socket registration order at startup to accomodate kqueue.
1961 - several makefile cleanups to support old shells
1962 - fix build with limits.h once for all
1963 - ev_epoll: do not rely on fd_sets anymore, use changes stacks instead.
1964 - fdtab now holds the results of polling
1965 - implemented support for speculative I/O processing with epoll()
1966 - remove useless calls to shutdown(SHUT_RD), resulting in small speed boost
1967 - auto-registering of pollers at load time
1968
Willy Tarreau42c76592007-04-03 20:30:13 +020019692007/04/03 : 1.3.8.2
1970 - rewriting either the status line or request line could crash the
1971 process due to a pointer which ought to be reset before parsing.
1972 - rewriting the status line in the response did not work, it caused
1973 a 502 Bad Gateway due to an erroneous state during parsing
1974
Willy Tarreauef6d7612007-04-01 11:06:22 +020019752007/04/01 : 1.3.8.1
1976 - fix reqadd when no option httpclose is used.
1977 - removed now unused fiprm and beprm from proxies
1978 - split logs into two versions : TCP and HTTP
1979 - added some docs about http headers storage and acls
1980 - added a VIM script for syntax color highlighting (Bruno Michel)
1981
Willy Tarreaud661cc02007-03-26 00:24:56 +020019822007/03/25 : 1.3.8
1983 - fixed several bugs which might have caused a crash with bad configs
1984 - several optimizations in header processing
1985 - many progresses towards transaction-based processing
1986 - option forwardfor may be used in frontends
1987 - completed HTTP response processing
1988 - some code refactoring between request and response processing
1989 - new HTTP header manipulation functions
1990 - optimizations on the recv() patch to reduce CPU usage under very
1991 high data rates.
1992 - more user-friendly help about the 'usesrc' keyword (CTTPROXY)
1993 - username/groupname support from Marcus Rueckert
1994 - added the "except" keyword to the "forwardfor" option (Bryan German)
1995 - support for health-checks on other addresses (Fabrice Dulaunoy)
1996 - makefile for MacOS 10.4 / Darwin (Dan Zinngrabe)
1997 - do not insert "Connection: close" in HTTP/1.0 messages
1998
Willy Tarreau9cabf702007-01-26 23:49:01 +010019992007/01/26 : 1.3.7
2000 - fix critical bug introduced with 1.3.6 : an empty request header
2001 may lead to a crash due to missing pointer assignment
2002 - hdr_idx might be left uninitialized in debug mode
2003 - fixed build on FreeBSD due to missing fd_set declaration
2004
Willy Tarreaue7a24382007-01-22 08:57:44 +010020052007/01/22 : 1.3.6.1
2006 - change in the header chaining broke cookies and authentication
2007
Willy Tarreau49e1ee82007-01-22 00:56:46 +010020082007/01/22 : 1.3.6
2009 - stats now support the HEAD method too
2010 - extracted http request from the session
2011 - huge rework of the HTTP parser which is now a 28-state FSM.
2012 - linux-style likely/unlikely macros for optimization hints
2013 - do not create a server socket when there's no server
2014 - imported lots of docs
2015
Willy Tarreau5871f8e2007-01-07 02:47:01 +010020162007/01/07 : 1.3.5
2017 - stats: swap color sets for active and backup servers
2018 - try to guess server check port when unset
2019 - added complete support and doc for TCP Splicing
2020 - replace the wait-queue linked list with an rbtree.
2021 - a few bugfixes and cleanups
2022
Willy Tarreau85270da2007-01-02 00:59:39 +010020232007/01/02 : 1.3.4
2024 - support for cttproxy on the server side to present the client
2025 address to the server.
2026 - added support for SO_REUSEPORT on Linux (needs kernel patch)
2027 - new RFC2616-compliant HTTP request parser with header indexing
2028 - split proxies in frontends, rulesets and backends
2029 - implemented the 'req[i]setbe' to select a backend depending
2030 on the contents
2031 - added the 'default_backend' keyword to select a default BE.
2032 - new stats page featuring FEs and BEs + bytes in both dirs
2033 - improved log format to indicate the backend and the time in ms.
2034 - lots of cleanups
2035
Willy Tarreau9c9fea42006-10-16 00:03:35 +020020362006/10/15 : 1.3.3
2037 - fix broken redispatch option in case the connection has already
2038 been marked "in progress" (ie: nearly always).
2039 - support regparm on x86 to speed up some often called functions
2040 - removed a few useless calls to gettimeofday() in log functions.
2041 - lots of 'const char*' cleanups
2042 - turn every FD_* into functions which are faster on recent CPUs
2043
Willy Tarreau690f9aa2006-09-03 11:23:06 +020020442006/09/03 : 1.3.2
2045 - started the changes towards I/O completion callbacks. stream_sock* have
2046 replaced event_*.
2047 - added the new "reqtarpit" and "reqitarpit" protection features
2048
Willy Tarreau8f2b8552006-07-09 17:11:39 +020020492006/07/09 : 1.3.1 (1.2.15)
2050 - now, haproxy warns about missing timeout during startup to try to
2051 eliminate all those buggy configurations.
2052 - added "Content-Type: text/html" in responses wherever appropriate, as
2053 suggested by Cameron Simpson.
2054 - implemented "option ssl-hello-chk" to use SSLv3 CLIENT HELLO messages to
2055 test server's health
2056 - implemented "monitor-uri" so that haproxy can reply to a specific URI with
2057 an "HTTP/1.0 200 OK" response. This is useful to validate multiple proxies
2058 at once.
2059
Willy Tarreaub9e98b62006-07-03 10:32:46 +020020602006/06/29 : 1.3.0
2061 - exploded the whole file into multiple .c and .h. No functionnal
Willy Tarreau8f2b8552006-07-09 17:11:39 +02002062 difference is expected at all.
2063 - fixed a bug by which neither stats nor error messages could be returned if
2064 'clitimeout' was missing.
Willy Tarreaub9e98b62006-07-03 10:32:46 +02002065
willy tarreau7e6328d2006-05-21 23:26:20 +020020662006/05/21 : 1.2.14
2067 - new HTML status report with the 'stats' keyword.
2068 - added the 'abortonclose' option to better resist traffic surges
2069 - implemented dynamic traffic regulation with the 'minconn' option
2070 - show request time on denied requests
2071 - definitely fixed hot reconf on OpenBSD by the use of SO_REUSEPORT
2072 - now a proxy instance is allowed to run without servers, which is
2073 useful to dedicate one instance to stats
2074 - added lots of error counters
2075 - a missing parenthesis preventd matching of cacheable cookies
2076 - a missing parenthesis in poll_loop() might have caused missed events.
2077
Willy TARREAU4404b7e2006-05-14 10:00:09 +020020782006/05/14 : 1.2.13.1
2079 - an uninitialized field in the struct session could cause a crash when
2080 the session was freed. This has been encountered on Solaris only.
2081 - Solaris and OpenBSD no not support shutdown() on listening socket. Let's
2082 be nice to them by performing a soft stop if pause fails.
2083
willy tarreauc3a2e072006-05-13 18:51:38 +020020842006/05/13 : 1.2.13
2085 - 'maxconn' server parameter to do per-server session limitation
2086 - queueing to support non-blocking session limitation
2087 - fixed removal of cookies for cookie-less servers such as backup servers
2088 - two separate wait queues for expirable and non-expirable tasks provide
2089 better performance with lots of sessions.
2090 - some code cleanups and performance improvements
2091 - made state dumps a bit more verbose
2092 - fixed missing checks for NULL srv in dispatch mode
2093 - load balancing on backup servers was not possible in source hash mode.
2094 - two session flags shared the same bit, but fortunately they were not
2095 compatible.
2096
willy tarreauc0d4bbd2006-04-15 21:47:50 +020020972006/04/15 : 1.2.12
2098 Very few changes preparing for more important changes to support per-server
2099 session limitations and queueing :
2100 - ignore leading empty lines in HTTP requests as suggested by RFC2616.
2101 - added the 'weight' parameter to the servers, limited to 1..256. It applies
2102 to roundrobin and source hash.
2103 - the optional '-s' option could clobber '-st' and '-sf' if compiled in.
2104
willy tarreaue0dd2692006-03-30 16:27:34 +020021052006/03/30 : 1.2.11.1
2106 - under some conditions, it might have been possible that when the
2107 last dead server became available, it would not have been used
2108 till another one would have changed state. Could not be reproduced
2109 at all, however seems possible from the code.
2110
willy tarreaud2058dc2006-03-25 20:35:41 +010021112006/03/25 : 1.2.11
2112 - added the '-db' command-line option to disable backgrounding.
2113 - added the -sf/-st command-line arguments which are used to specify
2114 a list of pids to send a FINISH or TERMINATE signal upon startup.
2115 They will also be asked to release their port if a bind fails.
2116 - reworked the startup mechanism to allow the sending of a signal to a list
2117 of old pids if a socket cannot be bound, with a retry for a limited amount
2118 of time (1 second by default).
2119 - added the ability to enforce limits on memory usage.
2120 - added the 'source' load-balancing algorithm which uses the source IP(v4|v6)
2121 - re-architectured the server round-robin mechanism to ease integration of
2122 other algorithms. It now relies on the number of active and backup servers.
2123 - added a counter for the number of active and backup servers, and report
2124 these numbers upon SIGHUP or state change.
2125
willy tarreaubfad5742006-03-23 14:19:11 +010021262006/03/23 : 1.2.10.1
2127 - while fixing the backup server round-robin "feature", a new bug was
2128 introduced which could miss some backup servers.
2129 - the displayed proxy name was wrong when dumping upon SIGHUP.
2130
willy tarreauaaff30e2006-03-19 21:30:41 +010021312006/03/19 : 1.2.10
2132 - assert.h is needed when DEBUG is defined.
2133 - ENORMOUS long standing bug affecting the epoll polling system :
2134 event_data is a union, not a structure !
2135 - Make fd management more robust and easier to debug. Also some
2136 micro-optimisations.
2137 - Limit the number of consecutive accept() in multi-process mode.
2138 This produces a more evenly distributed load across the processes and
2139 slightly improves performance by reducing bottlenecks.
2140 - Make health-checks be more regular, and faster to retry after a timeout.
2141 - Fixed some messages to ease parsing of alerts.
2142 - provided a patch to enable epoll on RHEL3 kernels.
2143 - Separated OpenBSD build from the main Makefile into a new one.
2144
willy tarreau50be0172006-03-15 19:41:19 +010021452006/03/15 : 1.2.9
2146 - haproxy could not be stopped after being paused, it had to be woken up
2147 first. This has been fixed.
2148 - the 'ulimit-n' parameter is now optional and by default computed from
2149 maxconn + the number of listeners + the number of health-checks.
2150 - it is now possible to specify a maximum number of connections at build
2151 time with the SYSTEM_MAXCONN define. The value set in the configuration
2152 file will then be limited to this value, and only the command-line '-n'
2153 option will be able to bypass it. It will prevent against accidental
2154 high memory usage on small systems.
2155 - RFC2616 expects that any HTTP agent accepts multi-line headers. Earlier
2156 versions did not detect a line beginning with a space as the continuation
2157 of previous header. It is now correct.
2158 - health checks sent to servers configured with identical intervals were
2159 sent in perfect synchronisation because the initial time was the same
2160 for all. This could induce high load peaks when fragile servers were
2161 hosting tens of instances for the same application. Now the load is
2162 spread evenly across the smallest interval amongst a listener.
2163 - a new 'forceclose' option was added to make the proxy close the outgoing
2164 channel to the server once it has sent all its headers and the server
2165 starts responding. This helps some servers which don't close upon the
2166 'Connection: close' header. It implies 'option httpclose'.
2167 - there was a bug in the way the backup servers were handled. They were
2168 erroneously load-balanced while the doc said the opposite. Since
2169 load-balanced backup servers is one of the features some people have
2170 been asking for, the problem was fixed to reflect the documented
2171 behaviour and a new option 'allbackups' was introduced to provide the
2172 feature to those who need it.
2173 - a never ending connect() could lead to a fast select() loop if its
2174 timeout times the number of retransmits exceeded the server read or write
2175 timeout, because the later was used to compute select()'s timeout while
2176 the connection timeout was not reached.
2177 - now we initialize the libc's localtime structures very early so that even
2178 under OOM conditions, we can still send dated error messages without
2179 segfaulting.
2180 - the 'daemon' mode implies 'quiet' and disables 'verbose' because file
2181 descriptors are closed.
2182
willy tarreau065f1c02006-01-29 22:10:07 +010021832006/01/29 : 1.2.8
2184 - fixed a nasty bug affecting poll/epoll which could return unmodified data
2185 from the server to the client, and sometimes lead to memory corruption
2186 crashing the process.
2187 - added the new pause/play mechanism with SIGTTOU/SIGTTIN for hot-reconf.
2188
21892005/12/18 : 1.2.7.1
2190 - the "retries" option was ignored because connect() could not return an
2191 error if the connection failed before the timeout.
2192 - TCP health-checks could not detect a connection refused in poll/epoll
2193 mode.
2194
willy tarreaua56eca72005-12-18 01:34:42 +010021952005/11/13 : 1.2.7
willy tarreau77bc8542005-12-18 01:31:43 +01002196 - building with -DUSE_PCRE should include PCRE headers and not regex.h. At
2197 least on Solaris, this caused the libc's regex primitives to be used instead
2198 of PCRE, which caused trouble on group references. This is now fixed.
willy tarreaud0fb4652005-12-18 01:32:04 +01002199 - delayed the quiet mode during startup so that most of the startup alerts can
2200 be displayed even in quiet mode.
2201 - display an alert when a listener has no address, invalid or no port, or when
2202 there are no enabled listeners upon startup.
willy tarreau4373b962005-12-18 01:32:31 +01002203 - added "static-pcre" to the list of supported regex options in the Makefile.
willy tarreau77bc8542005-12-18 01:31:43 +01002204
willy tarreaub952e1d2005-12-18 01:31:20 +010022052005/10/09 : 1.2.7rc (1.1.33rc)
2206 - second batch of socklen_t changes.
2207 - clean-ups from Cameron Simpson.
2208 - because tv_remain() does not know about eternity, using no timeout can
2209 make select() spin around a null time-out. Bug reported by Cameron Simpson.
2210 - client read timeout was not properly set to eternity initialized after an
2211 accept() if it was not set in the config. It remained undetected so long
2212 because eternity is 0 and newly allocated pages are zeroed by the system.
2213 - do not call get_original_dst() when not in transparent mode.
2214 - implemented a workaround for a bug in certain epoll() implementations on
2215 linux-2.4 kernels (epoll-lt <= 0.21).
2216 - implemented TCP keepalive with new options : tcpka, clitcpka, srvtcpka.
2217
willy tarreauc5f73ed2005-12-18 01:26:38 +010022182005/08/07 : 1.2.6
2219 - clean-up patch from Alexander Lazic fixes build on Debian 3.1 (socklen_t).
2220
22212005/07/06 : 1.2.6-pre5 (1.1.32)
willy tarreau0fe39652005-12-18 01:25:24 +01002222 - added the number of active sessions (proxy/process) in the logs
2223
22242005/07/06 : 1.2.6-pre4 (1.1.32-pre4)
willy tarreaub1285d52005-12-18 01:20:14 +01002225 - the time-out fix introduced in 1.1.25 caused a corner case where it was
2226 possible for a client to keep a connection maintained regardless of the
2227 timeout if the server closed the connection during the HEADER phase,
2228 while the client ignored the close request while doing nothing in the
2229 other direction. This has been fixed now by ensuring that read timeouts
2230 are re-armed when switching to any SHUTW state.
2231
22322005/07/05 : 1.2.6-pre3 (1.1.32-pre3)
2233 - enhanced error reporting in the logs. Now the proxy will precisely detect
2234 various error conditions related to the system and/or process limits, and
2235 generate LOG_EMERG logs indicating that a resource has been exhausted.
2236 - logs will contain two new characters for the error cause : 'R' indicates
2237 a resource exhausted, and 'I' indicates an internal error, though this
2238 one should never happen.
2239 - server connection timeouts can now be reported in the logs (sC), as well
2240 as connections refused because of maxconn limitations (PC).
2241
22422005/07/05 : 1.2.6-pre2 (1.1.32-pre2)
2243 - new global configuration keyword "ulimit-n" may be used to raise the FD
2244 limit to usable values.
2245 - a warning is now displayed on startup if the FD limit is lower than the
2246 configured maximum number of sockets.
2247
22482005/07/05 : 1.2.6-pre1 (1.1.32-pre1)
2249 - new configuration keyword "monitor-net" makes it possible to be monitored
2250 by external devices which connect to the proxy without being logged nor
2251 forwarded to any server. Particularly useful on generic TCPv4 relays.
2252
willy tarreau5dffb602005-12-18 01:15:23 +010022532005/06/21 : 1.2.5.2
2254 - fixed build on PPC where chars are unsigned by default
2255
willy tarreau08dedbe2005-12-18 01:13:48 +010022562005/05/02 : 1.2.5.1
2257 - dirty hack to fix a bug introduced with epoll : if we close an FD and
2258 immediately reassign it to another session through a connect(), the
2259 Prev{Read,Write}Events are not updated, which causes trouble detecting
2260 changes, thus leading to many timeouts at high loads.
2261
willy tarreau64a3cc32005-12-18 01:13:11 +010022622005/04/30 : 1.2.5 (1.1.31)
2263 - changed the runtime argument to disable epoll() to '-de'
2264 - changed the runtime argument to disable poll() to '-dp'
2265 - added global options 'nopoll' and 'noepoll' to do the same at the
2266 configuration level.
2267 - added a 'linux24e' target to the Makefile for Linux 2.4 systems patched to
2268 support epoll().
2269 - changed default FD_SETSIZE to 65536 on Solaris (default=1024)
2270 - conditionned signals redirection to #ifdef DEBUG_MEMORY
2271
willy tarreau1c2ad212005-12-18 01:11:29 +010022722005/04/26 : 1.2.5-pre4
2273 - made epoll() support a compile-time option : ENABLE_EPOLL
2274 - provided a very little libc replacement for a possibly missing epoll()
2275 implementation which can be enabled by -DUSE_MY_EPOLL
2276 - implemented the poll() poller, which can be enabled with -DENABLE_POLL.
2277 The equivalent runtime argument becomes '-P'. A few tests show that it
2278 performs like select() with many fds, but slightly slower (certainly
2279 because of the higher amount of memory involved).
2280 - separated the 3 polling methods and the tasks scheduler into 4 distinct
2281 functions which makes the code a lot more modular.
2282 - moved some event tables to private static declarations inside the poller
2283 functions.
2284 - the poller functions can now initialize themselves, run, and cleanup.
2285 - changed the runtime argument to enable epoll() to '-E'.
2286 - removed buggy epoll_ctl() code in the client_retnclose() function. This
2287 function was never meant to remove anything.
2288 - fixed a typo which caused glibc to yell about a double free on exit.
2289 - removed error checking after epoll_ctl(DEL) because we can never know if
2290 the fd is still active or already closed.
2291 - added a few entries in the makefile
2292
willy tarreauad90a0c2005-12-18 01:09:15 +010022932005/04/25 : 1.2.5-pre3
2294 - experimental epoll() support (use temporary '-e' argument)
2295
22962005/04/24 : 1.2.5-pre2
willy tarreauc1f47532005-12-18 01:08:26 +01002297 - implemented the HTTP 303 code for error redirection. This forces the
2298 browser to fetch the given URI with a GET request. The new keyword for
2299 this is 'errorloc303', and a new 'errorloc302' keyword has been created
2300 to make them easily distinguishable.
2301 - added more controls in the parser for valid use of '\x' sequence.
2302 - few fixes from Alex & Klaus
2303
willy tarreauad90a0c2005-12-18 01:09:15 +010023042005/02/17 : 1.2.5-pre1
willy tarreauc1f47532005-12-18 01:08:26 +01002305 - fixed a few errors in the documentation
2306
23072005/02/13
2308 - do not pre-initialize unused file-descriptors before select() anymore.
2309
willy tarreau12350152005-12-18 01:03:27 +010023102005/01/22 : 1.2.4
2311 - merged Alexander Lazic's and Klaus Wagner's work on application
2312 cookie-based persistence. Since this is the first merge, this version is
2313 not intended for general use and reports are more than welcome. Some
2314 documentation is really needed though.
2315
willy tarreau0174f312005-12-18 01:02:42 +010023162005/01/22 : 1.2.3 (1.1.30)
2317 - add an architecture guide to the documentation
2318 - released without any changes
2319
23202004/12/26 : 1.2.3-pre1 (1.1.30-pre1)
2321 - increased default BUFSIZE to 16 kB to accept max headers of 8 kB which is
2322 compatible with Apache. This limit can be configured in the makefile now.
2323 Thanks to Eric Fehr for the checks.
2324 - added a per-server "source" option which now makes it possible to bind to
2325 a different source for each (potentially identical) server.
2326 - changed cookie-based server selection slightly to allow several servers to
2327 share a same cookie, thus making it possible to associate backup servers to
2328 live servers and ease soft-stop for maintenance periods. (Alexander Lazic)
2329 - added the cookie 'prefix' mode which makes it possible to use persistence
2330 with thin clients which support only one cookie. The server name is prefixed
2331 before the application cookie, and restore back.
2332 - fixed the order of servers within an instance to match documentation. Now
2333 the servers are *really* used in the order of their declaration. This is
2334 particularly important when multiple backup servers are in use.
2335
willy tarreau4302f492005-12-18 01:00:37 +010023362004/10/18 : 1.2.2 (1.1.29)
2337 - fixed a bug where a TCP connection would be logged twice if the 'logasap'
2338 option was enabled without the 'tcplog' option.
2339 - encode_string() would use hdr_encode_map instead of the map argument.
2340
23412004/08/10 : (1.1.29-pre2)
2342 - the logged request is now encoded with '#XX' for unprintable characters
2343 - new keywords 'capture request header' and 'capture response header' enable
2344 logging of arbitrary HTTP headers in requests and responses
2345 - removed "-DSOLARIS" after replacing the last inet_aton() with inet_pton()
2346
willy tarreau982249e2005-12-18 00:57:06 +010023472004/06/06 : 1.2.1 (1.1.28)
2348 - added the '-V' command line option to verbosely report errors even though
2349 the -q or 'quiet' options are specified. This is useful with '-c'.
2350 - added a Red Hat init script and a .spec from Simon Matter <simon.matter@invoca.ch>
willy tarreau036e1ce2005-12-17 13:46:33 +01002351
willy tarreau982249e2005-12-18 00:57:06 +010023522004/06/05 :
2353 - added the "logasap" option which produces a log without waiting for the data
2354 to be transferred from the server to the client.
2355 - added the "httpclose" option which removes any "connection:" header and adds
2356 "Connection: close" in both direction.
willy tarreau97f58572005-12-18 00:53:44 +01002357 - added the 'checkcache' option which blocks cacheable responses containing
2358 dangerous headers, such as 'set-cookie'.
willy tarreau982249e2005-12-18 00:57:06 +01002359 - added 'rspdeny' and 'rspideny' to block certain responses to avoid sensible
2360 information leak from servers.
willy tarreau25c4ea52005-12-18 00:49:49 +01002361
23622004/04/18 :
willy tarreaudd07e972005-12-18 00:48:48 +01002363 - send an EMERG log when no server is available for a given proxy
2364 - added the '-c' command line option to syntactically check the
2365 configuration file without starting the service.
2366
willy tarreau8a86dbf2005-12-18 00:45:59 +010023672003/11/09 : 1.2.0
2368 - the same as 1.1.27 + IPv6 support on the client side
2369
willy tarreaufe2c5c12005-12-17 14:14:34 +010023702003/10/27 : 1.1.27
2371 - the configurable HTTP health check introduced in 1.1.23 revealed a shameful
2372 bug : the code still assumed that HTTP requests were the same size as the
2373 original ones (22 bytes), and failed if they were not.
2374 - added support for pidfiles.
2375
willy tarreauc58fc692005-12-17 14:13:08 +010023762003/10/22 : 1.1.26
2377 - the fix introduced in 1.1.25 for client timeouts while waiting for servers
2378 broke almost all compatibility with POST requests, because the proxy
2379 stopped to read anything from the client as soon as it got all of its
2380 headers.
2381
willy tarreauc1cae632005-12-17 14:12:23 +010023822003/10/15 : 1.1.25
2383 - added the 'tcplog' option, which provides enhanced, HTTP-like logs for
2384 generic TCP proxies, or lighter logs for HTTP proxies.
2385 - fixed a time-out condition wrongly reported as client time-out in data
2386 phase if the client timeout was lower than the connect timeout times the
2387 number of retries.
2388
willy tarreau197e8ec2005-12-17 14:10:59 +010023892003/09/21 : 1.1.24
2390 - if a client sent a full request then shut its write connection down, then
2391 the request was aborted. This case was detected only when using haproxy
2392 both as health-check client and as a server.
2393 - if 'option httpchk' is used in a 'health' mode server, then responses will
2394 change from 'OK' to 'HTTP/1.0 200 OK'.
2395 - fixed a Linux-only bug in case of HTTP server health-checks, where a single
2396 server response followed by a close could be ignored, and the server seen
2397 as failed.
2398
willy tarreaueedaa9f2005-12-17 14:08:03 +010023992003/09/19 : 1.1.23
2400 - fixed a stupid bug introduced in 1.1.22 which caused second and subsequent
2401 'default' sections to keep previous parameters, and not initialize logs
2402 correctly.
2403 - fixed a second stupid bug introduced in 1.1.22 which caused configurations
2404 relying on 'dispatch' mode to segfault at the first connection.
2405 - 'option httpchk' now supports method, HTTP version and a few headers.
2406 - now, 'option httpchk', 'cookie' and 'capture' can be specified in
2407 'defaults' section
2408
24092003/09/10 : 1.1.22
willy tarreaua41a8b42005-12-17 14:02:24 +01002410 - 'listen' now supports optionnal address:port-range lists
2411 - 'bind' introduced to add new listen addresses
2412 - fixed a bug which caused a session to be kept established on a server till
2413 it timed out if the client closed during the DATA phase.
2414 - the port part of each server address can now be empty to make the proxy
2415 connect to the server on the same port it was connected to, be an absolute
2416 unsigned number to reflect a single port (as in older versions), or an
2417 explicitly signed number (+N/-N) to indicate that this offset must be
2418 applied to the port the proxy was connected to, when connecting to the
2419 server.
2420 - the 'port' server option allows the user to specify a different
2421 health-check port than the service one. It is mandatory when only relative
2422 ports have been specified and check is required. By default, the checks are
2423 sent to the service port.
2424 - new 'defaults' section which is rather similar to 'listen' except that all
2425 values are only used as default values for future 'listen' sections, until
2426 a new 'defaults' resets them. At the moment, server options, regexes,
2427 cookie names and captures cannot be set in the 'defaults' section.
2428
willy tarreau2f6ba652005-12-17 13:57:42 +010024292003/05/06 : 1.1.21
2430 - changed the debug output format so that it now includes the session unique
2431 ID followed by the instance name at the beginning of each line.
2432 - in debug mode, accept now shows the client's IP and port.
2433 - added one 3 small debugging scripts to search and pretty print debug output
2434 - changed the default health check request to "OPTIONS /" instead of
2435 "OPTIONS *" since not all servers implement the later one.
2436 - "option httpchk" now accepts an optional parameter allowing the user to
2437 specify and URI other than '/' during health-checks.
2438
willy tarreaub1ff9db2005-12-17 13:51:03 +010024392003/04/21 : 1.1.20
2440 - fixed two problems with time-outs, one where a server would be logged as
2441 timed out during transfer that take longer to complete than the fixed
2442 time-out, and one where clients were logged as timed-out during the data
2443 phase because they didn't have anything to send. This sometimes caused
2444 slow client connections to close too early while in fact there was no
2445 problem. The proper fix would be to have a per-fd time-out with
2446 conditions depending on the state of the HTTP FSM.
2447
willy tarreau906b2682005-12-17 13:49:52 +010024482003/04/16 : 1.1.19
2449 - haproxy was NOT RFC compliant because it was case-sensitive on HTTP
2450 "Cookie:" and "Set-Cookie:" headers. This caused JVM 1.4 to fail on
2451 cookie persistence because it uses "cookie:". Two memcmp() have been
2452 replaced with strncasecmp().
2453
willy tarreau036e1ce2005-12-17 13:46:33 +010024542003/04/02 : 1.1.18
2455 - Haproxy can be compiled with PCRE regex instead of libc regex, by setting
2456 REGEX=pcre on the make command line.
2457 - HTTP health-checks now use "OPTIONS *" instead of "OPTIONS /".
2458 - when explicit source address binding is required, it is now also used for
2459 health-checks.
2460 - added 'reqpass' and 'reqipass' to allow certain headers but not the request
2461 itself.
2462 - factored several strings to reduce binary size by about 2 kB.
2463 - replaced setreuid() and setregid() with more standard setuid() and setgid().
2464 - added 4 status flags to the log line indicating who ended the connection
2465 first, the sessions state, the validity of the cookie, and action taken on
2466 the set-cookie header.
2467
24682002/10/18 : 1.1.17
2469 - add the notion of "backup" servers, which are used only when all other
2470 servers are down.
2471 - make Set-Cookie return "" instead of "(null)" when the server has no
2472 cookie assigned (useful for backup servers).
2473 - "log" now supports an optionnal level name (info, notice, err ...) above
2474 which nothing is sent.
2475 - replaced some strncmp() with memcmp() for better efficiency.
2476 - added "capture cookie" option which logs client and/or server cookies
2477 - cleaned up/down messages and dump servers states upon SIGHUP
2478 - added a redirection feature for errors : "errorloc <errnum> <url>"
2479 - now we won't insist on connecting to a dead server, even with a cookie,
2480 unless option "persist" is specified.
2481 - added HTTP/408 response for client request time-out and HTTP/50[234] for
2482 server reply time-out or errors.
2483
24842002/09/01 : 1.1.16
2485 - implement HTTP health checks when option "httpchk" is specified.
2486
24872002/08/07 : 1.1.15
2488 - replaced setpgid()/setpgrp() with setsid() for better portability, because
2489 setpgrp() doesn't have the same meaning under Solaris, Linux, and OpenBSD.
2490
24912002/07/20 : 1.1.14
2492 - added "postonly" cookie mode
2493
24942002/07/15 : 1.1.13
2495 - tv_diff used inverted parameters which led to negative times !
2496
24972002/07/13 : 1.1.12
2498 - fixed stats monitoring, and optimized some tv_* for most common cases.
2499 - replaced temporary 'newhdr' with 'trash' to reduce stack size
2500 - made HTTP errors more HTML-fiendly.
2501 - renamed strlcpy() to strlcpy2() because of a slightly difference between
2502 their behaviour (return value), to avoid confusion.
2503 - restricted HTTP messages to HTTP proxies only
2504 - added a 502 message when the connection has been refused by the server,
2505 to prevent clients from believing this is a zero-byte HTTP 0.9 reply.
2506 - changed 'Cache-control:' from 'no-cache="set-cookie"' to 'private' when
2507 inserting a cookie, because some caches (apache) don't understand it.
2508 - fixed processing of server headers when client is in SHUTR state
2509
25102002/07/04 :
2511 - automatically close fd's 0,1 and 2 when going daemon ; setpgrp() after
2512 setpgid()
2513
25142002/06/04 : 1.1.11
2515 - fixed multi-cookie handling in client request to allow clean deletion
2516 in insert+indirect mode. Now, only the server cookie is deleted and not
willy tarreau906b2682005-12-17 13:49:52 +01002517 all the header. Should now be compliant to RFC2965.
willy tarreau036e1ce2005-12-17 13:46:33 +01002518 - added a "nocache" option to "cookie" to specify that we explicitly want
2519 to add a "cache-control" header when we add a cookie.
2520 It is also possible to add an "Expires: <old-date>" to keep compatibility
2521 with old/broken caches.
2522
25232002/05/10 : 1.1.10
2524 - if a cookie is used in insert+indirect mode, it's desirable that the
2525 the servers don't see it. It was not possible to remove it correctly
2526 with regexps, so now it's removed automatically.
2527
25282002/04/19 : 1.1.9
2529 - don't use snprintf()'s return value as an end of message since it may
2530 be larger. This caused bus errors and segfaults in internal libc's
2531 getenv() during localtime() in send_log().
2532 - removed dead insecure send_syslog() function and all references to it.
2533 - fixed warnings on Solaris due to buggy implementation of isXXXX().
2534
25352002/04/18 : 1.1.8
2536 - option "dontlognull"
2537 - fixed "double space" bug in config parser
2538 - fixed an uninitialized server field in case of dispatch
2539 with no existing server which could cause a segfault during
2540 logging.
2541 - the pid logged was always the father's, which was wrong for daemons.
2542 - fixed wrong level "LOG_INFO" for message "proxy started".
2543
25442002/04/13 :
2545 - http logging is now complete :
2546 - ip:port, date, proxy, server
2547 - req_time, conn_time, hdr_time, tot_time
2548 - status, size, request
2549 - source address
2550
25512002/04/12 : 1.1.7
2552 - added option forwardfor
2553 - added reqirep, reqidel, reqiallow, reqideny, rspirep, rspidel
2554 - added "log global" in "listen" section.
2555
25562002/04/09 :
2557 - added a new "global" section :
2558 - logs
2559 - debug, quiet, daemon modes
2560 - uid, gid, chroot, nbproc, maxconn
2561
25622002/04/08 : 1.1.6
2563 - regex are now chained and not limited anymore.
2564 - unavailable server now returns HTTP/502.
2565 - increased per-line args limit to 40
2566 - added reqallow/reqdeny to block some request on matches
2567 - added HTTP 400/403 responses
2568
25692002/04/03 : 1.1.5
2570 - connection logging displayed incorrect source address.
2571 - added proxy start/stop and server up/down log events.
2572 - replaced log message short buffers with larger trash.
2573 - enlarged buffer to 8 kB and replace buffer to 4 kB.
2574
25752002/03/25 : 1.1.4
2576 - made rise/fall/interval time configurable
2577
25782002/03/22 : 1.1.3
2579 - fixed a bug : cr_expire and cw_expire were inverted in CL_STSHUT[WR]
2580 which could lead to loops.
2581
25822002/03/21 : 1.1.2
2583 - fixed a bug in buffer management where we could have a loop
2584 between event_read() and process_{cli|srv} if R==BUFSIZE-MAXREWRITE.
2585 => implemented an adjustable buffer limit.
2586 - fixed a bug : expiration of tasks in wait queue timeout is used again,
2587 and running tasks are skipped.
2588 - added some debug lines for accept events.
2589 - send warnings for servers up/down.
2590
25912002/03/12 : 1.1.1
2592 - fixed a bug in total failure handling
2593 - fixed a bug in timestamp comparison within same second (tv_cmp_ms)
2594
25952002/03/10 : 1.1.0
2596 - fixed a few timeout bugs
2597 - rearranged the task scheduler subsystem to improve performance,
2598 add new tasks, and make it easier to later port to librt ;
2599 - allow multiple accept() for one select() wake up ;
2600 - implemented internal load balancing with basic health-check ;
2601 - cookie insertion and header add/replace/delete, with better strings
2602 support.
2603
26042002/03/08
2605 - reworked buffer handling to fix a few rewrite bugs, and
2606 improve overall performance.
2607 - implement the "purge" option to delete server cookies in direct mode.
2608
26092002/03/07
2610 - fixed some error cases where the maxfd was not decreased.
2611
26122002/02/26
2613 - now supports transparent proxying, at least on linux 2.4.
2614
26152002/02/12
2616 - soft stop works again (fixed select timeout computation).
2617 - it seems that TCP proxies sometimes cannot timeout.
2618 - added a "quiet" mode.
2619 - enforce file descriptor limitation on socket() and accept().
2620
26212001/12/30 : release of version 1.0.2 : fixed a bug in header processing
26222001/12/19 : release of version 1.0.1 : no MSG_NOSIGNAL on solaris
26232001/12/16 : release of version 1.0.0.
26242001/12/16 : added syslog capability for each accepted connection.
26252001/11/19 : corrected premature end of files and occasional SIGPIPE.
26262001/10/31 : added health-check type servers (mode health) which replies OK then closes.
26272001/10/30 : added the ability to support standard TCP proxies and HTTP proxies
2628 with or without cookies (use keyword http for this).
26292001/09/01 : added client/server header replacing with regexps.
2630 eg:
2631 cliexp ^(Host:\ [^:]*).* Host:\ \1:80
2632 srvexp ^Server:\ .* Server:\ Apache
26332000/11/29 : first fully working release with complete FSMs and timeouts.
26342000/11/28 : major rewrite
26352000/11/26 : first write