Skip to content

Commit a5fb610

Browse files
author
Federico Fissore
committed
replaces socket.bind with utils.try_bind
1 parent 6908f46 commit a5fb610

File tree

4 files changed

+23
-18
lines changed

4 files changed

+23
-18
lines changed

linux/bridge/console.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
21
from socket import socket, AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR, gethostname
32
from select import select
3+
import utils
44

55
class Console:
66
def __init__(self, port=6571):
77
server = socket(AF_INET, SOCK_STREAM)
88
server.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
9-
server.bind(('127.0.0.1', port))
9+
utils.try_bind(server, '127.0.0.1', port)
1010
server.listen(1) # No connection backlog
1111
server.setblocking(0)
1212
self.server = server
@@ -118,7 +118,7 @@ def init(command_processor):
118118
command_processor.register('p', READ_Command())
119119
command_processor.register('a', CONNECTED_Command())
120120
command_processor.register_runner(console)
121-
121+
122122
def test():
123123
while True:
124124
console.process(1)

linux/bridge/sockets.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
21
from socket import socket, AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR, gethostname
32
from select import select
3+
import utils
4+
45

56
class SocketClient:
67
def __init__(self, sock):
@@ -69,14 +70,14 @@ def run(self):
6970
for id in self.clients:
7071
self.clients[id].run()
7172

72-
def listen(self, addr, port):
73+
def listen(self, address, port):
7374
if not self.server is None:
7475
self.server.close()
7576
self.server = None
7677
try:
7778
server = socket(AF_INET, SOCK_STREAM)
7879
server.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
79-
server.bind((addr, port))
80+
utils.try_bind(server, address, port)
8081
server.listen(1) # No connection backlog
8182
server.setblocking(0)
8283
self.server = server

linux/bridge/tcp.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
from socket import socket, AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR, gethostname
33
from select import select
44
from collections import deque
5-
import json, time
5+
import json
6+
import utils
7+
68

79
class TCPClient:
810
def __init__(self, address, port):
@@ -54,7 +56,7 @@ class TCPServer:
5456
def __init__(self, address, port):
5557
server = socket(AF_INET, SOCK_STREAM)
5658
server.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
57-
self.try_bind(server, address, port, 30)
59+
utils.try_bind(server, address, port)
5860
server.listen(5)
5961
server.setblocking(0)
6062
self.server = server
@@ -63,16 +65,6 @@ def __init__(self, address, port):
6365
self.clients_recvbuffer = { }
6466
self.sockets = [ server ]
6567

66-
def try_bind(self, socket, address, port, timeout=10):
67-
start_time = time.time()
68-
while (time.time() - start_time) < timeout:
69-
try:
70-
return socket.bind((address, port))
71-
except:
72-
time.sleep(1)
73-
# try one last time, just to throw up an exception...
74-
return socket.bind((address, port))
75-
7668
def run(self):
7769
rd, wr, err = select(self.sockets, [], self.sockets, 0)
7870

linux/bridge/utils.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import time
2+
3+
4+
def try_bind(socket, address, port, timeout=30):
5+
start_time = time.time()
6+
while (time.time() - start_time) < timeout:
7+
try:
8+
return socket.bind((address, port))
9+
except:
10+
time.sleep(1)
11+
# try one last time, just to throw up an exception...
12+
return socket.bind((address, port))

0 commit comments

Comments
 (0)