fixed buffer management in case of packet fragmentation; improved test pattern with pseudo random to avoid pattern simulation

Fork of NSAPITests by Licio Mapelli

Revision:
11:fbfe3498404a
Parent:
4:b52f17273177
Child:
12:152ae238ddc1
--- a/EchoServer.py	Thu Apr 21 01:54:51 2016 -0500
+++ b/EchoServer.py	Tue May 10 21:38:38 2016 -0500
@@ -18,8 +18,19 @@
     tcp.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     tcp.listen(5)
 
+    udp6 = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
+    udp6.bind(('', port))
+    udp6.setblocking(0)
+    udp6.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+
+    tcp6 = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
+    tcp6.bind(('', port))
+    tcp6.setblocking(0)
+    tcp6.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+    tcp6.listen(5)
+
     print "running on port %d" % port     
-    sockets = [tcp, udp]
+    sockets = [tcp, udp, tcp6, udp6]
     clients = []
 
     while True:
@@ -42,6 +53,23 @@
         except socket.error:
             pass
 
+        try:
+            data, addr = udp6.recvfrom(1 << 12)
+            print 'udp6 %s:%d %d' % (addr[0], addr[1], len(data))
+            udp6.sendto(data, addr)
+        except socket.error:
+            pass
+
+        try:
+            client, addr = tcp6.accept()
+            print 'tcp6 %s:%d connect' % (addr[0], addr[1])
+            client.setblocking(0)
+            client.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+            sockets.append(client)
+            clients.append((client, addr))
+        except socket.error:
+            pass
+
         for client, addr in clients:
             try:
                 data = client.recv(1 << 12)