From e28ffdfb7d5f21d887e3c043947ce24be23f5dd8 Mon Sep 17 00:00:00 2001 From: Et0h Date: Fri, 8 Jul 2016 17:43:31 +0100 Subject: [PATCH] Server shouldn't send chat messages to pre-chat client (as it causes them to quit) --- syncplay/protocols.py | 8 ++++++++ syncplay/server.py | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/syncplay/protocols.py b/syncplay/protocols.py index e70df7c..05425b8 100644 --- a/syncplay/protocols.py +++ b/syncplay/protocols.py @@ -160,8 +160,10 @@ class SyncClientProtocol(JSONCommandProtocol): def sendFileSetting(self, file_): self.sendSet({"file": file_}) self.sendList() + def sendChatMessage(self,chatMessage): self.sendMessage({"Chat": chatMessage}) + def handleList(self, userList): self._client.userlist.clearList() for room in userList.iteritems(): @@ -284,6 +286,7 @@ class SyncClientProtocol(JSONCommandProtocol): class SyncServerProtocol(JSONCommandProtocol): def __init__(self, factory): self._factory = factory + self._version = None self._logged = False self.clientIgnoringOnTheFly = 0 self.serverIgnoringOnTheFly = 0 @@ -320,6 +323,9 @@ class SyncServerProtocol(JSONCommandProtocol): def isLogged(self): return self._logged + def meetsMinVersion(self, version): + return self._version >= version + def _extractHelloArguments(self, hello): roomName = None username = hello["username"] if hello.has_key("username") else None @@ -353,7 +359,9 @@ class SyncServerProtocol(JSONCommandProtocol): return self._factory.addWatcher(self, username, roomName) self._logged = True + self._version = version self.sendHello(version) + def handleChat(self,chatMessage): if not self._factory.disableChat: self._factory.sendChat(self._watcher,chatMessage) diff --git a/syncplay/server.py b/syncplay/server.py index e3df8e3..f5ecc5e 100644 --- a/syncplay/server.py +++ b/syncplay/server.py @@ -442,7 +442,8 @@ class Watcher(object): self._connector.sendControlledRoomAuthStatus(success, username, room) def sendChatMessage(self,message): - self._connector.sendMessage({"Chat" : message}) + if self._connector.meetsMinVersion(constants.CHAT_MIN_VERSION): + self._connector.sendMessage({"Chat" : message}) def sendSetReady(self, username, isReady, manuallyInitiated=True): self._connector.sendSetReady(username, isReady, manuallyInitiated)