From 4f9190418c370cc97bd1282e4969b5bcc68f71af Mon Sep 17 00:00:00 2001 From: John Date: Sun, 31 May 2015 11:56:15 +0300 Subject: [PATCH] FriendManagerAI cleanup --- otp/friends/FriendManagerAI.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/otp/friends/FriendManagerAI.py b/otp/friends/FriendManagerAI.py index f51c1501..396897db 100755 --- a/otp/friends/FriendManagerAI.py +++ b/otp/friends/FriendManagerAI.py @@ -13,58 +13,74 @@ class FriendManagerAI(DistributedObjectAI): def friendQuery(self, requested): avId = self.air.getAvatarIdFromSender() - if not requested in self.air.doId2do: + av = self.air.doId2do.get(avId) + + if not av: self.air.writeServerEvent('suspicious', avId, 'Player tried to friend a player that does not exist!') return + context = self.currentContext self.requests[context] = [ [ avId, requested ], 'friendQuery'] self.currentContext += 1 - self.sendUpdateToAvatarId(requested, 'inviteeFriendQuery', [avId, self.air.doId2do[avId].getName(), self.air.doId2do[avId].getDNAString(), context]) + self.sendUpdateToAvatarId(requested, 'inviteeFriendQuery', [avId, av.getName(), av.getDNAString(), context]) def cancelFriendQuery(self, context): avId = self.air.getAvatarIdFromSender() + if not context in self.requests: self.air.writeServerEvent('suspicious', avId, 'Player tried to cancel a request that doesn\'t exist!') return + if avId != self.requests[context][0][0]: self.air.writeServerEvent('suspicious', avId, 'Player tried to cancel someone elses request!') return + self.requests[context][1] = 'cancelled' self.sendUpdateToAvatarId(self.requests[context][0][1], 'inviteeCancelFriendQuery', [context]) def inviteeFriendConsidering(self, yesNo, context): avId = self.air.getAvatarIdFromSender() + if not context in self.requests: self.air.writeServerEvent('suspicious', avId, 'Player tried to consider a friend request that doesn\'t exist!') return + if avId != self.requests[context][0][1]: self.air.writeServerEvent('suspicious', avId, 'Player tried to consider for someone else!') return + if self.requests[context][1] != 'friendQuery': self.air.writeServerEvent('suspicious', avId, 'Player tried to reconsider friend request!') return + if yesNo != 1: self.sendUpdateToAvatarId(self.requests[context][0][0], 'friendConsidering', [yesNo, context]) del self.requests[context] return + self.requests[context][1] = 'friendConsidering' self.sendUpdateToAvatarId(self.requests[context][0][0], 'friendConsidering', [yesNo, context]) def inviteeFriendResponse(self, response, context): avId = self.air.getAvatarIdFromSender() + if not context in self.requests: self.air.writeServerEvent('suspicious', avId, 'Player tried to respond to a friend request that doesn\'t exist!') return + if avId != self.requests[context][0][1]: self.air.writeServerEvent('suspicious', avId, 'Player tried to respond to someone else\'s request!') return + if self.requests[context][1] == 'cancelled': self.air.writeServerEvent('suspicious', avId, 'Player tried to respond to non-active friend request!') return - self.sendUpdateToAvatarId(self.requests[context][0][0], 'friendResponse', [response, context]) - if response == 1: + self.sendUpdateToAvatarId(self.requests[context][0][0], 'friendResponse', [response, context]) + + if response == 1: requested = self.requests[context][0][1] + if requested in self.air.doId2do: requested = self.air.doId2do[requested] else: @@ -72,6 +88,7 @@ class FriendManagerAI(DistributedObjectAI): return requester = self.requests[context][0][0] + if requester in self.air.doId2do: requester = self.air.doId2do[requester] else: @@ -83,22 +100,25 @@ class FriendManagerAI(DistributedObjectAI): requested.d_setFriendsList(requested.getFriendsList()) requester.d_setFriendsList(requester.getFriendsList()) - del self.requests[context] + del self.requests[context] def inviteeAcknowledgeCancel(self, context): avId = self.air.getAvatarIdFromSender() + if not context in self.requests: self.air.writeServerEvent('suspicious', avId, 'Player tried to acknowledge the cancel of a friend request that doesn\'t exist!') return + if avId != self.requests[context][0][1]: self.air.writeServerEvent('suspicious', avId, 'Player tried to acknowledge someone else\'s cancel!') return + if self.requests[context][1] != 'cancelled': self.air.writeServerEvent('suspicious', avId, 'Player tried to cancel non-cancelled request!') return - del self.requests[context] + del self.requests[context] def friendConsidering(self, todo0, todo1): pass