FDL Bug Part Two
Last one god closed, this is part two :
Last time :
This bug is very strange. It appeared a few days ago when people started coming to my server in larger numbers. Here's how to perform it and how it behaves:
The player connects to the server, does not have the map that is currently on the server, and then the server uses FDL (FastDL) for fast download. What happens is that, for example, the next map is downloaded very slowly, almost up to 3 minutes, while all others are downloaded quickly. And then after that, the next map is downloaded quickly for him, for example, and slowly for some others. This can be fixed by restarting Cs, the client needs to enter and exit. After this, I contacted the hosting where I received a message from the support stating that FDL tried to download a huge number of files but could not find them. All the listed files were really not there, but what is even more strange is that all the files were listed through the paths in the .res files for some folders. When I checked, all the listed models that FDL couldn't find were really not there, but after 2 minutes the player would definitely download the map with all those models and sounds.
The bug is extremely random, the closest I've found to this is Error 404 in FastDL, for example this particular one: https://forums.alliedmods.net/showthread.php?t=184941
Then what is the next problem? I have been playing these maps for a long time, and for example some sounds are written in the res files on certain maps that are used as rain, and I know they should be there because otherwise I hear them, but now because of this I have to delete them from these .res files and they are no longer there. Is there a solution?
Answer from @kisak-valve :
Hello @HarmonicWay, I'm not seeing an issue here.
FastDL points to an external http web server which can provide maps and related files. If that fails, goldsrc games are supposed to fallback to the dedicated server directly serving out those files while managing the other player's connections. Your own explanation is that the external web server is missing some content you want, and that should be added there instead of trying to gut assets from a .res file.
Update :
A player joins the server and tries to connect, and in his console he always gets the following message:
BUILD 4002 SERVER (0 CRC) Server # 3 Couldn't find map maps/deathrun_aether_b1.bsp, server will download the map Commencing connection retry to 151.247.205.250:27015 Connecting to 151.247.205.250:27015... Connection accepted by 151.247.205.250:27015
- Privileges set
Here, as you can see, the client receives a message that the FDL did not find the map on that path, but the server will download it. This would mean that the client is not downloading the map through FDL, but through the server, which is a significantly slower process. And now we come to the interesting part:
"http://game1.fra.kgb-hosting.com/d36df280-4c63-46c0-bc0a-628c66678018/cstrike/maps/deathrun_aether_b1.bsp" "https://clarion.nx.tc/cstrike/maps/deathrun_aether_b1.bsp"
Both URLs above are fully functional, the maps are uploaded there and you can install the map in 2 seconds without any problem. However, on the server it is not like that, the player waits up to 2 or even 3 minutes for this map.
If the client experiences this, they can restart the game — they simply exit and join again, and then the map downloads in a few seconds without any issue.
This bug does not happen for every map, and it is not the same for every player, it is completely random and unpredictable.
I personally checked every .res file and manually fixed all the resources that were required inside them, so this is no longer an option as the source of the issue.
This is my current server.cfg, but keep in mind that I did not use only this version:
Version 1: // Game server hostname hostname "CLARION - DeathRun [VIP + XMAS]" sv_password ""
// Rcon server password rcon_password "hidden"
// Rcon password security sv_rcon_banpenalty 1 sv_rcon_maxfailures 1 sv_rcon_minfailures 1 sv_rcon_minfailuretime 30
// server cvars sv_airaccelerate 100 sv_stepsize 18 sv_voicecodec voice_speex sv_voicequality 2 sv_voiceenable 0 mp_footsteps 1 mp_autokick 0 mp_flashlight 1 mp_tkpunish 0 mp_forcecamera 0 mp_forcechasecam 0 sv_pausable 0 sv_cheats 0 sv_aim 0 sv_maxspeed 320 mp_hostagepenalty 0 mp_allowspectators 1 mp_chattime 3 sv_gravity 800 sv_proxies 0 mp_autoteambalance 0 mp_limitteams 0 mp_friendlyfire 0 csstats_maxsize 3500 mp_round_restart_delay 3 decalfrequency 20 sv_clienttrace 1 sv_enableoldqueries 1 hd_sh_punish "kick [userid] '[reason]'" hd_sm_punish "kick [userid] '[reason]'" hd_admin_notify 3 pre_x 0.49 pre_y 0.54
// round specific cvars mp_freezetime 0 mp_roundtime 2 mp_startmoney 800 mp_c4timer 35 mp_fraglimit 0 mp_timelimit 0 mp_maxrounds 10 mp_winlimit 0 mp_buytime 0.25
// bandwidth rates sv_unlag 1 sv_maxunlag 0.1 sv_unlagsamples 1 sv_unlagpush 0 sv_maxrate 0 sv_minrate 0 sv_maxupdaterate 30 sv_minupdaterate 10 fps_max 600 sv_uploadmax 0.5
// server logging log off sv_logbans 0 sv_logecho 0 sv_logfile 0 sv_log_onefile 0 mp_logmessages 0 mp_logdetail 0
// fdl sv_downloadurl "http://game1.fra.kgb-hosting.com/d36df280-4c63-46c0-bc0a-628c66678018/cstrike/" sv_max_queries_sec 3 sv_max_queries_global 30 sv_max_queries_window 60
// rehlds sv_enable_rate_limit 1 sv_max_connects_sec 3 sv_max_connects_window 10 sv_connect_rate_limit 3 sv_a2s_info_rate_limit 25 sv_rehlds_attacks 1 sv_rehlds_stringcmdrate_max_avg 250 sv_rehlds_stringcmdrate_avg_punish -1 sv_rehlds_stringcmdrate_max_burst 500 sv_rehlds_stringcmdrate_burst_punish -1 sv_rehlds_movecmdrate_avg_punish 5 sv_rehlds_movecmdrate_burst_punish 5 sv_rehlds_movecmdrate_max_avg 1800 sv_rehlds_movecmdrate_max_burst 5500 syserror_logfile sys_error.log sv_auto_precache_sounds_in_models 0 sv_delayed_spray_upload 0 sv_echo_unknown_cmd 0 sv_rcon_condebug 1 sys_ticrate "1000" sv_maxupdaterate 102 sv_minupdaterate 102 sv_force_ent_intersection 0 sv_rehlds_force_dlmax 0 sv_rehlds_hull_centering 0 sv_rehlds_send_mapcycle 0 sv_rehlds_userinfo_transmitted_fields "" sv_rehlds_attachedentities_playeranimationspeed_fix 1 sv_rehlds_maxclients_from_single_ip 1 sv_allowdownload "0" sv_allowupload "0"
Version 2:
I only changed the URL to new FDL from other hosting :
sv_downloadurl "https://clarion.nx.tc/cstrike/"
Version 3:
Here I tested different CVAR combinations, allowdownload on 1, allowupload on 0, then I tried both on 1.
sv_allowdownload "1" sv_allowupload "1"
Websites where I found some advice and tried those methods:
https://forums.alliedmods.net/showthread.php?t=308631
Mention : None of this version worked 100%, always my players had this bug. We have around 111 maps active. All files are added to FDL folders in good path.
sv_downloadurl should point to an HTTP only server, as the engine doesn't support HTTPS.
Also, sv_allowdownload and sv_allowupload refer to downloading from and uploading to the game server respectively, so they don't affect the external HTTP server.
Somebody on Valve mailing lists (Mecha Weasel) had some issue when FQDN was used in FDL cvar.
Try using FDL server's IP instead.
http://151.247.205.250/d36df280-4c63-46c0-bc0a-628c66678018/cstrike/maps/deathrun_aether_b1.bsp
@HarmonicWay Your server is running ReHLDS, so this issue should be posted over on the ReHLDS repo instead. Also, any changes from Valve won't even affect your server because you're running on the steam_legacy build. This issue is already known and explained in SamVanheer's comment.
Not to mention that your server is running ReUnuion, which allows protocol 47 and 48 non-Steam clients to connect, so don't expect any official support.
@kisak-valve You may want to edit and close this issue, as it appears to be a duplicate of #2238 and #3959. The latter was submitted by the same author and has publicly exposed their rcon password. Something doesn't add up here.