MultiServer: Split InvalidSlot out into InvalidGame and document all error codes.
This commit is contained in:
parent
a82bf1bb32
commit
b82e3f2a8a
|
@ -195,6 +195,9 @@ class CommonContext():
|
||||||
def event_invalid_slot(self):
|
def event_invalid_slot(self):
|
||||||
raise Exception('Invalid Slot; please verify that you have connected to the correct world.')
|
raise Exception('Invalid Slot; please verify that you have connected to the correct world.')
|
||||||
|
|
||||||
|
def event_invalid_game(self):
|
||||||
|
raise Exception('Invalid Game; please verify that you connected with the right game to the correct world.')
|
||||||
|
|
||||||
async def server_auth(self, password_requested):
|
async def server_auth(self, password_requested):
|
||||||
if password_requested and not self.password:
|
if password_requested and not self.password:
|
||||||
logger.info('Enter the password required to join this game:')
|
logger.info('Enter the password required to join this game:')
|
||||||
|
@ -345,7 +348,8 @@ async def process_server_cmd(ctx: CommonContext, args: dict):
|
||||||
errors = args["errors"]
|
errors = args["errors"]
|
||||||
if 'InvalidSlot' in errors:
|
if 'InvalidSlot' in errors:
|
||||||
ctx.event_invalid_slot()
|
ctx.event_invalid_slot()
|
||||||
|
elif 'InvalidGame' in errors:
|
||||||
|
ctx.event_invalid_game()
|
||||||
elif 'SlotAlreadyTaken' in errors:
|
elif 'SlotAlreadyTaken' in errors:
|
||||||
raise Exception('Player slot already in use for that team')
|
raise Exception('Player slot already in use for that team')
|
||||||
elif 'IncompatibleVersion' in errors:
|
elif 'IncompatibleVersion' in errors:
|
||||||
|
|
|
@ -1096,8 +1096,8 @@ async def process_client_cmd(ctx: Context, client: Client, args: dict):
|
||||||
else:
|
else:
|
||||||
team, slot = ctx.connect_names[args['name']]
|
team, slot = ctx.connect_names[args['name']]
|
||||||
game = ctx.games[slot]
|
game = ctx.games[slot]
|
||||||
if args['game'] != game:
|
if "IgnoreGame" in args["tags"] and args['game'] != game:
|
||||||
errors.add('InvalidSlot')
|
errors.add('InvalidGame')
|
||||||
# this can only ever be 0 or 1 elements
|
# this can only ever be 0 or 1 elements
|
||||||
clients = [c for c in ctx.endpoints if c.auth and c.slot == slot and c.team == team]
|
clients = [c for c in ctx.endpoints if c.auth and c.slot == slot and c.team == team]
|
||||||
if clients:
|
if clients:
|
||||||
|
|
|
@ -83,7 +83,13 @@ Sent to clients when the server refuses connection. This is sent during the init
|
||||||
#### Arguments
|
#### Arguments
|
||||||
| Name | Type | Notes |
|
| Name | Type | Notes |
|
||||||
| ---- | ---- | ----- |
|
| ---- | ---- | ----- |
|
||||||
| errors | list\[str\] | Optional. When provided, should contain any one of: `InvalidSlot`, `SlotAlreadyTaken`, `IncompatibleVersion`, or `InvalidPassword`. |
|
| errors | list\[str\] | Optional. When provided, should contain any one of: `InvalidSlot`, `InvalidGame`, `SlotAlreadyTaken`, `IncompatibleVersion`, or `InvalidPassword`. |
|
||||||
|
|
||||||
|
InvalidSlot indicates that the sent 'name' field did not match any auth entry on the server.
|
||||||
|
InvalidGame indicates that a correctly named slot was found, but the game for it mismatched.
|
||||||
|
SlotAlreadyTaken indicates a connection with a different uuid is already established.
|
||||||
|
IncompatibleVersion indicates a version mismatch.
|
||||||
|
InvalidPassword indicates the wrong, or no password when it was required, was sent.
|
||||||
|
|
||||||
### Connected
|
### Connected
|
||||||
Sent to clients when the connection handshake is successfully completed.
|
Sent to clients when the connection handshake is successfully completed.
|
||||||
|
|
Loading…
Reference in New Issue