Changes for version 0.14 - 2005-03-29

  • ANNOUNCE
    • It's been more than a year since last release, which is bad. I now plan to release new versions more often, maybe about once a month, or when there are big changes.
  • DEPRECATION
    • the start() method of HTTP::Proxy::Bodyfilter subclasses is renamed begin(), since it now has an end() counterpart. (On a related note, I improve my English. Be sure to check out http://www.landgren.net/perl/lt-2004.html for details)
    • start() in filters is therefore declared deprecated, an error message is logged. The start() method will not be called any more as from 0.15.
    • the FILTER constant is now named FILTERS. FILTER will disappear in 0.15 as well.
  • ENHANCEMENTS
    • subclasses of HTTP::Proxy::BodyFilter can now have a finalisation method, named end()
    • the start^Wbegin() method of HTTP::Proxy::BodyFilter subclasses now receive the message as an argument
    • new built-in filter: HTTP::Proxy::BodyFilter::save that can save the message body to a file while browsing
    • new built-in filter: HTTP::Proxy::BodyFilter::complete that stores the message body in memory and passes it on to the next filters only when it's complete
    • logs have cleaner prefixes and the pid is always shown
    • should work under 5.005_03 (Thanks to Mathieu Arnold)
    • transparent proxying support (mostly to please Martin Zdila and Paul Makepeace)
    • push_filter() should now accept the query parameter
  • FIXES
    • the FILTER constant is now named FILTERS
  • BUGS
    • the proxy does not work under Win32, except if you force maxchild to 0 (no forking at all).
    • t/20dummy.t (and a few otrhers) hanged under Win32
      • Ken Hirsch proposed a patch for HTTP::Daemon (and a workaround for HTTP::Proxy's daemon object)
      • Bruno De Fraine tracked down the problem to the fork() emulation by Windows threads under Win32 that lead to a deadlock. => both explanations cover the same problem, which I haven't been able to correct yet
    • all the tests that fork a proxy and a server are therefore skipped under Win32. This is ugly, and will change in the future.
  • EXAMPLES
    • eg/rfc.pl - save rfc\d+\.txt files as we browse them
    • eg/js.pl - save \.js files as we browse them
    • eg/dragon.pl - enhance the Dragon Go Server web site
    • eg/fudd.pl - make the web tawk wike Ewmer J. Fudd
    • eg/switch.pl - switch proxies as you browse
    • Changed all the examples so that they can take HTTP::Proxy::new() parameters on the command-line (so, call them with logmask 3, for example)
  • DOCUMENTATION
    • documentation for the filter initialisation methods
    • removed all references to the so-called "store-and-forward" mechanism (see HTTP::Proxy::BodyFilter::complete)

Modules

A pure Perl HTTP proxy
A base class for HTTP messages body filters
A filter that passes on a complete body or nothing
Filter using HTML::Parser
A filter to transmogrify HTML text
A filter that outputs only complete lines
A filter that saves transfered data to a file
A class for creating simple filters
A filter that outputs only complete tags
A base class for HTTP message header filters
A class for creating simple filters
An internal filter to respect RFC2616

Provides

in lib/HTTP/Proxy.pm