xna-cncnet-client
xna-cncnet-client copied to clipboard
Map sharing sometimes fails on uploading
As per @Starkku, the map transfer fail message crops up in 4 distinct situations:
- The map that is missing but host has selected is official map (information parsed from maps INI).
- Download failed and it is a map that has already been uploaded once so it won't re-request the upload.
- Download was completed but the client can't load the map for whatever reason.
- Actual upload process failed.
The actual reported error happens for some, if not most, mods on CnCNet and even sometimes in YR (but mostly it works fine there), effectively resulting in custom maps mostly not playable with random players.
Example log from @Starkku:
MapSharer: Uploading map Maps\Custom\test failed! Returned message: The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF
It will always fail with some games / mods because the database service itself only supports specific games / mods, as can be discerned from the database search page (https://mapdb.cncnet.org/search) and the upload page when queried without a properly formed request (http://mapdb.cncnet.org/upload). Properly formed request includes a game ID (LocalGame from Resources\ClientDefinitions.ini in client configuration), if this is not recognized the upload is seemingly rejected.
Either the database service should be expanded to cover either 1. the remaining 'official' CnCNet-supported games / mods (Mental Omega, Twisted Insurrection and YR Red-Resurrection in this case) or 2. any games / mods, although latter would probably create more problems to solve.
Regardless of which of the above options was chosen, if either, I think there should be consideration given for adding an option to turn the feature off entirely in client configuration, especially if the database service continues to accept only specific games / mods, in which case if client's local game ID matches those games, the map sharing could continue to stay enabled by default, but disabled otherwise.