Util block-error should be fixed

master
Stefan Krulj 14 years ago
parent dc339220c9
commit cae82bd051
  1. 92
      sys/util.py

@ -8,50 +8,50 @@ from Queue import Queue, Empty
MAGIC_PACKET = "" MAGIC_PACKET = ""
for i in xrange(50): for i in xrange(50):
MAGIC_PACKET += chr(random.randrange(ord('a'),ord('z'))) MAGIC_PACKET += chr(random.randrange(ord('a'),ord('z')))
def split_args(txt): def split_args(txt):
SA_S0, SA_QUOT = range(2) SA_S0, SA_QUOT = range(2)
split_args_state = SA_S0 split_args_state = SA_S0
# FSM: # FSM:
# #
# else # else
# ,--. # ,--.
# | V " # | V "
# `-(S0)----->(QUOT) # `-(S0)----->(QUOT)
# ^ | # ^ |
# `---------´ # `---------´
# " # "
# #
args = [] args = []
current = u"" current = u""
for i in xrange(len(txt)): for i in xrange(len(txt)):
c = txt[i] c = txt[i]
if split_args_state==SA_S0: if split_args_state==SA_S0:
if c=='"': if c=='"':
split_args_state = SA_QUOT split_args_state = SA_QUOT
if len(current)!=0: if len(current)!=0:
args.append(current) args.append(current)
current = u"" current = u""
elif c in " \t\n": elif c in " \t\n":
if len(current)!=0: if len(current)!=0:
args.append(current) args.append(current)
current = u"" current = u""
else: else:
current += c current += c
elif split_args_state==SA_QUOT: elif split_args_state==SA_QUOT:
if c=='"': if c=='"':
split_args_state = SA_S0 split_args_state = SA_S0
else: else:
current += c current += c
else: else:
assert False assert False
if len(current)!=0: if len(current)!=0:
args.append(current) args.append(current)
return args return args
def get_local_ip(): def get_local_ip():
def udp_listening_server(): def udp_listening_server():
@ -60,15 +60,15 @@ def get_local_ip():
s.setblocking(0) s.setblocking(0)
while True: while True:
result = select.select([s],[],[],10) result = select.select([s],[],[],10)
if len(result[0])==0 : if len(result[0])==0 :
print "Warning using default local ip" print "Warning using default local ip"
queue.put([config.LOCAL_IP]) queue.put([config.LOCAL_IP])
break break
msg, address = result[0][0].recvfrom(1024) msg, address = result[0][0].recvfrom(1024)
msg = unicode(msg) msg = unicode(msg)
if msg == MAGIC_PACKET: if msg == MAGIC_PACKET:
queue.put(address) queue.put(address)
break break
queue = Queue() queue = Queue()

Loading…
Cancel
Save