From 4781deff635a0612c501b18bc587b9fc785fa796 Mon Sep 17 00:00:00 2001
From: jkerdreu <jkerdreu@b32b6428-25c9-4566-ad07-03861ab6144f>
Date: Tue, 29 Oct 2019 23:50:53 +0000
Subject: [PATCH] added a loop detection queue

git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/trunk@2334 b32b6428-25c9-4566-ad07-03861ab6144f
---
 scripts/unreflector.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/scripts/unreflector.py b/scripts/unreflector.py
index 4a3e8caa..e1cfe738 100644
--- a/scripts/unreflector.py
+++ b/scripts/unreflector.py
@@ -2,6 +2,8 @@ from xaal.lib import NetworkConnector
 import socket
 import select
 import argparse
+import hashlib
+import collections
 
 class UDPConnector(object):
     UDP_MAX_SIZE = 65507
@@ -34,10 +36,20 @@ def run(u_addr,u_port,m_addr,m_port):
     mc = NetworkConnector(m_addr,m_port,10)
     mc.connect()
 
+    queue = collections.deque(maxlen=50)
+
     while 1:
         data = udp.get_data()
         if data:
+            h = hashlib.blake2b(data).hexdigest()
+            queue.append(h)
             mc.send(data)
+           
+        data = mc.get_data()
+        if data:
+            h=hashlib.blake2b(data).hexdigest()
+            if h not in queue:
+                udp.send(data)
 
 def main():
     ap = argparse.ArgumentParser(description="Simple un-reflector")
-- 
GitLab