+ Log message improvements:
+ <itemizedlist>
+ <listitem>
+ <para>
+ If only the server connection is kept alive, do not pretent to wait for a new client request.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Remove a superfluos log message in forget_connection()
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In chat(), properly report missing server responses as such instead of calling them empty
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In forwarded_connect(), fix a log message nobody should ever see
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Fix a log message in socks5_connect(), a failed write operation was logged as failed read operation
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Let load_one_actions_file() properly complain about a missing '{' at the beginning of the file
+ Simply stating that a line is invalid isn't particularly helpful.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Do not claim to listen on a socket until we actually do.
+ Patch submitted by Petr Pisar #3354485
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Prevent a duplicated LOG_LEVEL_CLF message when sending out the "no-server-data" response
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Also log the client socket when dropping a connection.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Include the destination host in the
+ 'Request ... marked for blocking. limit-connect{...} doesn't allow CONNECT ...' message
+ Patch submitted by Saperski in #3296250.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Prevent a duplicated log message if none of the resolved IP
+ addresses were reachable
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In connect_to(), do not pretend to retry if forwarded-connect-retries is zero or unset.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When a specified user or group can't be found, put the name in single-quotes when logging it.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In rfc2553_connect_to(), explain getnameinfo() errors differently.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Remove a useless log message in chat()
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When retrying to connect, also log the maximum number of connection attempts
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Rephrase a log message in compile_dynamic_pcrs_job_list()
+ Divide the error code and its meaning with a colon.
+ Call the pcrs job dynamic and not the filter. Filters may
+ contain dynamic and non-dynamic pcrs jobs at the same time.
+ Only mention the name of the filter or tagger, but don't
+ claim it's a filter when it could be a tagger.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In a fatal error message in load_one_actions_file(), cover both URL and TAG patterns
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In pcrs_strerror(), properly report unknown positive error code values as unknown.
+ Previously they were handled like 0 (no error).
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In compile_dynamic_pcrs_job_list(), also log the actual error code as
+ pcrs_strerror() doesn't handle all errors reported by pcre
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Don't bother trying to continue chatting if the client didn't ask for it.
+ Reduces log noise a bit.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Make two fatal error message in load_one_actions_file() more descriptive
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In cgi_send_user_manual(), log when rejecting a file name due to '/' or '..'
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In load_file(), log a message if opening a file failed
+ The CGI error message alone isn't too helpful.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In connection_destination_matches(), improve two log messages to
+ help understand why the destinations don't match
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Rephrase a log message in serve(). Client request arrival
+ should be differentiated from closed client connections now.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In serve(), log if a client connection isn't reused due to a
+ configuration file change.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Let mark_server_socket_tainted() always mark the server socket tainted,
+ just don't talk about it in cases where it has no effect.
+ It doesn't change Privoxy's behaviour, but makes understanding
+ the log file easier.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Miscellaneous Privoxy improvements:
+ <itemizedlist>
+ <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>
+ If the --user argument user[.group] contains a dot,
+ always bail out if no group has been specified.
+ Previously the intended, but undocumented (and apparently
+ untested), behaviour was to try interpreting the whole
+ argument as user name, but the detection was flawed and
+ checked for '0' isntead of '\0', thus merely preventing
+ group names beginning with a zero.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Simplify the signal setup in main()
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Streamline socks5_connect() slightly
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In case of SOCKS5 failures, dump the socks response
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In socks5_connect(), require a complete socks response from the server
+ Previously we 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 we can't read more
+ than a whole socks response. This is required to support
+ Tor's optimistic data extension.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In chat(), do not bother to generate a client request in case of direct CONNECT requests
+ </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>
+ In html_code_map[], use a numeric character reference instead of '
+ which wasn't standardized before XHTML 1.0
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Introduce a 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>
+ Fix an invalid free when compiled with FEATURE_GRACEFUL_TERMINATION
+ and shut down through http://config.privoxy.org/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 extenstions 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 necessarly correct as the block may be due to tags.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In get_actions(), fix the "temporary" backwards compatibility hack
+ to accept block actions without reason.
+ It also covered other actions that should be rejected as invalid.
+ Reported by Billy Crook.
+ </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 negotiation as well.
+ </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>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ configure:
+ <itemizedlist>
+ <listitem>
+ <para>
+ Added a --disable-ipv6-support switch for platforms where support
+ is detected but doesn't actually work.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Do not check for the existence of strerror() and memmove() twice
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Remove a useless test for setpgrp(2). Privoxy doesn't
+ need it and it can cause problems when cross-compiling
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Rename the --disable-acl-files switch to --disable-acl-support
+ Since about 2001, ACL directives are specified in the standard config file.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Update the URL of the 'Removing outdated PCRE version after the
+ next stable release' posting.
+ The old URL stopped working after one of SF's recent layout pessimizations.
+ Reported by Han Liu.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Privoxy-Regression-Test:
+ <itemizedlist>
+ <listitem>
+ <para>
+ Added --shuffle-tests option to increase the chances of detection race conditions
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Added a --local-test-file option that allows to use Privoxy-Regression-Test without Privoxy
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Added tests for missing socks4 and socks4a forwarders
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The --privoxy-address option now works with IPv6 addresses
+ containing brackets, too
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Perform limited sanity checks for parameters that are supposed
+ to have numerical values.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Added a --sleep-time option to specify a number of seconds to
+ sleep between tests, defaults to 0.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Disable the range-requests tagger for tests that break if it's enabled
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Log messages use the ISO 8601 date format %Y-%m-%d.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Fix spelling in two error messages.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ In the --help output, include a list of supported tests and their default levels.
+ </para>
+ </listitem>
+ </itemizedlist>