Server: Fix overmodulation bug.
This commit is contained in:
parent
4dea7c4592
commit
f09753040c
|
@ -114,6 +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
|
||||
self.transport.loseConnection()
|
||||
|
||||
def decodeCT(self, body):
|
||||
|
@ -158,6 +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
|
||||
for c in self.factory.tracker.getClientList(self.user.NT):
|
||||
cp = self.factory.tracker.getClientProtocol(c.ID).startPinging()
|
||||
|
||||
|
@ -182,8 +186,10 @@ class FRNServer(BufferingLineReceiver, TimeoutMixin):
|
|||
def decodeTX(self, body):
|
||||
if body == '0':
|
||||
if not self.factory.tracker.isMute(self.user.ID):
|
||||
ih,il = divmod(self.getIndex(), 256)
|
||||
self.transport.write(chr(1)+chr(ih)+chr(il))
|
||||
if not self.factory.talking:
|
||||
self.factory.talking = self
|
||||
ih,il = divmod(self.getIndex(), 256)
|
||||
self.transport.write(chr(1)+chr(ih)+chr(il))
|
||||
elif body == '1':
|
||||
self.stopPinging()
|
||||
self.expectRawData(325)
|
||||
|
@ -261,7 +267,7 @@ class FRNServer(BufferingLineReceiver, TimeoutMixin):
|
|||
|
||||
def audioFrameReceived(self, frame):
|
||||
#log.msg("audioFrameReceived")
|
||||
if self.factory.tracker.canTalk(self.user.ID):
|
||||
if self.factory.tracker.canTalk(self.user.ID) and self.factory.talking == 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:
|
||||
|
|
|
@ -29,7 +29,7 @@ if __name__ == '__main__':
|
|||
def databaseManagerFactory():
|
||||
log.msg("Building DatabaseManager")
|
||||
return DatabaseManager(
|
||||
ConnectionPool("sqlite3", "/tmp/frnmanager.sqlite3", cp_noisy=True))
|
||||
ConnectionPool("sqlite3", "/tmp/frnmanager.sqlite3", check_same_thread=False, cp_noisy=True))
|
||||
|
||||
reactor.listenTCP(10025, FRNManagerServerFactory(
|
||||
databaseManagerFactory
|
||||
|
|
|
@ -63,7 +63,7 @@ class FRNCrosslinkClient(FRNClient):
|
|||
role = factory.connection.serverdata.get('AL', None)
|
||||
if role in ['OK', 'ADMIN', 'OWNER']:
|
||||
for c in factory.connection.clients:
|
||||
ss = cStatus.get(c['s'], '?')
|
||||
ss = cStatus.get(c['S'], '?')
|
||||
if c['M'] != '0':
|
||||
ss = ss.lower()
|
||||
cl.append(" %s%s %s " % (
|
||||
|
|
Loading…
Reference in New Issue