seeseemelk opened a new issue, #774:
URL: https://github.com/apache/mina-sshd/issues/774

   ### Version
   
   4160b6e3e394ff03f8439fb3202eb7cd7026a659
   
   ### Bug description
   
   The following test results in the exception 
`org.apache.sshd.common.io.WritePendingException: A write operation is already 
pending; cannot write 29 bytes`.
   
   This is regression is present since version 
`4160b6e3e394ff03f8439fb3202eb7cd7026a659` and is still present in `2.15.0`.
   
   (Note: I removed the actual keypair and passphrase that is being used in my 
test.)
   
   The test file is roughly eight megabytes in size.
   
   ```java
   public final class MyTest {
       private static final String FILENAME = "myfile.bin";
   
       private static final String KEYPAIR
               = "keypair_in_base64";
       private static final String PASSPHRASE = "passphrase";
   
       @Test
       void myTest() throws IOException, GeneralSecurityException {
   
           KeyPairResourceLoader loader = 
SecurityUtils.getKeyPairResourceParser();
           Collection<KeyPair> keys = loader.loadKeyPairs(null,
                   null,
                   FilePasswordProvider.of(PASSPHRASE),
                   new BufferedReader(new InputStreamReader(new 
ByteArrayInputStream(Base64.getDecoder().decode(KEYPAIR)))));
           KeyPair keypair = keys.iterator().next();
   
           SshClient sshClient = ClientBuilder.builder()
                   .serverKeyVerifier((session, socketAddress, serverKey) -> 
true)
                   .hostConfigEntryResolver(HostConfigEntryResolver.EMPTY)
                   .build();
           SimpleClient client = SshClient.wrapAsSimpleClient(sshClient);
           sshClient.start();
   
           ClientSession session = client.sessionLogin("localhost", 8235, 
"app", keypair);
   
           String fromLocation = "/src/" + FILENAME;
           String toLocation = "/dest/" + FILENAME;
   
           try (SftpClient sftp = 
SftpClientFactory.instance().createSftpClient(session).singleSessionInstance()) 
{
               try (InputStream input = sftp.read(fromLocation);
                    OutputStream output = sftp.write(toLocation, 
SftpClient.OpenMode.Create, SftpClient.OpenMode.Write)) {
                   IOUtils.copy(input, output);
               }
           }
       }
   }
   ```
   
   ### Actual behavior
   
   It throws the following exception: 
`org.apache.sshd.common.io.WritePendingException: A write operation is already 
pending; cannot write 29 bytes`
   
   ### Expected behavior
   
   The test should pass without errors.
   
   ### Relevant log output
   
   ```Shell
   org.apache.sshd.common.io.WritePendingException: A write operation is 
already pending; cannot write 29 bytes
        at 
org.apache.sshd.common.channel.ChannelAsyncOutputStream.writeBuffer(ChannelAsyncOutputStream.java:110)
        at 
org.apache.sshd.sftp.client.impl.DefaultSftpClient.write(DefaultSftpClient.java:308)
        at 
org.apache.sshd.sftp.client.impl.DefaultSftpClient.send(DefaultSftpClient.java:272)
        at 
org.apache.sshd.sftp.client.impl.SftpInputStreamAsync.sendRequests(SftpInputStreamAsync.java:255)
        at 
org.apache.sshd.sftp.client.impl.SftpInputStreamAsync.doRead(SftpInputStreamAsync.java:195)
        at 
org.apache.sshd.sftp.client.impl.SftpInputStreamAsync.read(SftpInputStreamAsync.java:137)
        at java.base/java.io.InputStream.read(InputStream.java:220)
        at 
org.testcontainers.shaded.org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2314)
        at 
org.testcontainers.shaded.org.apache.commons.io.IOUtils.copy(IOUtils.java:2270)
        at 
org.testcontainers.shaded.org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2291)
        at 
org.testcontainers.shaded.org.apache.commons.io.IOUtils.copy(IOUtils.java:2246)
        at org.apache.sshd.sftp.client.MyTest.myTest(MyTest.java:77)
   ```
   
   ### Other information
   
   The test communicates with OpenSSH_9.2p1 Debian-2, OpenSSL 3.0.8 7 Feb 2023


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org
For additional commands, e-mail: dev-h...@mina.apache.org

Reply via email to