From 1a6e99f4ff16125e1d8c80130e651822d537769d Mon Sep 17 00:00:00 2001 From: lassulus Date: Thu, 1 Feb 2024 10:11:30 +0100 Subject: [PATCH] zerotier generate: retry if port allocation fails --- nixosModules/clanCore/zerotier/generate.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/nixosModules/clanCore/zerotier/generate.py b/nixosModules/clanCore/zerotier/generate.py index 90086077c..027ed78bb 100644 --- a/nixosModules/clanCore/zerotier/generate.py +++ b/nixosModules/clanCore/zerotier/generate.py @@ -7,6 +7,7 @@ import os import signal import socket import subprocess +import sys import time import urllib.request from collections.abc import Iterator @@ -148,9 +149,15 @@ class NetworkController: # TODO: allow merging more network configuration here def create_network_controller() -> NetworkController: - with zerotier_controller() as controller: - network = controller.create_network() - return NetworkController(network["nwid"], controller.identity) + e = ClanError("Bug, should never happen") + for _ in range(10): + try: + with zerotier_controller() as controller: + network = controller.create_network() + return NetworkController(network["nwid"], controller.identity) + except ClanError: # probably failed to allocate port, so retry + print("failed to create network, retrying..., probabl", file=sys.stderr) + raise e def create_identity() -> Identity: