Skip to content

net.schmizz.sshj.sftp.SFTPException: EOF while reading packet when sending XML file with embedded files #988

Open
@GillesPlatteeuw

Description

@GillesPlatteeuw

I'm encountering an issue with the Alpakka library which uses sshj for the SFTP implementation. I started encountering net.schmizz.sshj.sftp.SFTPException: EOF while reading packet errors on very specific XML files where files are embedded (EDI use-case).

I've created some tests where I specifically use the sshj library for the SFTP actions and am able to replicate the issue with a locally hosted SFTP server and the file.
Due to the sensitive nature of the documents i am not able to share those, I have not been able to manually reproduce a document where the issue occurs.

This is the test i've created (Scala code) where I've tested our abstracted client, the Alpakka client and then the sshj library.
I have a workaround in the test Should upload file with sshj where i create a temporary file on the system to then use the put function (I suppose it does a full copy instead of a streamed write).

class SftpTest extends TestKit(ActorSystem("TestSystem")) with AnyFunSuiteLike with Logging {

  test("Should be able to upload a larger document") {
    val f = new File(getClass.getResource("/sftp/test-xml.xml").toURI)
    val cfg = FtpConfig(
      "nymus",
      "test",
      "localhost",
      FtpType.SFTP,
      2222
    )

    val bytes = Files.readAllBytes(f.toPath)
    val client = new AlpakkaFtpClient(system)

    val request = FtpUploadRequest(
      bytes = bytes, remoteFilePath = "/test.xml", ftpConfig = cfg, temporaryExtension = Some(".temp")
    )
    val output = Await.result(client.upload(request), Duration.Inf)
    output shouldBe Success(Done)
  }



  test("Should upload file") {
    val f = new File(getClass.getResource("/sftp/test-xml.xml").toURI)

    val bytes = Files.readAllBytes(f.toPath)

    val remotePath = "/test.xml"
    val ftpSettings = SftpSettings
      .create(InetAddress.getByName("localhost"))
      .withPort(2222)
      .withCredentials(FtpCredentials.create("nymus", "test"))
      .withStrictHostKeyChecking(false)
      .withMaxUnconfirmedReads(64)

    val s = Sftp.toPath(remotePath, ftpSettings, false)
    val out = Await.result(Source.single(ByteString.fromArray(bytes))
      .runWith(s), Duration.Inf)

    out.status shouldBe Success(Done)
  }

  test("Should upload file with sshj") {
    val out = Try {
      val f = new File(getClass.getResource("/sftp/test-xml.xml").toURI)

      val bytes = Files.readAllBytes(f.toPath)

      val remotePath = "/test.xml"
      val ssh = new SSHClient()
      ssh.addHostKeyVerifier(new PromiscuousVerifier())
      ssh.connect(InetAddress.getByName("localhost"), 2222)
      ssh.authPassword("nymus", "test")

      val sftp = ssh.newSFTPClient()

      val tempDir = new File(System.getProperty("java.io.tmpdir"));
      val tempFile = File.createTempFile(remotePath.split("/").last, ".tmp", tempDir);
      val bw = new FileOutputStream(tempFile);
      bw.write(bytes);
      bw.close();

      // try to remove, don't care about failure here, either remove when exist or do not do anything
      Try {
        sftp.rm(remotePath)
      }
      sftp.put(tempFile.getAbsolutePath, remotePath)

      tempFile.delete()

      sftp.close()
      ssh.disconnect()
      Done
    }

    out shouldBe Success(Done)
  }

  test("Should upload file with sshj streamed") {
    val out = Try {
      val f = new File(getClass.getResource("/sftp/test-xml.xml").toURI)

      val bytes = Files.readAllBytes(f.toPath)

      val remotePath = "/test.xml"
      val ssh = new SSHClient()
      ssh.addHostKeyVerifier(new PromiscuousVerifier())
      ssh.connect(InetAddress.getByName("localhost"), 2222)
      ssh.authPassword("nymus", "test")

      val sftp = ssh.newSFTPClient()

      val remoteFile = sftp.open(remotePath, java.util.EnumSet.of(WRITE, CREAT, TRUNC))
      val os: remoteFile.RemoteFileOutputStream = new remoteFile.RemoteFileOutputStream()
      os.write(bytes,0, bytes.length)
      os.close()

      sftp.close()
      ssh.disconnect()
    }

    out shouldBe Success(Done)
  }

  test("should be able to read a pdf file") {
    val out = Try{
      val f = new File(getClass.getResource("/sftp/application-4.pdf").toURI)
      val bytes = Files.readAllBytes(f.toPath)

      val tempDir = new File(System.getProperty("java.io.tmpdir"));
      val tempFile = File.createTempFile("test.pdf", ".tmp", tempDir);
      val b: FileOutputStream = new FileOutputStream(tempFile);
      b.write(bytes)
      b.close()
      Done
    }

    out shouldBe Success(Done)
  }

  test("should be able to read a different pdf file") {
    val out = Try{
      val f = new File(getClass.getResource("/sftp/application-5.pdf").toURI)
      val bytes = Files.readAllBytes(f.toPath)

      val tempDir = new File(System.getProperty("java.io.tmpdir"));
      val tempFile = File.createTempFile("test.pdf", ".tmp", tempDir);
      val b: FileOutputStream = new FileOutputStream(tempFile);
      b.write(bytes)
      b.close()
      Done
    }

    out shouldBe Success(Done)
  }

  test("should be able to read a image file") {
    val out = Try{
      val f = new File(getClass.getResource("/sftp/image.jpg").toURI)
      val bytes = Files.readAllBytes(f.toPath)

      val tempDir = new File(System.getProperty("java.io.tmpdir"));
      val tempFile = File.createTempFile("test.jpg", ".tmp", tempDir);
      val b: FileOutputStream = new FileOutputStream(tempFile);
      b.write(bytes)
      b.close()
      Done
    }

    out shouldBe Success(Done)
  }

}

Below is the output of the test Should upload file with sshj streamed which fails with our specific XML document with embedded PDF's and image.

2:00:21.207 [TestSystem-akka.actor.default-dispatcher-5] INFO  akka.event.slf4j.Slf4jLogger - Slf4jLogger started



12:00:21.592 [ScalaTest-run-running-SftpTest] INFO  n.s.sshj.transport.random.JCERandom - Creating new SecureRandom.
12:00:21.593 [ScalaTest-run-running-SftpTest] DEBUG n.s.sshj.transport.random.JCERandom - Random creation took 1 ms
12:00:21.752 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.sshj.DefaultConfig - Available Ciphers [[email protected], aes128-cbc, aes128-ctr, aes192-cbc, aes192-ctr, aes256-cbc, aes256-ctr, [email protected], [email protected], blowfish-cbc, blowfish-ctr, cast128-cbc, cast128-ctr, idea-cbc, idea-ctr, serpent128-cbc, serpent128-ctr, serpent192-cbc, serpent192-ctr, serpent256-cbc, serpent256-ctr, 3des-cbc, 3des-ctr, twofish128-cbc, twofish128-ctr, twofish192-cbc, twofish192-ctr, twofish256-cbc, twofish256-ctr, twofish-cbc, arcfour, arcfour128, arcfour256]
12:00:21.757 [ScalaTest-run-running-SftpTest] INFO  n.s.sshj.transport.TransportImpl - Client identity string: SSH-2.0-SSHJ_0.39.0
12:00:21.804 [ScalaTest-run-running-SftpTest] INFO  n.s.sshj.transport.TransportImpl - Server identity string: SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u3
12:00:21.805 [ScalaTest-run-running-SftpTest] DEBUG n.s.sshj.transport.KeyExchanger - Initiating key exchange
12:00:21.805 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.concurrent.Promise - Clearing <<kex done>>
12:00:21.805 [ScalaTest-run-running-SftpTest] DEBUG n.s.sshj.transport.KeyExchanger - Sending SSH_MSG_KEXINIT
12:00:21.806 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.concurrent.Promise - Setting <<kexinit sent>> to `SOME`
12:00:21.806 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.concurrent.Promise - Awaiting <<kex done>>
12:00:21.810 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.sshj.transport.KeyExchanger - Received SSH_MSG_KEXINIT
12:00:21.810 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.sshj.transport.KeyExchanger - Enabling strict key exchange extension
12:00:21.810 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.sshj.transport.KeyExchanger - Negotiated algorithms: [ kex=curve25519-sha256; sig=ssh-ed25519; [email protected]; [email protected]; c2sMAC=hmac-sha1; s2cMAC=hmac-sha1; c2sComp=none; s2cComp=none;  ]
12:00:21.827 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.s.transport.kex.Curve25519SHA256 - Sending SSH_MSG_KEXDH_INIT
12:00:21.834 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.sshj.transport.KeyExchanger - Received kex followup data
12:00:21.834 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.s.transport.kex.Curve25519SHA256 - Received SSH_MSG_KEXDH_REPLY
12:00:21.835 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG net.schmizz.sshj.common.KeyType - Key algo: ssh-ed25519, Key curve: 25519, Key Len: 32
p: [65, -70, 47, -88, -117, 12, -64, -25, 102, -38, 41, -45, 37, -66, 32, -22, -90, -108, 120, 23, 28, -77, 99, -87, 109, 4, 98, -73, 25, 75, 6, 76]
12:00:21.849 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.sshj.transport.KeyExchanger - Trying to verify host key with net.schmizz.sshj.transport.verification.PromiscuousVerifier@25d9ee0
12:00:21.849 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.sshj.transport.KeyExchanger - Sending SSH_MSG_NEWKEYS
12:00:21.850 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.sshj.transport.KeyExchanger - Received SSH_MSG_NEWKEYS
12:00:21.850 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG net.schmizz.concurrent.Promise - Clearing <<kexinit sent>>
12:00:21.850 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG net.schmizz.concurrent.Promise - Setting <<kex done>> to `SOME`
12:00:21.850 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.sshj.SSHClient - Key exchange took 0.046 seconds
12:00:21.850 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.sshj.transport.TransportImpl - Received SSH_MSG_EXT_INFO
12:00:21.852 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.concurrent.Promise - Clearing <<service accept>>
12:00:21.852 [ScalaTest-run-running-SftpTest] DEBUG n.s.sshj.transport.TransportImpl - Sending SSH_MSG_SERVICE_REQUEST for ssh-userauth
12:00:21.852 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.concurrent.Promise - Awaiting <<service accept>>
12:00:21.852 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.sshj.transport.TransportImpl - Setting active service to ssh-userauth
12:00:21.852 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG net.schmizz.concurrent.Promise - Setting <<service accept>> to `SOME`
12:00:21.853 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.concurrent.Promise - Clearing <<authenticated>>
12:00:21.853 [ScalaTest-run-running-SftpTest] DEBUG n.schmizz.sshj.userauth.UserAuthImpl - Trying `password` auth...
12:00:21.853 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.userauth.method.AuthPassword - Requesting password for [AccountResource] nymus@localhost
12:00:21.853 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.concurrent.Promise - Awaiting <<authenticated>>
12:00:21.895 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.sshj.transport.TransportImpl - Setting active service to ssh-connection
12:00:21.895 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG net.schmizz.concurrent.Promise - Setting <<authenticated>> to `true`
12:00:21.895 [ScalaTest-run-running-SftpTest] DEBUG n.schmizz.sshj.userauth.UserAuthImpl - `password` auth successful
12:00:21.899 [ScalaTest-run-running-SftpTest] DEBUG n.s.sshj.connection.ConnectionImpl - Attaching `session` channel (#0)
12:00:21.899 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.concurrent.Promise - Awaiting <<chan#0 / open>>
12:00:21.908 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.sshj.connection.ConnectionImpl - Received GLOBAL_REQUEST `[email protected]`; want reply: false
12:00:21.909 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.s.c.c.direct.SessionChannel - Initialized - < session channel: id=0, recipient=0, localWin=[winSize=2097152], remoteWin=[winSize=0] >
12:00:21.909 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG net.schmizz.concurrent.Promise - Setting <<chan#0 / open>> to `SOME`
12:00:21.909 [ScalaTest-run-running-SftpTest] INFO  n.s.s.c.c.direct.SessionChannel - Will request `sftp` subsystem
12:00:21.909 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.c.direct.SessionChannel - Sending channel request for `subsystem`
12:00:21.909 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.concurrent.Promise - Awaiting <<chan#0 / chanreq for subsystem>>
12:00:21.911 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.s.c.c.direct.SessionChannel - Received window adjustment for 2097152 bytes
12:00:21.911 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.s.c.channel.Window$Remote - Increasing by 2097152 up to 2097152
12:00:21.911 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG net.schmizz.concurrent.Promise - Setting <<chan#0 / chanreq for subsystem>> to `SOME`
12:00:21.912 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 9 down to 2097143
12:00:22.165 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.s.c.channel.Window$Local - Consuming by 183 down to 2096969
12:00:22.165 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.sshj.sftp.SFTPEngine - Server version 3
12:00:22.167 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.sshj.sftp.SFTPClient - Opening `/test.xml`
12:00:22.167 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.sshj.sftp.SFTPEngine - Sending Request{1;OPEN}
12:00:22.167 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 30 down to 2097113
12:00:22.168 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.concurrent.Promise - Awaiting <<sftp / 1>>
12:00:22.168 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.s.c.channel.Window$Local - Consuming by 17 down to 2096952
12:00:22.169 [sshj-PacketReader-localhost/127.0.0.1:2222-1740481221911] DEBUG net.schmizz.sshj.sftp.PacketReader - Received HANDLE packet
12:00:22.169 [sshj-PacketReader-localhost/127.0.0.1:2222-1740481221911] DEBUG net.schmizz.concurrent.Promise - Setting <<sftp / 1>> to `Buffer [rpos=5, wpos=13, size=13]`
12:00:22.170 [ScalaTest-run-running-SftpTest] DEBUG net.schmizz.sshj.sftp.SFTPEngine - Sending Request{2;WRITE}
12:00:22.174 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 2064345
12:00:22.176 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 2031577
12:00:22.177 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1998809
12:00:22.177 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.s.c.c.direct.SessionChannel - Got EOF
12:00:22.177 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.s.c.c.direct.SessionChannel - Got chan request for `exit-status`
12:00:22.177 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.s.c.c.direct.SessionChannel - Got close
12:00:22.178 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1966041
12:00:22.178 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1933273
12:00:22.179 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1900505
12:00:22.180 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1867737
12:00:22.181 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1834969
12:00:22.182 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1802201
12:00:22.183 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1769433
12:00:22.184 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1736665
12:00:22.184 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1703897
12:00:22.185 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1671129
12:00:22.186 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1638361
12:00:22.187 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1605593
12:00:22.188 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1572825
12:00:22.188 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1540057
12:00:22.189 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1507289
12:00:22.189 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1474521
12:00:22.190 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1441753
12:00:22.190 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1408985
12:00:22.191 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1376217
12:00:22.191 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1343449
12:00:22.192 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1310681
12:00:22.192 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1277913
12:00:22.193 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1245145
12:00:22.193 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1212377
12:00:22.194 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1179609
12:00:22.194 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1146841
12:00:22.194 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1114073
12:00:22.195 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1081305
12:00:22.195 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1048537
12:00:22.195 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 1015769
12:00:22.195 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 983001
12:00:22.196 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 950233
12:00:22.196 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 917465
12:00:22.196 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 884697
12:00:22.196 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 851929
12:00:22.196 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 819161
12:00:22.196 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 786393
12:00:22.196 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 753625
12:00:22.197 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 720857
12:00:22.197 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 688089
12:00:22.197 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 655321
12:00:22.197 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 622553
12:00:22.197 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 589785
12:00:22.197 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 557017
12:00:22.198 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 524249
12:00:22.198 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 491481
12:00:22.198 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 458713
12:00:22.198 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 425945
12:00:22.198 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 393177
12:00:22.198 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 32768 down to 360409
12:00:22.199 [ScalaTest-run-running-SftpTest] DEBUG n.s.s.c.channel.Window$Remote - Consuming by 27462 down to 332947
12:00:22.199 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.s.c.c.direct.SessionChannel - Sending close
12:00:22.199 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG n.s.sshj.connection.ConnectionImpl - Forgetting `session` channel (#0)
12:00:22.199 [sshj-Reader-localhost/127.0.0.1:2222-1740481221804] DEBUG net.schmizz.concurrent.Promise - Setting <<chan#0 / close>> to `SOME`

If you need more information let me know!
Thanks in advance!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions