Implement UDP handshake in tunchannel, so that other testbeds can use it
authorClaudio-Daniel Freire <claudio-daniel.freire@inria.fr>
Thu, 25 Aug 2011 15:40:22 +0000 (17:40 +0200)
committerClaudio-Daniel Freire <claudio-daniel.freire@inria.fr>
Thu, 25 Aug 2011 15:40:22 +0000 (17:40 +0200)
src/nepi/testbeds/planetlab/scripts/tun_connect.py
src/nepi/util/tunchannel_impl.py

index ae7a0cc..92f7fed 100644 (file)
@@ -775,34 +775,7 @@ try:
             raise AssertionError, "Error: need a remote endpoint in UDP mode"
         
         # Wait for other peer
-        endme = False
-        def keepalive():
-            while not endme and not TERMINATE:
-                try:
-                    rsock.send('')
-                except:
-                    pass
-                time.sleep(1)
-            try:
-                rsock.send('')
-            except:
-                pass
-        keepalive_thread = threading.Thread(target=keepalive)
-        keepalive_thread.start()
-        retrydelay = 1.0
-        for i in xrange(30):
-            if TERMINATE:
-                raise OSError, "Killed"
-            try:
-                heartbeat = rsock.recv(10)
-                break
-            except:
-                time.sleep(min(30.0,retrydelay))
-                retrydelay *= 1.1
-        else:
-            heartbeat = rsock.recv(10)
-        endme = True
-        keepalive_thread.join()
+        tunchannel.udp_handshake(TERMINATE, rsock)
         
         remote = os.fdopen(rsock.fileno(), 'r+b', 0)
     else:
index cecd729..611e7ac 100644 (file)
@@ -215,6 +215,7 @@ class TunChannel(object):
             else:
                 rsock.bind((local_addr,local_port))
             rsock.connect((peer_addr,peer_port))
+            tunchannel.udp_handshake(TERMINATE, rsock)
             remote = os.fdopen(rsock.fileno(), 'r+b', 0)
         elif listen:
             # accept tcp connections