diff --git a/src/main/java/com/plugin/sshjplugin/SSHJFileCopierPlugin.java b/src/main/java/com/plugin/sshjplugin/SSHJFileCopierPlugin.java index a1b1324..ffeada8 100644 --- a/src/main/java/com/plugin/sshjplugin/SSHJFileCopierPlugin.java +++ b/src/main/java/com/plugin/sshjplugin/SSHJFileCopierPlugin.java @@ -183,10 +183,10 @@ private String copyFile( StepFailureReason.ConfigurationFailure, e); } - final SSHClient client = createSshClient(); - scp.connect(client); - + SSHClient client = null; try { + client = createSshClient(); + scp.connect(client); scp.execute(client); } catch (Exception e) { throw new FileCopierException("Configuration error: " + e.getMessage(), @@ -200,13 +200,16 @@ private String copyFile( ); } } - } - - try { - client.disconnect(); - client.close(); - } catch (IOException iex) { - throw new SSHJBuilder.BuilderException(iex); + if (null != client) { + try { + client.disconnect(); + client.close(); + } catch (IOException iex) { + // Log cleanup errors instead of throwing to avoid masking original exception + logger.log(Constants.WARN_LEVEL, "[sshj-scp] Error closing SSH connection: " + + iex.getMessage()); + } + } } return remotefile; @@ -237,21 +240,25 @@ private String[] copyMultipleFiles( StepFailureReason.ConfigurationFailure, e); } - final SSHClient client = createSshClient(); - scp.connect(client); - + SSHClient client = null; try { + client = createSshClient(); + scp.connect(client); scp.execute(client); } catch (Exception e) { throw new FileCopierException("Configuration error: " + e.getMessage(), StepFailureReason.ConfigurationFailure, e); - } - - try { - client.disconnect(); - client.close(); - } catch (IOException iex) { - throw new SSHJBuilder.BuilderException(iex); + } finally { + if (null != client) { + try { + client.disconnect(); + client.close(); + } catch (IOException iex) { + // Log cleanup errors instead of throwing to avoid masking original exception + logger.log(Constants.WARN_LEVEL, "[sshj-scp] Error closing SSH connection: " + + iex.getMessage()); + } + } } ArrayList ret = new ArrayList<>();