I've suggested a better download system in some of my previous post , in particular about Q4 autodownload which
prompts for files to be downloaded by client side ( a description here :
http://openarena.ws/board/index.php?topic=3291.msg27298#msg27298 ) and about dfengine download system which has the explicit /download command and some controls over the file to be downloaded eg a control based on MIME/type to allow only pk3 zip files format and a control over the name of the file (
http://openarena.ws/board/index.php?topic=3363.msg27738#msg27738 and also on RN forum :
http://rainbow.furver.se/index.php?name=Forums&file=viewtopic&t=1558 )
EDIT : and the system has also an exception that treats the case of name collision :
[...] Name collision with an existing pk3 file will result in a failure and
be left to the user to sort out.
They've improved the system in their latest version.
HTTP DOWNLOAD
DFEngine has built-in support for HTTP downloads based on libcurl. It adds a
/download command that allows requesting map packs from a web server. Such a
feature has been made possible thanks to the efforts involved in the
http://q3a.ath.cx/ online repository which covers an extensive number of maps.
An alternative repository can be set up with the dl_source cvar.
download [mapname] (&)
download command - appending & to the command makes the download run in
the background
cl_mapAutodownload [0,1]
whether to download missing maps automatically when the client connects to
a server
curl_version
version string of the curl library built into the engine
dl_showmotd [0,1]
whether to show the download server motd in the console
dl_showprogress [0,2]
whether to show the download progress in the console (1 writes new lines
continuously, 2 writes in place)
dl_source [URI]
URI from which to request maps - token %m inside the string is replaced
with the requested mapname before issuing the HTTP request
dl_usebaseq3 [0,1]
whether to issue the downloaded packs in baseq3 (1) or in the current
gamedir (0)
dl_verbose [0,2]
verbose modes for debugging purposes