Skip to content

Commit 762ae3c

Browse files
Fix SSH connection leak when update_config raises exception
1 parent 45b24b6 commit 762ae3c

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

openwisp_controller/connection/tasks.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,23 @@ def update_config(self, device_id):
6060
except NoWorkingDeviceConnectionError:
6161
return
6262
else:
63-
logger.info(f"Updating {device} (pk: {device_id})")
63+
logger.info(f"Updating {device} (pk: {device_id})")
64+
65+
try:
6466
device_conn.update_config()
67+
except Exception as e:
68+
logger.error(f"update_config failed for device {device_id}: {e}")
69+
raise
70+
finally:
71+
# ensure connection is closed
72+
close_method = getattr(device_conn, "close", None)
73+
if callable(close_method):
74+
try:
75+
close_method()
76+
try:
77+
device_conn.close()
78+
except Exception as close_err:
79+
logger.warning(f"Error closing connection: {close_err}")
6580

6681

6782
# task timeout is SSH_COMMAND_TIMEOUT plus a 20% margin

0 commit comments

Comments
 (0)