blob: 19ea09e2b5b21db1343767304dd68ecae1755c34 [file] [log] [blame]
willy tarreau8337c6b2005-12-17 13:41:01 +01001* ChangeLog :
willy tarreaubc4e1fb2005-12-17 13:32:07 +01002 *
willy tarreau8337c6b2005-12-17 13:41:01 +01003 * 2002/10/18 : 1.1.17
4 * - add the notion of "backup" servers, which are used only when all other
5 * servers are down.
6 * - make Set-Cookie return "" instead of "(null)" when the server has no
7 * cookie assigned (useful for backup servers).
8 * - "log" now supports an optionnal level name (info, notice, err ...) above
9 * which nothing is sent.
10 * - replaced some strncmp() with memcmp() for better efficiency.
11 * - added "capture cookie" option which logs client and/or server cookies
12 * - cleaned up/down messages and dump servers states upon SIGHUP
13 * - added a redirection feature for errors : "errorloc <errnum> <url>"
14 * - now we won't insist on connecting to a dead server, even with a cookie,
15 * unless option "persist" is specified.
16 * - added HTTP/408 response for client request time-out and HTTP/50[234] for
17 * server reply time-out or errors.
willy tarreaubc4e1fb2005-12-17 13:32:07 +010018 * 2002/09/01 : 1.1.16
19 * - implement HTTP health checks when option "httpchk" is specified.
20 * 2002/08/07 : 1.1.15
21 * - replaced setpgid()/setpgrp() with setsid() for better portability, because
22 * setpgrp() doesn't have the same meaning under Solaris, Linux, and OpenBSD.
23 * 2002/07/20 : 1.1.14
24 * - added "postonly" cookie mode
25 * 2002/07/15 : 1.1.13
26 * - tv_diff used inverted parameters which led to negative times !
27 * 2002/07/13 : 1.1.12
28 * - fixed stats monitoring, and optimized some tv_* for most common cases.
29 * - replaced temporary 'newhdr' with 'trash' to reduce stack size
30 * - made HTTP errors more HTML-fiendly.
31 * - renamed strlcpy() to strlcpy2() because of a slightly difference between
32 * their behaviour (return value), to avoid confusion.
33 * - restricted HTTP messages to HTTP proxies only
34 * - added a 502 message when the connection has been refused by the server,
35 * to prevent clients from believing this is a zero-byte HTTP 0.9 reply.
36 * - changed 'Cache-control:' from 'no-cache="set-cookie"' to 'private' when
37 * inserting a cookie, because some caches (apache) don't understand it.
38 * - fixed processing of server headers when client is in SHUTR state
39 * 2002/07/04 :
40 * - automatically close fd's 0,1 and 2 when going daemon ; setpgrp() after
41 * setpgid()
42 * 2002/06/04 : 1.1.11
43 * - fixed multi-cookie handling in client request to allow clean deletion
44 * in insert+indirect mode. Now, only the server cookie is deleted and not
45 * all the header. Should now be compliant to RFC2109.
46 * - added a "nocache" option to "cookie" to specify that we explicitly want
47 * to add a "cache-control" header when we add a cookie.
48 * It is also possible to add an "Expires: <old-date>" to keep compatibility
49 * with old/broken caches.
50 * 2002/05/10 : 1.1.10
51 * - if a cookie is used in insert+indirect mode, it's desirable that the
52 * the servers don't see it. It was not possible to remove it correctly
53 * with regexps, so now it's removed automatically.
54 * 2002/04/19 : 1.1.9
55 * - don't use snprintf()'s return value as an end of message since it may
56 * be larger. This caused bus errors and segfaults in internal libc's
57 * getenv() during localtime() in send_log().
58 * - removed dead insecure send_syslog() function and all references to it.
59 * - fixed warnings on Solaris due to buggy implementation of isXXXX().
60 * 2002/04/18 : 1.1.8
61 * - option "dontlognull"
62 * - fixed "double space" bug in config parser
63 * - fixed an uninitialized server field in case of dispatch
64 * with no existing server which could cause a segfault during
65 * logging.
66 * - the pid logged was always the father's, which was wrong for daemons.
67 * - fixed wrong level "LOG_INFO" for message "proxy started".
68 * 2002/04/13 :
69 * - http logging is now complete :
70 * - ip:port, date, proxy, server
71 * - req_time, conn_time, hdr_time, tot_time
72 * - status, size, request
73 * - source address
74 * 2002/04/12 : 1.1.7
75 * - added option forwardfor
76 * - added reqirep, reqidel, reqiallow, reqideny, rspirep, rspidel
77 * - added "log global" in "listen" section.
78 * 2002/04/09 :
79 * - added a new "global" section :
80 * - logs
81 * - debug, quiet, daemon modes
82 * - uid, gid, chroot, nbproc, maxconn
83 * 2002/04/08 : 1.1.6
84 * - regex are now chained and not limited anymore.
85 * - unavailable server now returns HTTP/502.
86 * - increased per-line args limit to 40
87 * - added reqallow/reqdeny to block some request on matches
88 * - added HTTP 400/403 responses
89 * 2002/04/03 : 1.1.5
90 * - connection logging displayed incorrect source address.
91 * - added proxy start/stop and server up/down log events.
92 * - replaced log message short buffers with larger trash.
93 * - enlarged buffer to 8 kB and replace buffer to 4 kB.
94 * 2002/03/25 : 1.1.4
95 * - made rise/fall/interval time configurable
96 * 2002/03/22 : 1.1.3
97 * - fixed a bug : cr_expire and cw_expire were inverted in CL_STSHUT[WR]
98 * which could lead to loops.
99 * 2002/03/21 : 1.1.2
100 * - fixed a bug in buffer management where we could have a loop
101 * between event_read() and process_{cli|srv} if R==BUFSIZE-MAXREWRITE.
102 * => implemented an adjustable buffer limit.
103 * - fixed a bug : expiration of tasks in wait queue timeout is used again,
104 * and running tasks are skipped.
105 * - added some debug lines for accept events.
106 * - send warnings for servers up/down.
107 * 2002/03/12 : 1.1.1
108 * - fixed a bug in total failure handling
109 * - fixed a bug in timestamp comparison within same second (tv_cmp_ms)
110 * 2002/03/10 : 1.1.0
111 * - fixed a few timeout bugs
112 * - rearranged the task scheduler subsystem to improve performance,
113 * add new tasks, and make it easier to later port to librt ;
114 * - allow multiple accept() for one select() wake up ;
115 * - implemented internal load balancing with basic health-check ;
116 * - cookie insertion and header add/replace/delete, with better strings
117 * support.
118 * 2002/03/08
119 * - reworked buffer handling to fix a few rewrite bugs, and
120 * improve overall performance.
121 * - implement the "purge" option to delete server cookies in direct mode.
122 * 2002/03/07
123 * - fixed some error cases where the maxfd was not decreased.
124 * 2002/02/26
125 * - now supports transparent proxying, at least on linux 2.4.
126 * 2002/02/12
127 * - soft stop works again (fixed select timeout computation).
128 * - it seems that TCP proxies sometimes cannot timeout.
129 * - added a "quiet" mode.
130 * - enforce file descriptor limitation on socket() and accept().
131 * 2001/12/30 : release of version 1.0.2 : fixed a bug in header processing
132 * 2001/12/19 : release of version 1.0.1 : no MSG_NOSIGNAL on solaris
133 * 2001/12/16 : release of version 1.0.0.
134 * 2001/12/16 : added syslog capability for each accepted connection.
135 * 2001/11/19 : corrected premature end of files and occasional SIGPIPE.
136 * 2001/10/31 : added health-check type servers (mode health) which replies OK then closes.
137 * 2001/10/30 : added the ability to support standard TCP proxies and HTTP proxies
138 * with or without cookies (use keyword http for this).
139 * 2001/09/01 : added client/server header replacing with regexps.
140 * eg:
141 * cliexp ^(Host:\ [^:]*).* Host:\ \1:80
142 * srvexp ^Server:\ .* Server:\ Apache
143 * 2000/11/29 : first fully working release with complete FSMs and timeouts.
144 * 2000/11/28 : major rewrite
145 * 2000/11/26 : first write