Rearrange struct client_state to reduce memory on amd64
[privoxy.git] / doc / webserver / announce.txt
1                Announcing Privoxy 3.0.29 stable
2 --------------------------------------------------------------------
3
4 Privoxy 3.0.29 stable fixes a couple of memory leaks and introduces
5 https inspection which allows to filter encrypted requests and
6 responses.
7
8 --------------------------------------------------------------------
9 ChangeLog for Privoxy 3.0.29
10 --------------------------------------------------------------------
11
12 - Security/Reliability:
13   - Fixed memory leaks when a response is buffered and the buffer
14     limit is reached or Privoxy is running out of memory.
15     Commits bbd53f1010b and 4490d451f9b. OVE-20201118-0001.
16     Sponsored by: Robert Klemme
17   - Fixed a memory leak in the show-status CGI handler when
18     no action files are configured. Commit c62254a686.
19     OVE-20201118-0002.
20     Sponsored by: Robert Klemme
21   - Fixed a memory leak in the show-status CGI handler when
22     no filter files are configured. Commit 1b1370f7a8a.
23     OVE-20201118-0003.
24     Sponsored by: Robert Klemme
25   - Fixes a memory leak when client tags are active.
26     Commit 245e1cf32. OVE-20201118-0004.
27     Sponsored by: Robert Klemme
28   - Fixed a memory leak if multiple filters are executed
29     and the last one is skipped due to a pcre error.
30     Commit 5cfb7bc8fe. OVE-20201118-0005.
31   - Prevent an unlikely dereference of a NULL-pointer that
32     could result in a crash if accept-intercepted-requests
33     was enabled, Privoxy failed to get the request destination
34     from the Host header and a memory allocation failed.
35     Commit 7530132349. CID 267165. OVE-20201118-0006.
36   - Fixed memory leaks in the client-tags CGI handler when
37     client tags are configured and memory allocations fail.
38     Commit cf5640eb2a. CID 267168. OVE-20201118-0007.
39   - Fixed memory leaks in the show-status CGI handler when memory
40     allocations fail. Commit 064eac5fd0 and commit fdee85c0bf3.
41     CID 305233. OVE-20201118-0008.
42
43 - General improvements:
44   - Added experimental https inspection support which allows to filter
45     https traffic. To enable it, install MbedTLS and configure with
46     --with-mbedtls, or install OpenSSL or LibreSSL and configure
47     with --with-openssl.
48     Afterwards configure the directives in section 7 of the
49     config file and enable the +https-inspection action.
50     Initial MbedTLS-based code contributed by Vaclav Svec,
51     initial OpenSSL support contributed by Maxim Antonov.
52     With help from Nedzad Hrnjica and Ho+ Ho+ Ho+.
53     Integration and improvements sponsored by Robert Klemme.
54   - pcrs: Request JIT compilation if it's supported and
55     the filter isn't dynamic. This can speed up filtering.
56   - Added support for Brotli decompression.
57     Sponsored by: Robert Klemme
58   - Added FEATURE_EXTENDED_STATISTICS to gather statistics for
59     block reasons and filter executions. To enable it, configure
60     with --enable-extended-statistics and visit
61     http://config.privoxy.org/show-status.
62     Sponsored by: Robert Klemme
63   - Use the IP_FREEBIND socket option, if defined. This allows
64     Privoxy to bind to not-yet assigned IP addresses which is
65     useful in failover environments.
66     Patch by Sam Varshavchik.
67   - Allow to use extended host patterns and vanilla host patterns
68     at the same time by prefixing extended host patterns with
69     "PCRE-HOST-PATTERN:". To enable this, configure with
70     --enable-pcre-host-patterns.
71     Sponsored by: Robert Klemme
72   - Added "Cross-origin resource sharing" (CORS) support.
73     This allows to access Privoxy's CGI interface via JavaScript from
74     another domain (white-listed with the new cors-allowed-origin directive).
75     Based on a patch by Nedzad Hrnjica.
76     Sponsored by: Robert Klemme.
77   - Add SOCKS5 username/password support.
78     Based on a patch by Sam, improved by Ivan Romanov.
79     Closes Patch#141 and solves TODO#105.
80   - Bump the maximum number of action and filter files
81     to 100 each.
82     Sponsored by: Robert Klemme
83   - Fixed handling of filters with "split-large-forms 1"
84     when using the CGI editor.
85     Reported by withoutname in #921.
86   - Better detect a mismatch of connection details when
87     figuring out whether or not a connection can be reused.
88   - Don't send a "Connection failure" message instead of the
89     "DNS failure" message.
90     Sponsored by: Robert Klemme
91   - Let LOG_LEVEL_REQUEST log all requests. Previously unencrypted
92     requests were only logged with LOG_LEVEL_REQUEST when they weren't
93     crunched (in which case they were logged with LOG_LEVEL_CRUNCH).
94     This was documented behaviour, but logging all requests seems more useful.
95   - Fixed locking around localtime() and gmtime().
96   - Removed OS/2 support. We haven't provided OS/2 packages in years,
97     it complicated the code and it depended on a fallback snprintf()
98     implementation which is GPLv2 only.
99   - Remove the fallback snprintf() implementation
100     Now that OS/2 support is gone we no longer need it.
101   - Fixed a bunch of format specifiers log messages.
102   - Added a missing apostrophe in the 'More Privoxy' menu.
103   - Explicitly prevent use of FEATURE_CONNECTION_SHARING
104     without FEATURE_CONNECTION_KEEP_ALIVE. It makes no sense
105     and does not compile anyway.
106     Sponsored by: Robert Klemme
107   - Fix build without FEATURE_CONNECTION_KEEP_ALIVE.
108     Sponsored by: Robert Klemme
109   - Downgrade the 'Graceful termination requested' message
110     to LOG_LEVEL_INFO as it isn't an error.
111     Sponsored by: Robert Klemme
112   - decompress_iob(): Downgrade the no-content message to LOG_LEVEL_RE_FILTER
113     While at it, fix a typo in a comment.
114     Sponsored by: Robert Klemme
115   - Fixed a couple of cppcheck warnings.
116   - Rename LOG_LEVEL_GPC to LOG_LEVEL_REQUEST.
117     Only the shadow knows what "GPC" is supposed to stand for.
118   - Remove SourceForge references in copyright headers.
119   - Upgrade a bunch of links to the homepage to https://.
120   - Add 'no-brotli-accepted' filter which prevents the
121     use of Brotli compression.
122   - Changed license for pcrs to GPLv2+ after getting the
123     permission from Andreas. This allows to redistribute
124     Privoxy under the GPLv3 which is required when linking
125     to future mbedTLS versions which are expected to be
126     licensed under the Apache 2.0 license only.
127   - Updated a bunch of tests that have to expect status code 403
128     now after r1.168/070e904afa5.
129   - Lowercase the host name in the request line.
130   - Only set SOURCE_DATE_EPOCH if it's not already set so
131     distributions can overwrite it through the environment.
132
133 - Documentation changes:
134   - Explain that Privoxy has to be distributed under the
135     GPLv3 (or later) when linked with an MbedTLS version
136     that is licensed under the Apache 2.0 license.
137   - Import the GNU GPLv3 and include it the user manual.
138   - Clarify FEATURE_FORCE_LOAD's description. It allows to bypass
139     blocking not filtering and only does it if blocks aren't enforced.
140     Reported by: Robert Klemme
141   - FAQ: Remove Zwiebelfreunde e.V. from the list of fiduciary sponsors
142     As of 2021 they no longer handle donations for foreign organisations
143     due to lack of resources.
144   - FAQ: Remove an obsolete comment with a link to the long-gone PDF manual.
145   - FAQ: Add a link to the TODO list.
146   - FAQ: Change the sponsor amounts to USD slightly rounding the
147     converted amounts up to get simple numbers.
148     Receiving USD is apparently easier for SPI and SPI is
149     preferred by sponsors as they can send invoices.
150   - Advertise the client-tags CGI page in the user manual.
151   - Stop advertising the show-version CGI page which no longer exists.
152   - Add yet another reason why +prevent-compression may cause problems.
153   - Don't claim that contributors need ssh. It's only needed for committers.
154   - Replace obsolete CVS instructions with Git instructions.
155   - Remove an obsolete comment
156
157 - Config file changes:
158   - Change the suggested default-server-timeout to 5 to match the
159     suggested keep-alive-timeout. Otherwise using the defaults would
160     result in Privoxy reducing the default-server-timeout and logging
161     an error message.
162     Sponsored by: Robert Klemme
163   - Update the 'debug 1' description.
164   - Add a missing 'client-specific-tag' directive.
165   - Comment out trusted-cgi-referer pointing to example.org.
166
167 - Action file improvements:
168   - Block requests to /(.*/)?piwik\.php
169   - Block requests to .connectaserver.de/
170   - Block requests to pixel.inforsea.com/
171   - Block requests to t.vi-serve.com/
172   - Block requests to .ioam.de/
173   - Block requests to t.9gag.com/img.gif
174   - Block requests to .pixel.parsely.com/ as image
175   - Block requests to pixel.wp.com/
176   - Disable fast-redirects for .librarything.com/
177   - Disable fast-redirects for issue.freebsdfoundation.org/
178   - Disable fast-redirects for .twitter.com/.*origin=http
179   - Unblock belco24.de/
180   - Add fast-redirects exception for .wikipedia.org/
181   - Add fast-redirects exception for oss-fuzz.com/
182   - Disable fast-redirects for .consensu.org/delivery/pixel\.php
183     and block the requests as image instead
184   - Unblock .adbinstaller.com/
185     Reported by lvm in #942.
186   - Unblock .adbshell.com
187     Reported by lvm in #942.
188   - Unblock .tagesschau.de/
189   - Disable fast-redirects for collector.githubapp.com/
190     and block requests to it as image instead
191   - Unblock 'ada*.'
192   - Add fast-redirects{} exception for sourcepoint.vice.com/
193   - Unblock adaway.org/
194     Reported by DRS David Soft in AF#945.
195   - Change two block reasons that previously were the same.
196     Sponsored by: Robert Klemme
197   - Added a +delay-response{} test.
198   - Updated the location of the development version
199     of default.action.master.
200
201 - Privoxy-Log-Parser:
202   - Added a --keep-date option to keep the date in highlighted messages.
203   - Highlight new log messages.
204   - Make gather_loglevel_clf_stats() more tolerant. While at it,
205     count all CLF messages as requests, even if the request is invalid.
206   - Only show HTTP version distribution if at least one version has been detected.
207   - Only show crunch statistics if crunches were detected.
208   - Warn if the request counts differ.
209   - Generate statistics if the log only contains LOG_LEVEL_CLF messages
210     so it can be used with vanilla webserver logs.
211     Previously Privoxy-specific "Request:" messages were required.
212   - Align the client-HTTP-version distribution like other distributions
213   - Bump version to 0.9.1
214   - Include status code distribution in the stats.
215   - Let the statistics include the size of the content Privoxy
216     transferred excluding HTTP headers.
217   - Get with the program and expect all requests to be logged with LOG_LEVEL_REQUEST.
218     It's no longer necessary to count both LOG_LEVEL_REQUEST and
219     LOG_LEVEL_CRUNCH messages to get the total number of requests.
220   - Leverage the LOG_LEVEL_CLF message to gather statistics that where
221     previously taken from LOG_LEVEL_HEADER lines. This results in less
222     confusing results if https inspection is enabled in which case there
223     are two LOG_LEVEL_HEADER lines with request lines.
224     Sponsored by: Robert Klemme
225   - Properly highlight the filter results message. Previously a brace got lost.
226   - Prefer the number of CLF lines to get the total number of requests
227     as it works with older Privoxy versions as well.
228
229 - Privoxy-Regression-Test:
230   - Turn curl's globbing mode off so we can allow more characters in URLs.
231   - Allow '[' and ']' in URLs.
232   - Include the action file when complaining about missing Sticky Actions.
233   - Fix a sentence in the documentation.
234   - Bump version to 0.7.1
235
236 - url-pattern-translator:
237   - Detect a couple of pattern prefixes case-insensitively.
238     Sponsored by: Robert Klemme
239   - Skip CLIENT-TAG patterns.
240     Sponsored by: Robert Klemme
241   - Skip patterns that have already been converted.
242     It should now be safe to "convert" a file multiple times.
243     Sponsored by: Robert Klemme
244   - Add the new 'PCRE-HOST-PATTERN:' prefix.
245     Sponsored by: Robert Klemme
246
247
248 -----------------------------------------------------------------
249 About Privoxy:
250 -----------------------------------------------------------------
251
252 Privoxy is a non-caching web proxy with advanced filtering capabilities for
253 enhancing privacy, modifying web page data and HTTP headers, controlling
254 access, and removing ads and other obnoxious Internet junk. Privoxy has a
255 flexible configuration and can be customized to suit individual needs and
256 tastes. It has application for both stand-alone systems and multi-user
257 networks.
258
259 Privoxy is Free Software and licensed under the GNU GPLv2.
260
261 Our TODO list is rather long. Helping hands and donations are welcome:
262
263   * https://www.privoxy.org/faq/general.html#PARTICIPATE
264
265   * https://www.privoxy.org/faq/general.html#DONATE
266
267 At present, Privoxy is known to run on Windows 95 and later versions
268 (98, ME, 2000, XP, Vista, Windows 7 etc.), GNU/Linux (RedHat, SuSE,
269 Debian, Fedora, Gentoo, Slackware and others), Mac OS X (10.4 and
270 upwards on PPC and Intel processors), Haiku, DragonFly, ElectroBSD,
271 FreeBSD, NetBSD, OpenBSD, Solaris, and various other flavors of Unix.
272
273 In addition to the core features of ad blocking and cookie management,
274 Privoxy provides many supplemental features, that give the end-user
275 more control, more privacy and more freedom:
276
277   *  Supports "Connection: keep-alive". Outgoing connections can be kept
278      alive independently from the client. Currently not available on all
279      platforms.
280
281   *  Supports IPv6, provided the operating system does so too,
282      and the configure script detects it.
283
284   *  Supports tagging which allows to change the behaviour based on client
285      and server headers.
286
287   *  Supports https inspection which allows to filter https requests.
288
289   *  Can be run as an "intercepting" proxy, which obviates the need to
290      configure browsers individually.
291
292   *  Sophisticated actions and filters for manipulating both server and
293      client headers.
294
295   *  Can be chained with other proxies.
296
297   *  Integrated browser based configuration and control utility at
298      http://config.privoxy.org/ (shortcut: http://p.p/). Browser-based
299      tracing of rule and filter effects. Remote toggling.
300
301   *  Web page filtering (text replacements, removes banners based on size,
302      invisible "web-bugs" and HTML annoyances, etc.)
303
304   *  Modularized configuration that allows for standard settings and user
305      settings to reside in separate files, so that installing updated actions
306      files won't overwrite individual user settings.
307
308   *  Support for Perl Compatible Regular Expressions in the configuration
309      files, and a more sophisticated and flexible configuration syntax.
310
311   *  GIF de-animation.
312
313   *  Bypass many click-tracking scripts (avoids script redirection).
314
315   *  User-customizable HTML templates for most proxy-generated pages (e.g.
316      "blocked" page).
317
318   *  Auto-detection and re-reading of config file changes.
319     
320   *  Most features are controllable on a per-site or per-location basis.
321
322
323 Home Page: 
324    https://www.privoxy.org/
325
326   - Privoxy Developers <privoxy-devel@lists.privoxy.org>