+ <listitem>
+ <para>
+ When compiled without FEATURE_FAST_REDIRECTS, do not silently
+ ignore +fast-redirect{} directives
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Added a workaround for GNU libc's strptime() reporting negative
+ year values when the parsed year is only specified with two digits.
+ On affected systems cookies with such a date would not be turned
+ into session cookies by the +session-cookies-only action.
+ Reported by Vaeinoe in #3403560
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Fixed bind failures with certain GNU libc versions if no non-loopback
+ IP address has been configured on the system. This is mainly an issue
+ if the system is using DHCP and Privoxy is started before the network
+ is completely configured.
+ Reported by Raphael Marichez in #3349356.
+ Additional insight from Petr Pisar.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Privoxy log messages now use the ISO 8601 date format %Y-%m-%d.
+ It's only slightly longer than the old format, but contains
+ the full date including the year and allows sorting by date
+ (when grepping in multiple log files) without hassle.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In get_last_url(), do not bother trying to decode URLs that do
+ not contain at least one '%' sign. It reduces the log noise and
+ a number of unnecessary memory allocations.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In case of SOCKS5 failures, dump the socks response in the log message.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Simplify the signal setup in main().
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Streamline socks5_connect() slightly.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In socks5_connect(), require a complete socks response from the server.
+ Previously Privoxy didn't care how much data the server response
+ contained as long as the first two bytes contained the expected
+ values. While at it, shrink the buffer size so Privoxy can't read
+ more than a whole socks response.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In chat(), do not bother to generate a client request in case of
+ direct CONNECT requests. It will not be used anyway.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Reduce server_last_modified()'s stack size.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Shorten get_http_time() by using strftime().
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Constify the known_http_methods pointers in unknown_method().
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Constify the time_formats pointers in parse_header_time().
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Constify the formerly_valid_actions pointers in action_used_to_be_valid().
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Introduce a GNUMakefile MAN_PAGE variable that defaults to privoxy.1.
+ The Debian package uses section 8 for the man page and this
+ should simplify the patch.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Deduplicate the INADDR_NONE definition for Solaris by moving it to jbsockets.h
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In block_url(), ditch the obsolete workaround for ancient Netscape versions
+ that supposedly couldn't properly deal with status code 403.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Remove a useless NULL pointer check in load_trustfile().
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Remove two useless NULL pointer checks in load_one_re_filterfile().
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Change url_code_map[] from an array of pointers to an array of arrays
+ It removes an unnecessary layer of indirection and on 64bit system reduces
+ the size of the binary a bit.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Fix various typos. Fixes taken from Debian's 29_typos.dpatch by Roland Rosenfeld.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add a dok-tidy GNUMakefile target to clean up the messy HTML
+ generated by the other dok targets.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ GNUisms in the GNUMakefile have been removed.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Change the HTTP version in static responses to 1.1
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Synced config.sub and config.guess with upstream
+ 2011-11-11/386c7218162c145f5f9e1ff7f558a3fbb66c37c5.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add a dedicated function to parse the values of toggles. Reduces duplicated
+ code in load_config() and provides better error handling. Invalid or missing
+ toggle values are now a fatal error instead of being silently ignored.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Terminate HTML lines in static error messages with \n instead of \r\n.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Simplify cgi_error_unknown() a bit.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In LogPutString(), don't bother looking at pszText when not
+ actually logging anything.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Change ssplit()'s fourth parameter from int to size_t.
+ Fixes a clang complaint.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add a warning that the statistics currently can't be trusted.
+ Mention Privoxy-Log-Parser's --statistics option as
+ an alternative for the time being.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In rfc2553_connect_to(), start setting cgi->error_message on error.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Change the expected status code returned for http://p.p/die depending
+ on whether or not FEATURE_GRACEFUL_TERMINATION is available.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In cgi_die(), mark the client connection for closing.
+ If the client will fetch the style sheet through another connection
+ it gets the main thread out of the accept() state and should thus
+ trigger the actual shutdown.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add a proper CGI message for cgi_die().
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Don't enforce a logical line length limit in read_config_line().
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Slightly refactor server_last_modified() to remove useless gmtime*() calls.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In get_content_type(), also recognize '.jpeg' as JPEG extension.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Add '.png' to the list of recognized file extensions in get_content_type().
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In block_url(), consistently use the block reason "Request blocked by Privoxy"
+ In two places the reason was "Request for blocked URL" which hides the
+ fact that the request got blocked by Privoxy and isn't necessarily
+ correct as the block may be due to tags.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In listen_loop(), reload the configuration files after accepting
+ a new connection instead of before.
+ Previously the first connection that arrived after a configuration
+ change would still be handled with the old configuration.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In chat()'s receive-data loop, skip a client socket check if
+ the socket will be written to right away anyway. This can
+ increase the transfer speed for unfiltered content on fast
+ network connections.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The socket timeout is used for SOCKS negotiations as well which
+ previously couldn't timeout.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Don't keep the client connection alive if any configuration file
+ changed since the time the connection came in. This is closer to
+ Privoxy's behaviour before keep-alive support for client connection
+ has been added and also less confusing in general.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Treat all Content-Type header values containing the pattern
+ 'script' as a sign of text. Reported by pribog in #3134970.
+ </para>
+ </listitem>
+ </itemizedlist>