c6d086e1e07d40a684b545f0ddff91eaec5bb8de
[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-2021 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.33</application> fixes an XSS issue
28   and multiple DoS issues and a couple of other bugs.
29   The issues also affect earlier Privoxy releases.
30   <application>Privoxy 3.0.33</application> also comes with
31   a couple of general improvements an new features.
32 </para>
33 <para>
34   Changes in <application>Privoxy 3.0.33</application> stable:
35 </para>
36 <para>
37  <itemizedlist>
38   <listitem>
39    <para>
40     Bug fixes:
41     <itemizedlist>
42     <listitem>
43      <para>
44       handle_established_connection(): Skip the poll()/select() calls
45       if TLS data is pending on the server socket. The TLS library may
46       have already consumed all the data from the server response in
47       which case poll() and select() will not detect that data is
48       available to be read.
49       Fixes SF bug #926 reported by Wen Yue.
50      </para>
51     </listitem>
52     <listitem>
53      <para>
54       continue_https_chat(): Update csp->server_connection.request_sent
55       after sending the request to make sure the latency is calculated
56       correctly. Previously https connections were not reused after
57       timeout seconds after the first request made on the connection.
58      </para>
59     </listitem>
60     <listitem>
61      <para>
62       free_pattern_spec(): Don't try to free an invalid pointer
63       when unloading an action file with a TAG pattern while
64       Privoxy has been compiled without FEATURE_PCRE_HOST_PATTERNS.
65       Closes: SF patch request #147. Patch by Maxim Antonov.
66      </para>
67     </listitem>
68     <listitem>
69      <para>
70       Establish the TLS connection with the client earlier and decide
71       how to route the request afterwards. This allows to change the
72       forwarding settings based on information from the https-inspected
73       request, for example the path.
74      </para>
75     </listitem>
76     <listitem>
77      <para>
78       Adjust build_request_line() to create a CONNECT request line when
79       https-inspecting and forwarding to a HTTP proxy.
80       Fixes SF bug #925 reported by Wen Yue.
81      </para>
82     </listitem>
83     <listitem>
84      <para>
85       load_config(): Add a space that was missing in a log message.
86      </para>
87      </listitem>
88     </itemizedlist>
89    </para>
90   </listitem>
91   <listitem>
92    <para>
93     General improvements:
94     <itemizedlist>
95     <listitem>
96      <para>
97       serve(): Close the client socket as well if the server socket
98       for an inspected connection has been closed. Privoxy currently
99       can't establish a new server connection when the client socket
100       is reused and would drop the connection in continue_https_chat()
101       anyway.
102      </para>
103     </listitem>
104     <listitem>
105      <para>
106       Don't disable redirect checkers in redirect_url()
107       Disable them in handle_established_connection() instead.
108       Doing it in redirect_url() prevented the +redirect{} and
109       +fast-redirects{} actions from being logged with LOG_LEVEL_ACTIONS.
110      </para>
111     </listitem>
112     <listitem>
113      <para>
114       handle_established_connection(): Slightly improve a comment
115      </para>
116     </listitem>
117     <listitem>
118      <para>
119       handle_established_connection(): Fix a comment
120      </para>
121     </listitem>
122     <listitem>
123      <para>
124       socks5_connect(): Fix indentation.
125      </para>
126     </listitem>
127     <listitem>
128      <para>
129       handle_established_connection(): Improve an error message
130      </para>
131     </listitem>
132     <listitem>
133      <para>
134       create_pattern_spec(): Fix ifdef indentation
135      </para>
136     </listitem>
137     <listitem>
138      <para>
139       Fix comment typos
140      </para>
141     </listitem>
142     <listitem>
143      <para>
144       Add a CGI handler for /wpad.dat that returns a
145       Proxy Auto-Configuration (PAC) file.
146       Among other things, it can be used to instruct clients
147       through DHCP to use Privoxy as proxy.
148       For example with the dnsmasq option:
149       dhcp-option=252,http://config.privoxy.org/wpad.dat
150       Initial patch by Richard Schneidt.
151      </para>
152     </listitem>
153     <listitem>
154      <para>
155       listen_loop(): When shutting down gracefully, close listening ports
156       before waiting for the threads to exit.
157       Allows to start a second Privoxy with the same config file
158       while the first Privoxy is still running.
159      </para>
160     </listitem>
161     <listitem>
162      <para>
163       Allow to edit the add-header action through the CGI editor by
164       generalizing the code that got added with the suppress-tag action.
165       Closes SF patch request #146. Patch by Maxim Antonov.
166      </para>
167     </listitem>
168     <listitem>
169      <para>
170       process_encrypted_request(): Improve a log message
171       The function only processes request headers and there
172       may still be unread request body data left to process.
173      </para>
174     </listitem>
175     <listitem>
176      <para>
177       read_http_request_body(): Fix two error messages that used an incorrect variable.
178      </para>
179     </listitem>
180     <listitem>
181      <para>
182       chat(): Log the applied actions before deciding how to forward the request.
183      </para>
184     </listitem>
185     <listitem>
186      <para>
187       parse_time_header(): Silence a coverity complaint when building without assertions.
188      </para>
189     </listitem>
190     <listitem>
191      <para>
192       receive_encrypted_request_headers(): Improve a log message
193      </para>
194     </listitem>
195     <listitem>
196      <para>
197       mbedTLS get_ciphersuites_from_string(): Use strlcpy() instead of strncpy().
198       Previously the terminating NUL wasn't copied which resulted
199       in a compiler warning. This didn't cause actual problems as
200       the target buffer was initialized by zalloc_or_die() so the
201       last byte of the target buffer was NUL already.
202       Actually copying the terminating NUL seems clearer, though.
203      </para>
204     </listitem>
205     <listitem>
206      <para>
207       Remove compiler warnings. "log_error(LOG_LEVEL_FATAL, ..." doesn't return
208       but apparently the compiler doesn't know that.
209       Get rid of several "this statement may fall through [-Wimplicit-fallthrough=]" warnings.
210      </para>
211     </listitem>
212     <listitem>
213      <para>
214       If the the response is chunk-encoded, ignore the Content-Length
215       header sent by the server.
216       Allows to load https://redmine.lighttpd.net/ with filtering enabled.
217      </para>
218     </listitem>
219     <listitem>
220      <para>
221       Store the PEM certificate in a dynamically allocated buffer
222       when https-inspecting. Should prevent errors like:
223       2021-03-16 22:36:19.148 7f47bbfff700 Error: X509 PEM cert len 16694 is larger than buffer len 16383
224       As a bonus it should slightly reduce the memory usage as most
225       certificates are smaller than the previously used fixed buffer.
226       Reported by: Wen Yue
227      </para>
228     </listitem>
229     <listitem>
230      <para>
231       Don't log the applied actions in process_encrypted_request()
232       Log them in continue_https_chat() instead to mirror chat().
233       Prevents the applied actions from getting logged twice
234       for the first request on an https-inspected connection.
235      </para>
236     </listitem>
237     <listitem>
238      <para>
239       OpenSSL generate_host_certificate(): Use config.privoxy.org as Common Name
240       Org and Org Unit if the real host name is too long to get accepted by OpenSSL.
241       Clients should only care about the Subject Alternative Name
242       anyway and we can continue to use the real host name for it.
243       Reported by Miles Wen on privoxy-users@.
244      </para>
245     </listitem>
246     <listitem>
247      <para>
248       OpenSSL generate_host_certificate(): Fix two error messsages.
249      </para>
250     </listitem>
251     <listitem>
252      <para>
253       Improve description of handle_established_connection()
254      </para>
255     </listitem>
256     <listitem>
257      <para>
258       OpenSSL ssl_store_cert(): Translate EVP_PKEY_EC to a string.
259      </para>
260     </listitem>
261     <listitem>
262      <para>
263       OpenSSL ssl_store_cert(): Remove pointless variable initialization.
264      </para>
265     </listitem>
266     <listitem>
267      <para>
268       OpenSSL ssl_store_cert(): Initialize pointer with NULL instead of 0.
269      </para>
270      </listitem>
271     </itemizedlist>
272    </para>
273   </listitem>
274   <listitem>
275    <para>
276     Action file improvements:
277     <itemizedlist>
278     <listitem>
279      <para>
280       Disable fast-redirects for .microsoftonline.com/.
281      </para>
282     </listitem>
283     <listitem>
284      <para>
285       Disable fast-redirects for idp.springer.com/.
286      </para>
287     </listitem>
288     <listitem>
289      <para>
290       Disable fast-redirects for .zeit.de/zustimmung
291      </para>
292     </listitem>
293     <listitem>
294      <para>
295       Unblock adv-archiv.dfn-cert.de/
296      </para>
297     </listitem>
298     <listitem>
299      <para>
300       Block requests to eu-tlp01.kameleoon.eu/
301      </para>
302     </listitem>
303     <listitem>
304      <para>
305       Block requests to fpa-events.arstechnica.com/
306      </para>
307     </listitem>
308     <listitem>
309      <para>
310       Unblock nlnet.nl/.
311      </para>
312     </listitem>
313     <listitem>
314      <para>
315       Unblock adguard.com/.
316      </para>
317      </listitem>
318     </itemizedlist>
319    </para>
320   </listitem>
321   <listitem>
322    <para>
323     Privoxy-Log-Parser:
324     <itemizedlist>
325     <listitem>
326      <para>
327       Highlight 'Socket timeout 3 reached: http://127.0.0.1:20000/no-filter/chunked-content/36'
328      </para>
329     </listitem>
330     <listitem>
331      <para>
332       Improve documentation for inactivity-detection mode
333      </para>
334     </listitem>
335     <listitem>
336      <para>
337       Detect date changes when looking for inactivity
338      </para>
339     </listitem>
340     <listitem>
341      <para>
342       Add a --passed-request-statistics-threshold option
343       That can be set to get statistics for requests that
344       were passed.
345      </para>
346     </listitem>
347     <listitem>
348      <para>
349       Add a "inactivity detection" mode
350       Which can be useful for debugging purposes.
351      </para>
352     </listitem>
353     <listitem>
354      <para>
355       Bump version to 0.9.4
356      </para>
357     </listitem>
358     <listitem>
359      <para>
360       Only run print_intro() and print_outro() when syntax highlighting
361      </para>
362     </listitem>
363     <listitem>
364      <para>
365       Rephrase a sentence in the documentation
366      </para>
367     </listitem>
368     <listitem>
369      <para>
370       Highlight 'Client socket 7 is no longer usable. The server socket has been closed.'
371      </para>
372     </listitem>
373     <listitem>
374      <para>
375       Clarify --statistics output
376       by explicitly mentioning that the status codes
377       sent by the server may differ from the ones in
378       "debug 512" messages.
379      </para>
380     </listitem>
381     <listitem>
382      <para>
383       Fix typo in the --statistics output
384      </para>
385     </listitem>
386     <listitem>
387      <para>
388       Remove an unused variable
389      </para>
390     </listitem>
391     <listitem>
392      <para>
393       Highlight 'The peer notified us that the connection on socket 11 is going to be closed'
394      </para>
395      </listitem>
396     </itemizedlist>
397    </para>
398   </listitem>
399   <listitem>
400    <para>
401     Privoxy-Regression-Test:
402     <itemizedlist>
403     <listitem>
404      <para>
405       Remove duplicated word in a comment.
406      </para>
407      </listitem>
408     </itemizedlist>
409    </para>
410   </listitem>
411   <listitem>
412    <para>
413     regression-tests.action:
414     <itemizedlist>
415     <listitem>
416      <para>
417       Add fetch test for http://p.p/wpad.dat.
418      </para>
419     </listitem>
420     <listitem>
421      <para>
422       Bump for-privoxy-version to 3.0.33 which introduced the wpad.dat support.
423      </para>
424     </listitem>
425     <listitem>
426      <para>
427       Add more tests for the '/send-banner' code.
428      </para>
429     </listitem>
430     <listitem>
431      <para>
432       Add test for OVE-20210203-0001.
433      </para>
434     </listitem>
435     <listitem>
436      <para>
437       Add a test for CVE-2021-20217.
438      </para>
439      </listitem>
440     </itemizedlist>
441    </para>
442   </listitem>
443   <listitem>
444    <para>
445     uagen:
446     <itemizedlist>
447     <listitem>
448      <para>
449       Bump generated Firefox version to 91 (ESR)
450      </para>
451     </listitem>
452     <listitem>
453      <para>
454       Bump version to 1.2.3
455      </para>
456     </listitem>
457     <listitem>
458      <para>
459       Bump copyright
460      </para>
461      </listitem>
462     </itemizedlist>
463    </para>
464   </listitem>
465   <listitem>
466    <para>
467     Build system:
468     <itemizedlist>
469     <listitem>
470      <para>
471       configure: Bump SOURCE_DATE_EPOCH.
472      </para>
473     </listitem>
474     <listitem>
475      <para>
476       GNUmakefile.in: Fix typo.
477      </para>
478     </listitem>
479     <listitem>
480      <para>
481       configure: Add another warning in case --disable-pthread is used
482       while POSIX threads are available.
483       Various features don't even compile when not using threads.
484      </para>
485     </listitem>
486     <listitem>
487      <para>
488       Add configure option to enable MemorySanitizer.
489      </para>
490     </listitem>
491     <listitem>
492      <para>
493       Add configure option to enable UndefinedBehaviorSanitizer.
494      </para>
495     </listitem>
496     <listitem>
497      <para>
498       Add configure option to enable AddressSanitizer.
499      </para>
500     </listitem>
501     <listitem>
502      <para>
503       Bump copyright
504      </para>
505     </listitem>
506     <listitem>
507      <para>
508       Add a configure option to disable pcre JIT compilation.
509       While JIT compilation makes filtering faster it can
510       cause false-positive valgrind complaints.
511       As reported by Gwyn Ciesla in SF bug 924 it also can
512       cause problems when the SELinux policy does not grant
513       Privoxy "execmem" privileges.
514      </para>
515     </listitem>
516     <listitem>
517      <para>
518       configure: Remove obsolete RPM_BASE check
519      </para>
520      </listitem>
521     </itemizedlist>
522    </para>
523   </listitem>
524   <listitem>
525    <para>
526     Windows build system:
527     <itemizedlist>
528     <listitem>
529      <para>
530       Update the build script to use mbed tls version 2.6.11.
531      </para>
532     </listitem>
533     <listitem>
534      <para>
535       Update build script to use the final 8.45 pcre library.
536      </para>
537     </listitem>
538     <listitem>
539      <para>
540       Put all the '--enable-xxx' options in the configure call together.
541      </para>
542      </listitem>
543     </itemizedlist>
544    </para>
545   </listitem>
546   <listitem>
547    <para>
548     Documentation:
549     <itemizedlist>
550     <listitem>
551      <para>
552       contacting: Remove obsolete reference to announce.sgml.
553      </para>
554     </listitem>
555     <listitem>
556      <para>
557       contacting: Request that the browser cache is cleared before
558       producing a log file for submission.
559      </para>
560     </listitem>
561     <listitem>
562      <para>
563       Sponsor FAQ: Note that Privoxy users may follow sponsor links
564       without Referer header set.
565      </para>
566     </listitem>
567     <listitem>
568      <para>
569       newfeatures: Clarify that https inspection also allows to
570       filter https responses.
571      </para>
572     </listitem>
573     <listitem>
574      <para>
575       developer-manual: Mention that announce.txt should be updated
576       when doing a release.
577      </para>
578     </listitem>
579     <listitem>
580      <para>
581       config: Explicitly mention that the CGI pages disclosing the
582       ca-password can be blocked and upgrade the disclosure paragraphs
583       to a warning.
584      </para>
585     </listitem>
586     <listitem>
587      <para>
588       Put all the requested debug options in the config file.
589       Section 11.1 of the Privoxy user manual lists all the debug
590       options that should be enabled when reporting problems or requesting support.
591       Make it easier for users to do the right thing by having all those
592       options present in the config.
593      </para>
594     </listitem>
595     <listitem>
596      <para>
597       Update TODO list item #184 to note that WolfSSL support will
598       (hopefully) appear after the 3.0.34 release
599      </para>
600     </listitem>
601     <listitem>
602      <para>
603       Update max-client-connections's description.
604       On modern systems other than Windows Privoxy should
605       use poll() in which case the FD_SETSIZE value isn't
606       releveant.
607      </para>
608     </listitem>
609     <listitem>
610      <para>
611       Add a warning that the socket-timeout does not apply
612       to operations done by TLS libraries
613      </para>
614     </listitem>
615     <listitem>
616      <para>
617       Make documentation slightly less "offensive" for some people
618       by avoiding the word "hell".
619      </para>
620      </listitem>
621     </itemizedlist>
622    </para>
623   </listitem>
624  </itemizedlist>
625 </para>