fix(FTP Node): Fix issue with connections not closing properly (#8619)

This commit is contained in:
Jon 2024-02-13 14:32:21 +00:00 committed by GitHub
parent a3bed97883
commit e597fbc78f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -439,8 +439,8 @@ export class Ftp implements INodeType {
credential: ICredentialsDecrypted, credential: ICredentialsDecrypted,
): Promise<INodeCredentialTestResult> { ): Promise<INodeCredentialTestResult> {
const credentials = credential.data as ICredentialDataDecryptedObject; const credentials = credential.data as ICredentialDataDecryptedObject;
try {
const ftp = new ftpClient(); const ftp = new ftpClient();
try {
await ftp.connect({ await ftp.connect({
host: credentials.host as string, host: credentials.host as string,
port: credentials.port as number, port: credentials.port as number,
@ -448,11 +448,13 @@ export class Ftp implements INodeType {
password: credentials.password as string, password: credentials.password as string,
}); });
} catch (error) { } catch (error) {
await ftp.end();
return { return {
status: 'Error', status: 'Error',
message: error.message, message: error.message,
}; };
} }
await ftp.end();
return { return {
status: 'OK', status: 'OK',
message: 'Connection successful!', message: 'Connection successful!',
@ -463,8 +465,8 @@ export class Ftp implements INodeType {
credential: ICredentialsDecrypted, credential: ICredentialsDecrypted,
): Promise<INodeCredentialTestResult> { ): Promise<INodeCredentialTestResult> {
const credentials = credential.data as ICredentialDataDecryptedObject; const credentials = credential.data as ICredentialDataDecryptedObject;
try {
const sftp = new sftpClient(); const sftp = new sftpClient();
try {
if (credentials.privateKey) { if (credentials.privateKey) {
await sftp.connect({ await sftp.connect({
host: credentials.host as string, host: credentials.host as string,
@ -483,11 +485,13 @@ export class Ftp implements INodeType {
}); });
} }
} catch (error) { } catch (error) {
await sftp.end();
return { return {
status: 'Error', status: 'Error',
message: error.message, message: error.message,
}; };
} }
await sftp.end();
return { return {
status: 'OK', status: 'OK',
message: 'Connection successful!', message: 'Connection successful!',
@ -511,10 +515,9 @@ export class Ftp implements INodeType {
} else { } else {
credentials = await this.getCredentials('ftp'); credentials = await this.getCredentials('ftp');
} }
try {
let ftp: ftpClient; let ftp: ftpClient;
let sftp: sftpClient; let sftp: sftpClient;
try {
if (protocol === 'sftp') { if (protocol === 'sftp') {
sftp = new sftpClient(); sftp = new sftpClient();
if (credentials.privateKey) { if (credentials.privateKey) {
@ -809,6 +812,11 @@ export class Ftp implements INodeType {
await ftp!.end(); await ftp!.end();
} }
} catch (error) { } catch (error) {
if (protocol === 'sftp') {
await sftp!.end();
} else {
await ftp!.end();
}
if (this.continueOnFail()) { if (this.continueOnFail()) {
return [[{ json: { error: error.message } }]]; return [[{ json: { error: error.message } }]];
} }