[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdegames/kajongg/src
From: Wolfgang Rohdewald <wolfgang () rohdewald ! de>
Date: 2012-03-09 10:46:50
Message-ID: 20120309104650.B685DAC898 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1284573 by wrohdewald:
client and server now make sure their versions are compatible
M +2 -0 humanclient.py
M +19 -1 server.py
M +11 -2 tables.py
--- trunk/KDE/kdegames/kajongg/src/humanclient.py #1284572:1284573
@@ -1101,6 +1101,8 @@
def callServer(self, *args):
"""if we are online, call server"""
if self.perspective:
+ if args[0] is None:
+ args = args[1:]
try:
if Debug.traffic:
if self.game:
--- trunk/KDE/kdegames/kajongg/src/server.py #1284572:1284573
@@ -947,11 +947,29 @@
"""override pb.Avatar.detached"""
self.server.logout(self)
self.mind = None
- def perspective_setClientProperties(self, dbPath, voiceId, maxGameId):
+ def perspective_setClientProperties(self, dbPath, voiceId, maxGameId, clientVersion=None):
"""perspective_* methods are to be called remotely"""
self.dbPath = dbPath
self.voiceId = voiceId
self.maxGameId = maxGameId
+ serverVersion = InternalParameters.version
+ if clientVersion != serverVersion:
+ # we assume that versions x.y.* are compatible
+ if clientVersion is None:
+ # client passed no version info
+ return fail(srvError(pb.Error,
+ m18nE('Your client has a version older than 4.9.0 but you need %1 for this server'),
+ serverVersion))
+ else:
+ commonDigits = len([x for x in zip(
+ clientVersion.split('.'),
+ serverVersion.split('.'))
+ if x[0] == x[1]])
+ if commonDigits < 2:
+ return fail(srvError(pb.Error,
+ m18nE('Your client has version %1 but you need %2 for this server'),
+ clientVersion or '<4.9.0',
+ '.'.join(serverVersion.split('.')[:2]) + '.*'))
def perspective_sendTables(self):
"""perspective_* methods are to be called remotely"""
return self.server.sendTables(self)
--- trunk/KDE/kdegames/kajongg/src/tables.py #1284572:1284573
@@ -254,8 +254,10 @@
maxGameId = int(maxGameId) if maxGameId else 0
self.client.callServer('setClientProperties',
str(Query.dbhandle.databaseName()),
- voiceId, maxGameId).addErrback(self.tableError)
- self.client.callServer('sendTables').addCallback(self.gotTables)
+ voiceId, maxGameId, InternalParameters.version). \
+ addErrback(self.versionError). \
+ addCallback(self.client.callServer, 'sendTables'). \
+ addCallback(self.gotTables)
else:
self.hide()
@@ -370,6 +372,13 @@
self.client.callServer('startGame', table.tableid).addErrback(self.tableError)
@staticmethod
+ def versionError(err):
+ """log the twisted error"""
+ logWarning(err.getErrorMessage())
+ InternalParameters.field.abortGame()
+ return err
+
+ @staticmethod
def tableError(err):
"""log the twisted error"""
logWarning(err.getErrorMessage())
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic