RabbIT proxy for a faster web RabbIT logo
w3c on HTTP

New release
rabbit 4.0

Current version: 3.18
updated: Mar 29 2009

Java/6+ only
Old versions

dnsjava source: dnsjava-2.0.6.tar.gz

Old version
RabbIT 2.x

Robert Olofsson


version 3.18 (2009-03-29) Fixed a problem where tunnels (https) could crash. Fixed a problem where repacking could cause NPE (redeemer). version 3.17 (2009-01-20) Added registration time to selector status page. Added timeout to close down channels that are somehow lost (to not leak sockets until the real bug is fixed). Made sure that some map sites are not filtered by default. Blocked some more ad sites by default. Fixed a timeout issue in the tunnel handler (Russ). version 3.16 (2008-08-11) Moved RequestHandler into it's own file and added synchronization to ensure threads see the correct things, may hopefully fix a few rare NPE:s, (reported, but not reproduced). Created new packages and moved classes from rabbit.proxy into the new general packages. Added a client package with client example code for HEAD and GET requests. Fixed a lot of pmd- and findbugs-warnings. Added a simple web server. ImageHandler did sometimes ignore the min_size settings. Updated dnsjava to version 2.0.6. Updated and added javadoc in a some classes. version 3.15 (2008-07-24) Minor changes in cache status page (Rick). Updated the FileSender to know about some more mime types. Tried to avoid heavy recursion in BaseHandler and GZipHandler that could cause stack overflow on a few sites. More ecj warnings fixed (@Override, non-needed else blocks, ...). Avoid a few cache checks when the cache size is zero. Added an allowURLmatching filter to BlockFilter to really restrict web access through the proxy (Ilde). Increased the selector loops before spin evasion was triggered, it could happen on heavily loaded instances. version 3.14.1 (2008-01-06) The html parser could sometimes throw exceptions due to reuse of variables the previous parse. version 3.14 (2007-12-15) Fixed a problem with parsing HTTP/0.9 responses. Fixed a problem when sending requests for url:s without any file information (problem reported by Jon). version 3.13 (2007-11-21) Made rabbit sleep longer when it is idle. Fixed a problem with zero length resources (apple store style sheets). Added some more javadoc and comments (Rick). Improved the handling of localhost accesses for status pages (robo). Some code cleanup (Rick and robo). Added some more comments to the code (Rick). Added some technical documentation describing the thread usage of rabbit. Added some code to avoid NPE in SelectorRunner during shutdown of proxy (bug from Vladimir). Code cleanup: remove unneeded imports and unused variables. version 3.12 (2007-10-15) Removed some unused code from the zip handling. Tried to add a workaround for the broken linux/epoll selector (in java 6u1, 6u2 and 6u3). version 3.11 (2007-09-17) Made it possible to configure the minimum image size to convert. Fixed a problem with html parsing and lingering rest blocks. Made the AdFilter handle a few more cases of bad html (fixes http://linuxtoday.com/). Made sure that the selector de-registers unhandled sockets nicely. Some code cleanup in cache validation (Rick). Moved socket handler deregistration to SelectorRunner to make sure that no handler misses to deregister (and thus causing cpu spin on the selector). Fixed the problem with proxy chaining and ssl handling. Rick added deflate support. Added more debug logging. Fixed a problem with gzip unpacking hangin if the first resource block was very short. version 3.10 (2007-07-09) Fixed a few problems found by findbugs/1.2.1. Fixed a typo in the config for SQLProxyAuth (Luis). Tried to make the html filter nicer to javascript when javascript is sent as mime type text/html. Fixed a problem with selection key being cancelled when handlers run in the thread pool (robo, found by Vladimir). version 3.9 (2007-06-11) Java/6 is now needed. Added the possibility for html filters to turn caching off for the current resource, rick+robo. Updated the cache to also count size of header files. Added Ricks patches to supress favicon error logs, getRequestURI in Connection and updated the HttpSnoop filter with a parameter to only print status lines. Added an example filter that can be used to set request or response headers. Updated FilterHandler/HtmlParser to handle different character sets. Made it possible to set the default charset for FilterHandler (rfc2616 say ISO-8859-1, but some people want otherwise). Fixed a NPE that could occur if DontFilterFilter was badly configured. Added ".js" to the list of file types not to parse, they are usually javascript, but can sometimes be sent as "text/html". version 3.8 (2007-03-07) Added a RevalidateFilter that can be used to make sure that rabbit always revalidates some (or all) resources. Added deny lists handling to conf/access and AccessFilter. Added Ricks patch to give a nicer host not found page. Made the Selector information more readable. Added some more information to the status page. Fixed a problem with web connections resources reading too much data (when pipelining requests). Added Ricks patches for easier handling of mime type handlers: remove whitespace after ';' and allow '?' to indicate one optional character. version 3.7 (2007-01-08) Fixed a NPE that could happen when caching http headers. Fixed a problem where rabbit got a SIOBE for requests for "". Fixed a problem with zero sized Content-Length in uploads. Fixed a rare NPE in BaseHandler.finish. version 3.6 (2006-11-17) Added a filter to remove "Accept-Encoding: gzip", useful if you want rabbit to filter more sites. Fixed a problem with restart when select fails. Updated dnsjava to version 2.0.2. Rewrote gzip packing and unpacking. Added the possibility to unpack gzipped resources. Changed the config for handlers to be id based, which means that it is possible to configure the handler differently based on image type or content encoding. Fixed a memory leak in the ConnectionHandler. Fixed a problem where file transfers would loop trying to write instead of shutting down. version 3.5 (2006-09-17) Fixed a problem where GZipHandler failed to keep track of how much data it had read and thus causing rabbit to refetch resources. Rework how cache handling works, it is much faster now. Removed most locks on the returned tasks list. Some small performance fixes all over, both for memory and cpu. version 3.4 (2006-08-28) Added a buffer cache, direct buffers will now be reused and rabbit will cause less GC. Web connections that are flagged for keep alive, but have outstanding data to read will now be closed. version 3.3 (2006-07-30) Lots of work with the selector registration to be able to handle client side pipelining. Fixed a lot of findbugs flagged problems. Fixed problems with some partial downloads. version 3.2 (2006-05-27) Fixed a NPE in BaseHandler.finish:208. Fixed a workaround for a CCE in HttpProxy.handleSelects:432. Fixed a problem with GZipHandler and already compressed streams. version 3.1 (2006-04-06) Upstream proxy should work again. AdFilter has a better default for adlinks. Fixed config of ImageHandler that was ignored. Infinite loop bug in RandomCacheResourceSource fixed. version 3.0 (2006-03-28) BaseHandler will no longer chunk resources if the content length is known. Set sockets to use TcpNoDelay (Nagle's algorithm). Started to redo the pipeline handling. Implemented block listener handling to file reousrces. Cache will now use buffered streams. Added LogRotator again. version 3.0 pre-release (2006-02-13) first pre release of rabbit 3.0. RabbIT now uses java.nio for all network talk and most of the internal systems uses threads for long time operations.