Skip to content

Commit 17ce91a

Browse files
committed
Fixed AutoInterface deferred init
1 parent 08751a7 commit 17ce91a

3 files changed

Lines changed: 24 additions & 21 deletions

File tree

RNS/Interfaces/AutoInterface.py

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ def __init__(self, owner, configuration):
110110
self.IN = True
111111
self.OUT = False
112112
self.name = name
113+
self.owner = owner
113114
self.online = False
114115
self.peers = {}
115116
self.link_local_addresses = []
@@ -292,33 +293,31 @@ def discovery_loop():
292293
else:
293294
self.bitrate = AutoInterface.BITRATE_GUESS
294295

295-
peering_wait = self.announce_interval*1.2
296-
RNS.log(str(self)+" discovering peers for "+str(round(peering_wait, 2))+" seconds...", RNS.LOG_VERBOSE)
296+
def final_init(self):
297+
peering_wait = self.announce_interval*1.2
298+
RNS.log(str(self)+" discovering peers for "+str(round(peering_wait, 2))+" seconds...", RNS.LOG_VERBOSE)
297299

298-
self.owner = owner
299-
socketserver.UDPServer.address_family = socket.AF_INET6
300+
socketserver.UDPServer.address_family = socket.AF_INET6
300301

301-
for ifname in self.adopted_interfaces:
302-
local_addr = self.adopted_interfaces[ifname]+"%"+str(self.interface_name_to_index(ifname))
303-
addr_info = socket.getaddrinfo(local_addr, self.data_port, socket.AF_INET6, socket.SOCK_DGRAM)
304-
address = addr_info[0][4]
302+
for ifname in self.adopted_interfaces:
303+
local_addr = self.adopted_interfaces[ifname]+"%"+str(self.interface_name_to_index(ifname))
304+
addr_info = socket.getaddrinfo(local_addr, self.data_port, socket.AF_INET6, socket.SOCK_DGRAM)
305+
address = addr_info[0][4]
305306

306-
udp_server = socketserver.UDPServer(address, self.handler_factory(self.process_incoming))
307-
self.interface_servers[ifname] = udp_server
308-
309-
thread = threading.Thread(target=udp_server.serve_forever)
310-
thread.daemon = True
311-
thread.start()
312-
313-
job_thread = threading.Thread(target=self.peer_jobs)
314-
job_thread.daemon = True
315-
job_thread.start()
307+
udp_server = socketserver.UDPServer(address, self.handler_factory(self.process_incoming))
308+
self.interface_servers[ifname] = udp_server
309+
310+
thread = threading.Thread(target=udp_server.serve_forever)
311+
thread.daemon = True
312+
thread.start()
316313

317-
# TODO: Fix this
318-
# time.sleep(peering_wait)
314+
job_thread = threading.Thread(target=self.peer_jobs)
315+
job_thread.daemon = True
316+
job_thread.start()
319317

320-
self.online = True
318+
time.sleep(peering_wait)
321319

320+
self.online = True
322321

323322
def discovery_handler(self, socket, ifname):
324323
def announce_loop():

RNS/Interfaces/Interface.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,9 @@ def process_announce_queue(self):
268268
RNS.log("Error while processing announce queue on "+str(self)+". The contained exception was: "+str(e), RNS.LOG_ERROR)
269269
RNS.log("The announce queue for this interface has been cleared.", RNS.LOG_ERROR)
270270

271+
def final_init(self):
272+
pass
273+
271274
def detach(self):
272275
pass
273276

RNS/Reticulum.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,7 @@ def interface_post_init(interface):
650650
interface.ifac_signature = interface.ifac_identity.sign(RNS.Identity.full_hash(interface.ifac_key))
651651

652652
RNS.Transport.interfaces.append(interface)
653+
interface.final_init()
653654

654655
interface = None
655656
if (("interface_enabled" in c) and c.as_bool("interface_enabled") == True) or (("enabled" in c) and c.as_bool("enabled") == True):

0 commit comments

Comments
 (0)