earliest_join_id = peer_id elif peer_data['joined_at'] < chat_peers[earliest_join_id]['joined_at']: earliest_join_id = peer_id if earliest_join_id: # found new peer to be coordinator earliest_join_peer = chat_peers[earliest_join_id] new_server_ip, new_server_port = earliest_join_peer['server_addr'] print(Style.info(f'Attempting to make {earliest_join_peer["username"]} the new chat coordinator')) else: # no other peers to be coord, make own server coord print(Style.info('Attempting to make you the new chat coordinator...')) new_server_ip, new_server_port = peer.get_server_addr() peer.set_chat_coord(new_server_ip, new_server_port) peer.set_chat_peers({}) for retries in range(5): # random delay so less chance of all members trying connection at same time rand_delay = random.uniform(0.0, 5.0) time.sleep(rand_delay) try: client = Client(peer, new_server_ip, new_server_port) break except ConnectionRefusedError: print(Style.warning(f'Failed to connect to new server, retries: {retries}')) # likely failed continue