Roxen Compatibility Notes
=========================

Caudium 1.1 is mostly compatible with Roxen 1.3, except that it
requires Pike 7.0 or 7.1. Pike 0.6 is no longer supported

There are however some subtle changes, mainly for performance
reasons. You can modify the different behavior by editing the file
'server/etc/include/performace.h'.

Summary of Incompatible Changes in Caudium 1.1
==============================================
- The http2.pike protocol no longer supports the "config in URL"
  (mis?)feature from Roxen. This is URLs using the /<foo>/
  syntax. Please note that this is NOT the same as prestates - they are still
  supported.
- When writing a MODULE_PRECACHE to use with the http2 protocol,
  processing of normal request information isn't done. This includes
  supports data, prestates, query string variables etc. This was
  changed to greatly speed up the cached response time. If you need
  this to be done before your MODULE_PRECACHE can run, just call
  request_id->do_post_processing(). 

Summary of Incompatible Changes in Caudium 1.0
==============================================

- HTTP/0.9 is not handled per default (uncomment the SUPPORT_HTTP_09
  define to renable). In the future, support will most likely be removed
  completely.
- PING support removed (sorry, no define to enable this).
- id->client and id->referer are not set per default. The reason for
  making those fields arrays are beyond us. You can reach the headers
  as strings in id->request_headers or the shortcuts in id->useragent
  and id->referrer (uncomment the EXTRA_ROXEN_COMPAT to renable).
- The following headers are no longer in the misc mapping unless
  EXTRA_ROXEN_COMPAT is defined (they are still in the request_headers
  mapping of course): host, proxy-connection, security-scheme, via,
  cache-control, negotiate, forwarded, connection and content-type.
- spinnerlib is removed (Spinner compat not deemed necessary).
- RoxenUserID cookie renamed to CaudiumUserID.
- New module type added, MODULE_PRECACHE. Doesn't break any Roxen
  modules, but PRECACHE modules aren't compatible with Roxen for
  obvious reasons.
- The accessed database for the <accessed> and <counter> tags is now
  handled by the Core RXML Tags module. This means that if you changed
  the default value in Main HTML Parser before, these changes need to
  be reapplied.

Summary of Other Changes
========================

- id->host is now used for the Host header (lowercased). This
  obviously doesn't break any existing code.
- Use caudium-> instead of roxen-> and caudiumlib instead of
  roxenlib. roxen and roxenlib still exist however.
- To make a module that works in both Caudium and Roxen, you can use
  the the define CAUDIUM. The define ROXEN is still used in Caudium
  to maintain compatibility with code that uses this define to
  determine if Roxen or Spinner is used... :-)


Summary of Performance / Compat Flags
=====================================

This are flags you can change in server/etc/include/performance.h. The
default value is also indicated.

EXTRA_ROXEN_COMPAT (enabled)
	Do some extra, redundant (today) parsing of headers, like
	generating arrays of the referrer and user agent headers.

ENABLE_RAM_CACHE (enabled)
	Cache finished requests in ram for a short amount of time
	(default time is 30 seconds). This greatly increases
	performance if you have a less-than-huge set of data. If you
	have only very dynamic data, this flag can lower the
	performance.

SUPPORT_HTTP_O9 (disabled)
	Enable support for HTTP/0.9. The only thing that generally use
	this is is badly written fetch/status checking scripts. The
	http2 protocol never supports HTTP/0.9!

MODULE_LEVEL_SECURITY (enabled)
	Enable or disable module level security. This is the builtin
	username / ip security that is part of every module. Disabling
	it might make a small difference in performance.

ENABLE_SUPPORTS (enabled)
	Undefine this to disable the UserAgent -> supports
	lookup. This could have a very small impact in
	performance. Since the lookups are cached nowadays, the
	difference should be rather small.

ENABLE_DNS (enabled)
 	Define this if you don't want Caudium to use DNS. Note: This is
 	a minor speed optimization It's mainly used to reload network
 	/ dns server load on busy servers. Please note that option
 	turns off ALL ip -> hostname and hostname -> ip
 	conversion. Thus you can't use if if you want to run a proxy
 	or domain/host name based security. See NO_REVERSE_LOOKUP
 	below.

NO_REVERSE_LOOKUP (disabled)
 	This option turns of all ip->hostname lookups. However the
 	hostname->ip lookups are still functional. This _is_ usable if
 	you run a proxy, but still breaks host based authentication.

CONFIG_IF_IP_LOOKUPS (enabled) 
	Should we allow the config interface to lookup the hostnames
	of all ip-addresses on the machine? This is the default, but
	if your machine has a large number of virtual interfaces, we
	recommend that you disable this feature. The reason being that
	it takes a long time to do the ip -> hostname lookups. It's
	done for cosmetical reasons only.

COMPAT (disabled)
	Compatibility with some Really Old Version (TM) of the
	server. Quite possibly not even used at all anymore.

URL_MODULES (enabled)
	Should support for URL modules be included? This includes the
	htaccess module for example. Disabling this might result in a
	very slight speed boast

API_COMPAT (disabled)
	Another compat flag for some Very Old Server (TM). Don't
	enable, and will probably be removed soon.
