From 7ab2db63f7d5f30035d6db2ec2a86a156c50d2f6 Mon Sep 17 00:00:00 2001
From: Radek Vykydal <rvykydal@redhat.com>
Date: Wed, 19 Aug 2020 13:50:48 +0200
Subject: [PATCH] network: add timeout for synchronous activation of a
 connection

Related: rhbz#1869323
---
 pyanaconda/modules/network/constants.py |  1 +
 pyanaconda/modules/network/nm_client.py | 13 ++++++++++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/pyanaconda/modules/network/constants.py b/pyanaconda/modules/network/constants.py
index 33c99d76e..530a8e281 100644
--- a/pyanaconda/modules/network/constants.py
+++ b/pyanaconda/modules/network/constants.py
@@ -24,6 +24,7 @@ from pyanaconda.core.constants import FIREWALL_DEFAULT, FIREWALL_DISABLED, \
 
 
 NM_CONNECTION_UUID_LENGTH = 36
+CONNECTION_ACTIVATION_TIMEOUT = 45
 
 
 @unique
diff --git a/pyanaconda/modules/network/nm_client.py b/pyanaconda/modules/network/nm_client.py
index 5e1fb854e..2f5703e76 100644
--- a/pyanaconda/modules/network/nm_client.py
+++ b/pyanaconda/modules/network/nm_client.py
@@ -23,9 +23,10 @@ gi.require_version("NM", "1.0")
 from gi.repository import NM
 
 import socket
-from queue import Queue
+from queue import Queue, Empty
 from pykickstart.constants import BIND_TO_MAC
-from pyanaconda.modules.network.constants import NM_CONNECTION_UUID_LENGTH
+from pyanaconda.modules.network.constants import NM_CONNECTION_UUID_LENGTH, \
+    CONNECTION_ACTIVATION_TIMEOUT
 from pyanaconda.modules.network.kickstart import default_ks_vlan_interface_name
 from pyanaconda.modules.network.utils import is_s390, get_s390_settings, netmask2prefix, \
     prefix2netmask
@@ -939,7 +940,13 @@ def activate_connection_sync(nm_client, connection, device):
         sync_queue
     )
 
-    return sync_queue.get()
+    try:
+        ret = sync_queue.get(timeout=CONNECTION_ACTIVATION_TIMEOUT)
+    except Empty:
+        log.error("Activation of a connection timed out.")
+        ret = None
+
+    return ret
 
 
 def get_dracut_arguments_from_connection(nm_client, connection, iface, target_ip,
-- 
2.23.0

