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
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
- 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
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
- 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
- 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
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.
Do some extra, redundant (today) parsing of headers, like
generating arrays of the referrer and user agent headers.
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
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!
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.
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.
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
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.
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.
Compatibility with some Really Old Version (TM) of the
server. Quite possibly not even used at all anymore.
Should support for URL modules be included? This includes the
htaccess module for example. Disabling this might result in a
very slight speed boast
Another compat flag for some Very Old Server (TM). Don't
enable, and will probably be removed soon.