From e438cde9d2fe9938e55fb5310f22d840c29b35ac Mon Sep 17 00:00:00 2001 From: Maurizio Porrato Date: Sun, 20 Feb 2011 12:14:09 +0100 Subject: [PATCH] Server: More overmodulation fixes --- frn/protocol/server.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/frn/protocol/server.py b/frn/protocol/server.py index 391d93e..a3ab4f5 100644 --- a/frn/protocol/server.py +++ b/frn/protocol/server.py @@ -114,8 +114,8 @@ class FRNServer(BufferingLineReceiver, TimeoutMixin): log.msg("Logging out client %s" % self.user) self.factory.manager.clientLogout(self.factory.serverAuth, self.user) self.factory.tracker.logout(self) - if self.factory.talking == self: - self.factory.talking = None + if self.factory.talking.get(self.user.NT) == self: + del self.factory.talking[self.user.NT] self.transport.loseConnection() def decodeCT(self, body): @@ -160,8 +160,8 @@ class FRNServer(BufferingLineReceiver, TimeoutMixin): def decodeRX(self, body): log.msg("RX%d" % int(body)) self.startPinging() - if self.factory.talking == self: - self.factory.talking = None + if self.factory.talking.get(self.user.NT) == self: + del self.factory.talking[self.user.NT] for c in self.factory.tracker.getClientList(self.user.NT): cp = self.factory.tracker.getClientProtocol(c.ID).startPinging() @@ -186,8 +186,8 @@ class FRNServer(BufferingLineReceiver, TimeoutMixin): def decodeTX(self, body): if body == '0': if not self.factory.tracker.isMute(self.user.ID): - if not self.factory.talking: - self.factory.talking = self + if not self.factory.talking.get(self.user.NT): + self.factory.talking[self.user.NT] = self ih,il = divmod(self.getIndex(), 256) self.transport.write(chr(1)+chr(ih)+chr(il)) elif body == '1': @@ -267,7 +267,7 @@ class FRNServer(BufferingLineReceiver, TimeoutMixin): def audioFrameReceived(self, frame): #log.msg("audioFrameReceived") - if self.factory.tracker.canTalk(self.user.ID) and self.factory.talking == self: + if self.factory.tracker.canTalk(self.user.ID) and self.factory.talking.get(self.user.NT) == self: clientIdx = self.getIndex() for c in self.factory.tracker.getClientList(self.user.NT): if int(c.S) < 2 and c.ID != self.user.ID: @@ -350,7 +350,7 @@ class FRNServerFactory(ServerFactory): def __init__(self, trackerfile, manager, serverAuth): self.manager = manager self.serverAuth = serverAuth - self.talking = None + self.talking = {} self.officialNets = [] self.tracker = ClientTracker( trackerfile,