Update YSFReflector

bugfix and optimization
This commit is contained in:
Antonio Matraia 2021-06-08 11:21:02 +02:00
parent e130197950
commit 52b9dc4d81

View File

@ -157,10 +157,14 @@ def TimeoutNodi(cl):
def TimeoutTX(t, t_lock, r_lock, lista_lh, lista_lhd, t_out, t_react): def TimeoutTX(t, t_lock, r_lock, lista_lh, lista_lhd, t_out, t_react):
global BLK_TMP global BLK_TMP
global SCHED global SCHED
global lock_tx
while True: while True:
if (t[1] < 5): if (t[1] < 5):
lock_tx.acquire()
t[1] += 0.1 t[1] += 0.1
if ((t[1] > 1.0) and (t[0] != 0)): lock_tx.release()
if ((t[1] > 1.5) and (t[0] != 0)):
lock_tx.acquire()
t[0] = 0 t[0] = 0
printlog(1, 'Network watchdog has expired') printlog(1, 'Network watchdog has expired')
inserisci_lista(lista_lh, [check_string(t[2]), check_string(t[3]), check_string(t[4]), t[5], datetime.utcfromtimestamp(t[6]).strftime("%d-%m-%Y %H-%M-%S"), round(time.time() - t[6]) ], 20) inserisci_lista(lista_lh, [check_string(t[2]), check_string(t[3]), check_string(t[4]), t[5], datetime.utcfromtimestamp(t[6]).strftime("%d-%m-%Y %H-%M-%S"), round(time.time() - t[6]) ], 20)
@ -171,11 +175,12 @@ def TimeoutTX(t, t_lock, r_lock, lista_lh, lista_lhd, t_out, t_react):
t[4] = '' t[4] = ''
t[5] = 0 t[5] = 0
t[6] = 0 t[6] = 0
lock_tx.release()
pop_list = [] pop_list = []
for d in t_lock: for d in t_lock:
if (t_lock[d] < 5): if (t_lock[d] < 5):
t_lock[d] += 0.1 t_lock[d] += 0.1
if ((t_lock[d] > 1.5) and (t_lock[d] != 0)): if ((t_lock[d] > 2.0) and (t_lock[d] != 0)):
pop_list.append(d) pop_list.append(d)
r_lock.remove(d) r_lock.remove(d)
@ -541,6 +546,8 @@ def RunServer(config):
global IP_LK global IP_LK
global BLK_TMP global BLK_TMP
global debug global debug
global lock_tx
host = '0.0.0.0' host = '0.0.0.0'
port = config[5] port = config[5]
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
@ -660,7 +667,9 @@ def RunServer(config):
block_r = 'CS' block_r = 'CS'
if tx_ok: if tx_ok:
if ((tx[0] == 0) and (id_corr != 0)): # new stream if ((tx[0] == 0) and (id_corr != 0)): # new stream
lock_tx.acquire()
tx[0] = id_corr tx[0] = id_corr
tx[1] = 0
# gateway # gateway
tx[2] = data[4:14].decode().strip() tx[2] = data[4:14].decode().strip()
# src # src
@ -671,6 +680,7 @@ def RunServer(config):
tx[5] = id_str tx[5] = id_str
# time start # time start
tx[6] = time.time() tx[6] = time.time()
lock_tx.release()
id_str += 1 id_str += 1
printlog(1, 'Received data from ' + tx[3].ljust(10) + ' to ' + tx[4].ljust(10) + ' at ' + tx[2].ljust(10)) printlog(1, 'Received data from ' + tx[3].ljust(10) + ' to ' + tx[4].ljust(10) + ' at ' + tx[2].ljust(10))
ckeck_wild_ptt(tx[3], wptttime, wpttcount, treactivate) ckeck_wild_ptt(tx[3], wptttime, wpttcount, treactivate)
@ -683,7 +693,9 @@ def RunServer(config):
rx_lock_tout[id_corr] = 0 rx_lock_tout[id_corr] = 0
if ((id_corr == tx[0]) and (id_corr != 0)): if ((id_corr == tx[0]) and (id_corr != 0)):
lock_tx.acquire()
tx[1] = 0 tx[1] = 0
lock_tx.release()
for c in clients: for c in clients:
if (((c[0] != addr[0]) or (c[1] != addr[1])) and (id_corr == tx[0]) and (id_corr != 0) and (id_corr not in rx_lock) and (c[7] == 0)): if (((c[0] != addr[0]) or (c[1] != addr[1])) and (id_corr == tx[0]) and (id_corr != 0) and (id_corr not in rx_lock) and (c[7] == 0)):
@ -693,12 +705,15 @@ def RunServer(config):
printlog(1, 'Received end of transmission') printlog(1, 'Received end of transmission')
inserisci_lista(LH, [check_string(tx[2]), check_string(tx[3]), check_string(tx[4]), tx[5], datetime.utcfromtimestamp(tx[6]).strftime("%d-%m-%Y %H-%M-%S"), round(time.time() - tx[6]) ], 20) inserisci_lista(LH, [check_string(tx[2]), check_string(tx[3]), check_string(tx[4]), tx[5], datetime.utcfromtimestamp(tx[6]).strftime("%d-%m-%Y %H-%M-%S"), round(time.time() - tx[6]) ], 20)
inserisci_listaD(LHD, [check_string(tx[2]), check_string(tx[3]), check_string(tx[4]), tx[5], datetime.utcfromtimestamp(tx[6]).strftime("%d-%m-%Y %H-%M-%S"), round(time.time() - tx[6]) ], 20) inserisci_listaD(LHD, [check_string(tx[2]), check_string(tx[3]), check_string(tx[4]), tx[5], datetime.utcfromtimestamp(tx[6]).strftime("%d-%m-%Y %H-%M-%S"), round(time.time() - tx[6]) ], 20)
lock_tx.acquire()
tx[0] = 0 tx[0] = 0
tx[1] = 0
tx[2] = '' tx[2] = ''
tx[3] = '' tx[3] = ''
tx[4] = '' tx[4] = ''
tx[5] = 0 tx[5] = 0
tx[6] = 0 tx[6] = 0
lock_tx.release()
if (cmd == b'YSFS'): if (cmd == b'YSFS'):
printlog(0, 'YSF server status enquiry from ' + addr[0] + ':' + str(addr[1])) printlog(0, 'YSF server status enquiry from ' + addr[0] + ':' + str(addr[1]))
@ -855,7 +870,7 @@ def hex_dump(data):
######## main ######## ######## main ########
version = '20210512' version = '20210606'
if (len(sys.argv) != 2): if (len(sys.argv) != 2):
print('Invalid Number of Arguments') print('Invalid Number of Arguments')
@ -903,7 +918,7 @@ IP_LK = []
BLK_TMP = [] BLK_TMP = []
SCHED = [] SCHED = []
W_PTT = [] W_PTT = []
lock_tx = threading.Lock()
RunServer(config) RunServer(config)