compressed transfer of cfg files

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@2472 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
ac_stef
2008-09-01 11:51:05 +00:00
parent 965be81eda
commit 63dc4c5f64
6 changed files with 97 additions and 44 deletions
+9 -8
View File
@@ -445,20 +445,21 @@ void sendmap(char *mapname)
else mapname = getclientmap();
if(securemapcheck(mapname)) return;
int mapsize, cfgsize;
int mapsize, cfgsize, cfgsizegz;
uchar *mapdata = readmap(path(mapname), &mapsize);
uchar *cfgdata = readmcfg(path(mapname), &cfgsize);
uchar *cfgdata = readmcfggz(path(mapname), &cfgsize, &cfgsizegz);
if(!mapdata) return;
if(!cfgdata) cfgsize = 0;
if(!cfgdata) { cfgsize = 0; cfgsizegz = 0; }
ENetPacket *packet = enet_packet_create(NULL, MAXTRANS + mapsize + cfgsize, ENET_PACKET_FLAG_RELIABLE);
ENetPacket *packet = enet_packet_create(NULL, MAXTRANS + mapsize + cfgsizegz, ENET_PACKET_FLAG_RELIABLE);
ucharbuf p(packet->data, packet->dataLength);
putint(p, SV_SENDMAP);
sendstring(mapname, p);
putint(p, mapsize);
putint(p, cfgsize);
if(MAXMAPSENDSIZE - p.length() < mapsize + cfgsize)
putint(p, cfgsizegz);
if(MAXMAPSENDSIZE - p.length() < mapsize + cfgsizegz || cfgsize > MAXCFGFILESIZE)
{
conoutf("map %s is too large to send", mapname);
delete[] mapdata;
@@ -468,16 +469,16 @@ void sendmap(char *mapname)
}
p.put(mapdata, mapsize);
delete[] mapdata;
if(cfgsize)
if(cfgsizegz)
{
p.put(cfgdata, cfgsize);
p.put(cfgdata, cfgsizegz);
delete[] cfgdata;
}
enet_packet_resize(packet, p.length());
sendpackettoserv(2, packet);
conoutf("sending map %s to server...", mapname);
s_sprintfd(msg)("[map %s uploaded to server, \"getmap\" to receive it]", mapname);
s_sprintfd(msg)("[map %s uploaded to server, \"/getmap\" to receive it]", mapname);
toserver(msg);
}