- The client socket is kept open until the server socket has
- been marked as unused. This should increase the chances that
- the still-open connection will be reused for the client's next
- request to the same destination. Note that this only matters
- if connection-sharing is enabled.
- </para>
- </listitem>
- <listitem>
- <para>
- A TODO list has been added to the source tarball to give potential
- volunteers a better idea of what the current goals are. Donations
- are still welcome too: http://www.privoxy.org/faq/general.html#DONATE
- </para>
- </listitem>
- <listitem>
- <para>
- In case of missing server data, no error message is send to the
- client if the request arrived on a reused connection. The client
- is then supposed to silently retry the request without bothering
- the user. This should significantly reduce the frequency of the
- "No server or forwarder data received" error message many users
- reported.
- </para>
- </listitem>
- <listitem>
- <para>
- More reliable detection of prematurely closed client sockets
- with keep-alive enabled.
- </para>
- </listitem>
- <listitem>
- <para>
- FEATURE_CONNECTION_KEEP_ALIVE is decoupled from
- FEATURE_CONNECTION_SHARING and now available on
- all platforms.
- </para>
- </listitem>
- <listitem>
- <para>
- Improved handling of POST requests on reused connections.
- Should fix problems with stalled connections after submitting
- form data with some browser configurations.
- </para>
- </listitem>
- <listitem>
- <para>
- Fixed various latency calculation issues.
- </para>
- </listitem>
- <listitem>
- <para>
- Allows the client to pass NTLM authentication requests to a
- forwarding proxy. This was already assumed and hinted to work
- in 3.0.13 beta but actually didn't. Now it's confirmed to work
- with IE, Firefox and Chrome.
- Thanks to Francois Botha and Wan-Teh Chang
- </para>
- </listitem>
- <listitem>
- <para>
- Fixed a calculation problem if receiving the server headers
- takes more than two reads, that could cause Privoxy to terminate
- the connection prematurely. Reported by Oliver.
- </para>
- </listitem>
- <listitem>
- <para>
- Compiles again on platforms such as OpenBSD and systems
- using earlier glibc version that don't support AI_ADDRCONFIG.
- Anonymously submitted in #2872591.
- </para>
- </listitem>
- <listitem>
- <para>
- A bunch of MS VC project files and Suse and Redhat RPM spec
- files have been removed as they were no longer maintained for
- quite some time.
+ General improvements:
+ <itemizedlist>
+ <listitem>
+ <para>
+ Privoxy can (re)compress buffered content before delivering
+ it to the client. Disabled by default as most users wouldn't
+ benefit from it.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ The +fast-redirects{check-decoded-url} action checks URL
+ segments separately. If there are other parameters behind
+ the redirect URL, this makes it unnecessary to cut them off
+ by additionally using a +redirect{} pcrs command.
+ Initial patch submitted by Jamie Zawinski in #3429848.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ When loading action sections, verify that the referenced filters
+ exist. Currently missing filters only result in an error message,
+ but eventually the severity will be upgraded to fatal.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Allow to bind to multiple separate addresses.
+ Patch set submitted by Petr Pisar in #3354485.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Set socket_error to errno if connecting fails in rfc2553_connect_to().
+ Previously rejected direct connections could be incorrectly reported
+ as DNS issues if Privoxy was compiled with IPv6 support.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ Adjust url_code_map[] so spaces are replaced with %20 instead of '+'
+ While '+' can be used by client's submitting form data, this is not
+ actually what Privoxy is using the lookups for. This is more of a
+ cosmetic issue and doesn't fix any known problems.
+ </para>
+ </listitem>
+ <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>