The following errors appeared on Ubuntu builds:
cc1: warning: command line option '-ftemplate-depth=300' is valid for C++/ObjC++ but not for C [enabled by default]
In file included from store.h:9:0,
from store.c:21:
render_config.h:6:1: error: expected identifier or '(' before '/' token
render_config.h:15:1: error: stray '#' in program
...
As I don't know why this broke, or how to fix it, I am reverting this patch for now. It also only triggeres after a make distclean
So far mod_tile could only connect to renderd via a unix domain socket.
Renderd was already able to accept tile rendering requests on tcp sockets
to enable it to be distributed accross multiple servers. With adding this
feature to mod_tile, it is now possible to have renderd on a different server
than mod_tile.
If multiple IPs are registered to the renderd dns entry, it supports a simple
form of automatic fail over, although a more sophisticated solution is likely
necessary for proper high availability setups.
based expiry
With a set back of 20 years rather than to a specific date,
the actual render time gets preserved and can be checked in
e.g. mod_tiles tile status
Add a warning to the status page that neither create time nor access time might be accurate.
Create time is manipulated by the tile expiry process, and atime is often disabled on the filesytem via noatime
for performance reasons.
Adds a munin graph to monitor the average time it takes to retrieve a served tile
from disk. This can be useful to check if the underlying disk system is fast enough
to handle the load of serving tiles. It does not include time required for pontential
rendering on the fly, nor the time to deliver the tile over the network.
If there are multiple proxies on the path, then X-Forwarded-For is not a single address, but a list
of addresses.
One can now choose whether one wants to use the first entry in the chain, which should be the client address,
or the last entry in the chain.
The first entry of the chain can't necessarily be trusted, as the client can create its own X-Forwarded-For http header
and thus manipulate the IP that the tileserver would use for throttling.
Using the last entry is particularly useful if one has a reverse proxy in front of the tileserver. In that case the
proxy is under ones own control and can be trusted.
If a tileserver is behind a (reverse) proxy server it only sees the IP of the proxy.
So all requests from the proxy get put in the same bucket for tile throttling. Instead, now
use the X-Forwarded-For http header to determine the IP of the originating client.
XMLHttpRequest as used for example in KothicJS to display json vector tiles can by default
request tiles from the same origin. So for example if the KothicJS page is loaded from
http://toolserver.org/ but mod_tile serving the json tiles are hosted on http://a.www.toolserver.org
the browser can not access the tiles with out cross-origin resource sharing.
This patch adds support for cors to allow this kind of usage.
Tile layers configured via AddTileMimeConfig in the apache site config with a mimetype of JS
automatically have the CORS policy set to Access-Control-Allow-Origin: *
It is also possible to explicitly set the cors policy for all types of layers if they are configured
via mod_tile.conf/renderd.conf. Here the CORS parameter in the tile layer section allows to
specify it.
In some cases (e.g. geojson vector tiles) storing the content of metatiles in compressed form can be benefitial.
In this case, make sure that the Content-Encoding header is set to gzip, so that clients can correctly
decode the data.
Wether data in a metatile is stored in compressed form or not is defined by the first 4 magic bytes, which are either
META for uncompressed data or METZ for compressed date.
Currently mod_tile does not yet support decompressing the data it self. So if a client doesn't send the
Accept-Encoding: gzip header, they will get jumbled (still compressed) content back.
The minimum and maximum zoom levels can now be specified on a per layer
basis with the parameters "MINZOOM" and "MAXZOOM" in renderd.conf
Raise the maximum supported zoom level to 30
This only effects mod_tile for the moment. Renderd does not yet support configurable zoom levels, although
raising the compile time constant MAX_ZOOM should work.