From c249af3aaf258fd5b95d862727d6fe297295653a Mon Sep 17 00:00:00 2001 From: Claudio-Daniel Freire Date: Thu, 25 Aug 2011 17:40:49 +0200 Subject: [PATCH] UDP TunChannel handshake --- src/nepi/util/tunchannel.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/nepi/util/tunchannel.py b/src/nepi/util/tunchannel.py index 49f0e6c5..ee914fee 100644 --- a/src/nepi/util/tunchannel.py +++ b/src/nepi/util/tunchannel.py @@ -506,4 +506,33 @@ def tun_fwd(tun, remote, with_pi, ether_mode, cipher_key, udp, TERMINATE, stderr #print >>sys.stderr, "rr:%d\twr:%d\trt:%d\twt:%d" % (rr,wr,rt,wt) +def udp_handshake(TERMINATE, rsock): + 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() -- 2.47.0