Relocate CERT_INFO_PREFIX to ssl.c
[privoxy.git] / doc / source / changelog.sgml
1 <!--
2  File        :  doc/source/changelog.sgml
3
4  Purpose     :  Entity included in other project documents.
5
6  Copyright (C) 2013-2018 Privoxy Developers https://www.privoxy.org/
7  See LICENSE.
8
9  ======================================================================
10   This file used for inclusion with other documents only.
11  ======================================================================
12
13  If you make changes to this file, please verify the finished
14  docs all display as intended.
15
16  This file is included into:
17
18   user-manual
19 -->
20
21
22 <!--
23  The SGML ChangeLog can be generated with: utils/changelog2doc.pl ChangeLog
24 -->
25
26 <para>
27   <application>Privoxy 3.0.29</application> fixes a couple of memory
28   leaks and introduces https inspection which allows to filter encrypted
29   requests and responses.
30 </para>
31  <para>
32   Changes in <application>Privoxy 3.0.29</application> stable:
33  </para>
34  <itemizedlist>
35   <listitem>
36    <para>
37     Security/Reliability:
38     <itemizedlist>
39     <listitem>
40      <para>
41       Fixed memory leaks when a response is buffered and the buffer
42       limit is reached or Privoxy is running out of memory.
43       Commits bbd53f1010b and 4490d451f9b. OVE-20201118-0001.
44       Sponsored by: Robert Klemme
45      </para>
46     </listitem>
47     <listitem>
48      <para>
49       Fixed a memory leak in the show-status CGI handler when
50       no action files are configured. Commit c62254a686.
51       OVE-20201118-0002.
52       Sponsored by: Robert Klemme
53      </para>
54     </listitem>
55     <listitem>
56      <para>
57       Fixed a memory leak in the show-status CGI handler when
58       no filter files are configured. Commit 1b1370f7a8a.
59       OVE-20201118-0003.
60       Sponsored by: Robert Klemme
61      </para>
62     </listitem>
63     <listitem>
64      <para>
65       Fixes a memory leak when client tags are active.
66       Commit 245e1cf32. OVE-20201118-0004.
67       Sponsored by: Robert Klemme
68      </para>
69     </listitem>
70     <listitem>
71      <para>
72       Fixed a memory leak if multiple filters are executed
73       and the last one is skipped due to a pcre error.
74       Commit 5cfb7bc8fe. OVE-20201118-0005.
75      </para>
76     </listitem>
77     <listitem>
78      <para>
79       Prevent an unlikely dereference of a NULL-pointer that
80       could result in a crash if accept-intercepted-requests
81       was enabled, Privoxy failed to get the request destination
82       from the Host header and a memory allocation failed.
83       Commit 7530132349. CID 267165. OVE-20201118-0006.
84      </para>
85     </listitem>
86     <listitem>
87      <para>
88       Fixed memory leaks in the client-tags CGI handler when
89       client tags are configured and memory allocations fail.
90       Commit cf5640eb2a. CID 267168. OVE-20201118-0007.
91      </para>
92     </listitem>
93     <listitem>
94      <para>
95       Fixed memory leaks in the show-status CGI handler when memory
96       allocations fail. Commit 064eac5fd0 and commit fdee85c0bf3.
97       CID 305233. OVE-20201118-0008.
98      </para>
99      </listitem>
100     </itemizedlist>
101    </para>
102   </listitem>
103   <listitem>
104    <para>
105     General improvements:
106     <itemizedlist>
107     <listitem>
108      <para>
109       Added experimental https inspection support which allows to filter
110       https traffic. To enable it, install MbedTLS and configure with
111       --with-mbedtls, or install OpenSSL or LibreSSL and configure
112       with --with-openssl.
113       Afterwards configure the directives in section 7 of the
114       config file and enable the +https-inspection action.
115       Initial MbedTLS-based code contributed by Vaclav Svec,
116       initial OpenSSL support contributed by Maxim Antonov.
117       With help from Nedzad Hrnjica and Ho+ Ho+ Ho+.
118       Integration and improvements sponsored by Robert Klemme.
119      </para>
120     </listitem>
121     <listitem>
122      <para>
123       pcrs: Request JIT compilation if it's supported and
124       the filter isn't dynamic. This can speed up filtering.
125      </para>
126     </listitem>
127     <listitem>
128      <para>
129       Added support for Brotli decompression.
130       Sponsored by: Robert Klemme
131      </para>
132     </listitem>
133     <listitem>
134      <para>
135       Added FEATURE_EXTENDED_STATISTICS to gather statistics for
136       block reasons and filter executions. To enable it, configure
137       with --enable-extended-statistics and visit
138       http://config.privoxy.org/show-status.
139       Sponsored by: Robert Klemme
140      </para>
141     </listitem>
142     <listitem>
143      <para>
144       Use the IP_FREEBIND socket option, if defined. This allows
145       Privoxy to bind to not-yet assigned IP addresses which is
146       useful in failover environments.
147       Patch by Sam Varshavchik.
148      </para>
149     </listitem>
150     <listitem>
151      <para>
152       Allow to use extended host patterns and vanilla host patterns
153       at the same time by prefixing extended host patterns with
154       "PCRE-HOST-PATTERN:". To enable this, configure with
155       --enable-pcre-host-patterns.
156       Sponsored by: Robert Klemme
157      </para>
158     </listitem>
159     <listitem>
160      <para>
161       Added "Cross-origin resource sharing" (CORS) support.
162       This allows to access Privoxy's CGI interface via JavaScript from
163       another domain (white-listed with the new cors-allowed-origin directive).
164       Based on a patch by Nedzad Hrnjica.
165       Sponsored by: Robert Klemme.
166      </para>
167     </listitem>
168     <listitem>
169      <para>
170       Add SOCKS5 username/password support.
171       Based on a patch by Sam, improved by Ivan Romanov.
172       Closes Patch#141 and solves TODO#105.
173      </para>
174     </listitem>
175     <listitem>
176      <para>
177       Bump the maximum number of action and filter files
178       to 100 each.
179       Sponsored by: Robert Klemme
180      </para>
181     </listitem>
182     <listitem>
183      <para>
184       Fixed handling of filters with "split-large-forms 1"
185       when using the CGI editor.
186       Reported by withoutname in #921.
187      </para>
188     </listitem>
189     <listitem>
190      <para>
191       Better detect a mismatch of connection details when
192       figuring out whether or not a connection can be reused.
193      </para>
194     </listitem>
195     <listitem>
196      <para>
197       Don't send a "Connection failure" message instead of the
198       "DNS failure" message.
199       Sponsored by: Robert Klemme
200      </para>
201     </listitem>
202     <listitem>
203      <para>
204       Let LOG_LEVEL_REQUEST log all requests. Previously unencrypted
205       requests were only logged with LOG_LEVEL_REQUEST when they weren't
206       crunched (in which case they were logged with LOG_LEVEL_CRUNCH).
207       This was documented behaviour, but logging all requests seems more useful.
208      </para>
209     </listitem>
210     <listitem>
211      <para>
212       Fixed locking around localtime() and gmtime().
213      </para>
214     </listitem>
215     <listitem>
216      <para>
217       Removed OS/2 support. We haven't provided OS/2 packages in years,
218       it complicated the code and it depended on a fallback snprintf()
219       implementation which is GPLv2 only.
220      </para>
221     </listitem>
222     <listitem>
223      <para>
224       Remove the fallback snprintf() implementation
225       Now that OS/2 support is gone we no longer need it.
226      </para>
227     </listitem>
228     <listitem>
229      <para>
230       Fixed a bunch of format specifiers log messages.
231      </para>
232     </listitem>
233     <listitem>
234      <para>
235       Added a missing apostrophe in the 'More Privoxy' menu.
236      </para>
237     </listitem>
238     <listitem>
239      <para>
240       Explicitly prevent use of FEATURE_CONNECTION_SHARING
241       without FEATURE_CONNECTION_KEEP_ALIVE. It makes no sense
242       and does not compile anyway.
243       Sponsored by: Robert Klemme
244      </para>
245     </listitem>
246     <listitem>
247      <para>
248       Fix build without FEATURE_CONNECTION_KEEP_ALIVE.
249       Sponsored by: Robert Klemme
250      </para>
251     </listitem>
252     <listitem>
253      <para>
254       Downgrade the 'Graceful termination requested' message
255       to LOG_LEVEL_INFO as it isn't an error.
256       Sponsored by: Robert Klemme
257      </para>
258     </listitem>
259     <listitem>
260      <para>
261       decompress_iob(): Downgrade the no-content message to LOG_LEVEL_RE_FILTER
262       While at it, fix a typo in a comment.
263       Sponsored by: Robert Klemme
264      </para>
265     </listitem>
266     <listitem>
267      <para>
268       Fixed a couple of cppcheck warnings.
269      </para>
270     </listitem>
271     <listitem>
272      <para>
273       Rename LOG_LEVEL_GPC to LOG_LEVEL_REQUEST.
274       Only the shadow knows what "GPC" is supposed to stand for.
275      </para>
276     </listitem>
277     <listitem>
278      <para>
279       Remove SourceForge references in copyright headers.
280      </para>
281     </listitem>
282     <listitem>
283      <para>
284       Upgrade a bunch of links to the homepage to https://.
285      </para>
286     </listitem>
287     <listitem>
288      <para>
289       Add 'no-brotli-accepted' filter which prevents the
290       use of Brotli compression.
291      </para>
292     </listitem>
293     <listitem>
294      <para>
295       Changed license for pcrs to GPLv2+ after getting the
296       permission from Andreas. This allows to redistribute
297       Privoxy under the GPLv3 which is required when linking
298       to future mbedTLS versions which are expected to be
299       licensed under the Apache 2.0 license only.
300      </para>
301     </listitem>
302     <listitem>
303      <para>
304       Updated a bunch of tests that have to expect status code 403
305       now after r1.168/070e904afa5.
306      </para>
307     </listitem>
308     <listitem>
309      <para>
310       Lowercase the host name in the request line.
311      </para>
312     </listitem>
313     <listitem>
314      <para>
315       Only set SOURCE_DATE_EPOCH if it's not already set so
316       distributions can overwrite it through the environment.
317      </para>
318      </listitem>
319     </itemizedlist>
320    </para>
321   </listitem>
322   <listitem>
323    <para>
324     Documentation changes:
325     <itemizedlist>
326     <listitem>
327      <para>
328       Explain that Privoxy has to be distributed under the
329       GPLv3 (or later) when linked with an MbedTLS version
330       that is licensed under the Apache 2.0 license.
331      </para>
332     </listitem>
333     <listitem>
334      <para>
335       Import the GNU GPLv3 and include it the user manual.
336      </para>
337     </listitem>
338     <listitem>
339      <para>
340       Clarify FEATURE_FORCE_LOAD's description. It allows to bypass
341       blocking not filtering and only does it if blocks aren't enforced.
342       Reported by: Robert Klemme
343      </para>
344     </listitem>
345     <listitem>
346      <para>
347       FAQ: Remove Zwiebelfreunde e.V. from the list of fiduciary sponsors
348       As of 2021 they no longer handle donations for foreign organisations
349       due to lack of resources.
350      </para>
351     </listitem>
352     <listitem>
353      <para>
354       FAQ: Remove an obsolete comment with a link to the long-gone PDF manual.
355      </para>
356     </listitem>
357     <listitem>
358      <para>
359       FAQ: Add a link to the TODO list.
360      </para>
361     </listitem>
362     <listitem>
363      <para>
364       FAQ: Change the sponsor amounts to USD slightly rounding the
365       converted amounts up to get simple numbers.
366       Receiving USD is apparently easier for SPI and SPI is
367       preferred by sponsors as they can send invoices.
368      </para>
369     </listitem>
370     <listitem>
371      <para>
372       Advertise the client-tags CGI page in the user manual.
373      </para>
374     </listitem>
375     <listitem>
376      <para>
377       Stop advertising the show-version CGI page which no longer exists.
378      </para>
379     </listitem>
380     <listitem>
381      <para>
382       Add yet another reason why +prevent-compression may cause problems.
383      </para>
384     </listitem>
385     <listitem>
386      <para>
387       Don't claim that contributors need ssh. It's only needed for committers.
388      </para>
389     </listitem>
390     <listitem>
391      <para>
392       Replace obsolete CVS instructions with Git instructions.
393      </para>
394     </listitem>
395     <listitem>
396      <para>
397       Remove an obsolete comment
398      </para>
399      </listitem>
400     </itemizedlist>
401    </para>
402   </listitem>
403   <listitem>
404    <para>
405     Config file changes:
406     <itemizedlist>
407     <listitem>
408      <para>
409       Change the suggested default-server-timeout to 5 to match the
410       suggested keep-alive-timeout. Otherwise using the defaults would
411       result in Privoxy reducing the default-server-timeout and logging
412       an error message.
413       Sponsored by: Robert Klemme
414      </para>
415     </listitem>
416     <listitem>
417      <para>
418       Update the 'debug 1' description.
419      </para>
420     </listitem>
421     <listitem>
422      <para>
423       Add a missing 'client-specific-tag' directive.
424      </para>
425     </listitem>
426     <listitem>
427      <para>
428       Comment out trusted-cgi-referer pointing to example.org.
429      </para>
430      </listitem>
431     </itemizedlist>
432    </para>
433   </listitem>
434   <listitem>
435    <para>
436     Action file improvements:
437     <itemizedlist>
438     <listitem>
439      <para>
440       Block requests to /(.*/)?piwik\.php
441      </para>
442     </listitem>
443     <listitem>
444      <para>
445       Block requests to .connectaserver.de/
446      </para>
447     </listitem>
448     <listitem>
449      <para>
450       Block requests to pixel.inforsea.com/
451      </para>
452     </listitem>
453     <listitem>
454      <para>
455       Block requests to t.vi-serve.com/
456      </para>
457     </listitem>
458     <listitem>
459      <para>
460       Block requests to .ioam.de/
461      </para>
462     </listitem>
463     <listitem>
464      <para>
465       Block requests to t.9gag.com/img.gif
466      </para>
467     </listitem>
468     <listitem>
469      <para>
470       Block requests to .pixel.parsely.com/ as image
471      </para>
472     </listitem>
473     <listitem>
474      <para>
475       Block requests to pixel.wp.com/
476      </para>
477     </listitem>
478     <listitem>
479      <para>
480       Disable fast-redirects for .librarything.com/
481      </para>
482     </listitem>
483     <listitem>
484      <para>
485       Disable fast-redirects for issue.freebsdfoundation.org/
486      </para>
487     </listitem>
488     <listitem>
489      <para>
490       Disable fast-redirects for .twitter.com/.*origin=http
491      </para>
492     </listitem>
493     <listitem>
494      <para>
495       Unblock belco24.de/
496      </para>
497     </listitem>
498     <listitem>
499      <para>
500       Add fast-redirects exception for .wikipedia.org/
501      </para>
502     </listitem>
503     <listitem>
504      <para>
505       Add fast-redirects exception for oss-fuzz.com/
506      </para>
507     </listitem>
508     <listitem>
509      <para>
510       Disable fast-redirects for .consensu.org/delivery/pixel\.php
511       and block the requests as image instead
512      </para>
513     </listitem>
514     <listitem>
515      <para>
516       Unblock .adbinstaller.com/
517       Reported by lvm in #942.
518      </para>
519     </listitem>
520     <listitem>
521      <para>
522       Unblock .adbshell.com
523       Reported by lvm in #942.
524      </para>
525     </listitem>
526     <listitem>
527      <para>
528       Unblock .tagesschau.de/
529      </para>
530     </listitem>
531     <listitem>
532      <para>
533       Disable fast-redirects for collector.githubapp.com/
534       and block requests to it as image instead
535      </para>
536     </listitem>
537     <listitem>
538      <para>
539       Unblock 'ada*.'
540      </para>
541     </listitem>
542     <listitem>
543      <para>
544       Add fast-redirects{} exception for sourcepoint.vice.com/
545      </para>
546     </listitem>
547     <listitem>
548      <para>
549       Unblock adaway.org/
550       Reported by DRS David Soft in AF#945.
551      </para>
552     </listitem>
553     <listitem>
554      <para>
555       Change two block reasons that previously were the same.
556       Sponsored by: Robert Klemme
557      </para>
558     </listitem>
559     <listitem>
560      <para>
561       Added a +delay-response{} test.
562      </para>
563     </listitem>
564     <listitem>
565      <para>
566       Updated the location of the development version
567       of default.action.master.
568      </para>
569      </listitem>
570     </itemizedlist>
571    </para>
572   </listitem>
573   <listitem>
574    <para>
575     Privoxy-Log-Parser:
576     <itemizedlist>
577     <listitem>
578      <para>
579       Added a --keep-date option to keep the date in highlighted messages.
580      </para>
581     </listitem>
582     <listitem>
583      <para>
584       Highlight new log messages.
585      </para>
586     </listitem>
587     <listitem>
588      <para>
589       Make gather_loglevel_clf_stats() more tolerant. While at it,
590       count all CLF messages as requests, even if the request is invalid.
591      </para>
592     </listitem>
593     <listitem>
594      <para>
595       Only show HTTP version distribution if at least one version has been detected.
596      </para>
597     </listitem>
598     <listitem>
599      <para>
600       Only show crunch statistics if crunches were detected.
601      </para>
602     </listitem>
603     <listitem>
604      <para>
605       Warn if the request counts differ.
606      </para>
607     </listitem>
608     <listitem>
609      <para>
610       Generate statistics if the log only contains LOG_LEVEL_CLF messages
611       so it can be used with vanilla webserver logs.
612       Previously Privoxy-specific "Request:" messages were required.
613      </para>
614     </listitem>
615     <listitem>
616      <para>
617       Align the client-HTTP-version distribution like other distributions
618      </para>
619     </listitem>
620     <listitem>
621      <para>
622       Bump version to 0.9.1
623      </para>
624     </listitem>
625     <listitem>
626      <para>
627       Include status code distribution in the stats.
628      </para>
629     </listitem>
630     <listitem>
631      <para>
632       Let the statistics include the size of the content Privoxy
633       transferred excluding HTTP headers.
634      </para>
635     </listitem>
636     <listitem>
637      <para>
638       Get with the program and expect all requests to be logged with LOG_LEVEL_REQUEST.
639       It's no longer necessary to count both LOG_LEVEL_REQUEST and
640       LOG_LEVEL_CRUNCH messages to get the total number of requests.
641      </para>
642     </listitem>
643     <listitem>
644      <para>
645       Leverage the LOG_LEVEL_CLF message to gather statistics that where
646       previously taken from LOG_LEVEL_HEADER lines. This results in less
647       confusing results if https inspection is enabled in which case there
648       are two LOG_LEVEL_HEADER lines with request lines.
649       Sponsored by: Robert Klemme
650      </para>
651     </listitem>
652     <listitem>
653      <para>
654       Properly highlight the filter results message. Previously a brace got lost.
655      </para>
656     </listitem>
657     <listitem>
658      <para>
659       Prefer the number of CLF lines to get the total number of requests
660       as it works with older Privoxy versions as well.
661      </para>
662      </listitem>
663     </itemizedlist>
664    </para>
665   </listitem>
666   <listitem>
667    <para>
668     Privoxy-Regression-Test:
669     <itemizedlist>
670     <listitem>
671      <para>
672       Turn curl's globbing mode off so we can allow more characters in URLs.
673      </para>
674     </listitem>
675     <listitem>
676      <para>
677       Allow '[' and ']' in URLs.
678      </para>
679     </listitem>
680     <listitem>
681      <para>
682       Include the action file when complaining about missing Sticky Actions.
683      </para>
684     </listitem>
685     <listitem>
686      <para>
687       Fix a sentence in the documentation.
688      </para>
689     </listitem>
690     <listitem>
691      <para>
692       Bump version to 0.7.1
693      </para>
694      </listitem>
695     </itemizedlist>
696    </para>
697   </listitem>
698   <listitem>
699    <para>
700     url-pattern-translator:
701     <itemizedlist>
702     <listitem>
703      <para>
704       Detect a couple of pattern prefixes case-insensitively.
705       Sponsored by: Robert Klemme
706      </para>
707     </listitem>
708     <listitem>
709      <para>
710       Skip CLIENT-TAG patterns.
711       Sponsored by: Robert Klemme
712      </para>
713     </listitem>
714     <listitem>
715      <para>
716       Skip patterns that have already been converted.
717       It should now be safe to "convert" a file multiple times.
718       Sponsored by: Robert Klemme
719      </para>
720     </listitem>
721     <listitem>
722      <para>
723       Add the new 'PCRE-HOST-PATTERN:' prefix.
724       Sponsored by: Robert Klemme
725      </para>
726      </listitem>
727     </itemizedlist>
728    </para>
729   </listitem>
730  </itemizedlist>
731