From 1c90a60def2ee4bad887fddcc13d5c77df65cfa2 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Mon, 20 Mar 2023 10:56:03 -0400 Subject: [PATCH] GH-8566: Fix `SftpSession.append()` for `Write` (#8576) Fixes https://github.com/spring-projects/spring-integration/issues/8566 Turns out some SFTP servers are strict enough to not let to append into existing file if we don't give in addition a `Write` open mode flag as well **Cherry-pick to `6.0.x`** --- .../integration/sftp/session/SftpSession.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spring-integration-sftp/src/main/java/org/springframework/integration/sftp/session/SftpSession.java b/spring-integration-sftp/src/main/java/org/springframework/integration/sftp/session/SftpSession.java index ede5b05a88..819d257b12 100644 --- a/spring-integration-sftp/src/main/java/org/springframework/integration/sftp/session/SftpSession.java +++ b/spring-integration-sftp/src/main/java/org/springframework/integration/sftp/session/SftpSession.java @@ -132,7 +132,10 @@ public class SftpSession implements Session { public void append(InputStream inputStream, String destination) throws IOException { synchronized (this.sftpClient) { OutputStream outputStream = - this.sftpClient.write(destination, SftpClient.OpenMode.Create, SftpClient.OpenMode.Append); + this.sftpClient.write(destination, + SftpClient.OpenMode.Create, + SftpClient.OpenMode.Write, + SftpClient.OpenMode.Append); FileCopyUtils.copy(inputStream, outputStream); } }