diff --git a/MultiServer.py b/MultiServer.py index 21aee68a..258b73c6 100644 --- a/MultiServer.py +++ b/MultiServer.py @@ -761,7 +761,7 @@ async def on_client_connected(ctx: Context, client: Client): 'datapackage_versions': {game: game_data["version"] for game, game_data in ctx.gamespackage.items() if game in games}, 'datapackage_checksums': {game: game_data["checksum"] for game, game_data - in ctx.gamespackage.items() if game in games}, + in ctx.gamespackage.items() if game in games and "checksum" in game_data}, 'seed_name': ctx.seed_name, 'time': time.time(), }]) diff --git a/WebHostLib/customserver.py b/WebHostLib/customserver.py index fa392492..b34e1961 100644 --- a/WebHostLib/customserver.py +++ b/WebHostLib/customserver.py @@ -94,7 +94,7 @@ class WebHostContext(Context): multidata = self.decompress(room.seed.multidata) game_data_packages = {} - for game in list(multidata["datapackage"]): + for game in list(multidata.get("datapackage", {})): game_data = multidata["datapackage"][game] if "checksum" in game_data: if self.gamespackage.get(game, {}).get("checksum") == game_data["checksum"]: @@ -102,8 +102,9 @@ class WebHostContext(Context): # games package could be dropped from static data once all rooms embed data package del multidata["datapackage"][game] else: - data = Utils.restricted_loads(GameDataPackage.get(checksum=game_data["checksum"]).data) - game_data_packages[game] = data + row = GameDataPackage.get(checksum=game_data["checksum"]) + if row: # None if rolled on >= 0.3.9 but uploaded to <= 0.3.8. multidata should be complete + game_data_packages[game] = Utils.restricted_loads(row.data) return self._load(multidata, game_data_packages, True)