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