[ https://issues.apache.org/jira/browse/SSHD-85?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16048266#comment-16048266 ]
Bill Kuker commented on SSHD-85: -------------------------------- Here is a more minimal reproduction... https://github.com/bkuker/sshd-85 It creates an SSH Server, an SSH Client, and a Test Server. The Test server writes a known string to the client and closes the connection. There are 3 tests: readFastPF: Connects to the test server via a port forward and reads everything at once. Always works. readSlowDirect: Connects to the test server directly (NO port forward) and reads the data in two smaller buffers with a 50ms delay in between. Always works. readSlowPF: Connects to the test server via a port forward and reads the data in two smaller buffers with a 50ms delay in between. (Nearly) always fails. The problem is that the when the test server closes the socket Apache SSH closes the port forward *despite there being data left to send to the client*. > Port Forward closes connection before all bytes are sent > -------------------------------------------------------- > > Key: SSHD-85 > URL: https://issues.apache.org/jira/browse/SSHD-85 > Project: MINA SSHD > Issue Type: Bug > Affects Versions: 0.2.0 > Environment: Windows or Linux, JSCH Client > Reporter: Bill Kuker > Assignee: Guillaume Nodet > Attachments: MINA-Port-Forward.txt, SSHD-85_testcase.txt > > > When I am forwarding connections from a Client to a port on the SSH Server > through the SSH Client to a Remote Server on the SSH Client network: > Client --(a)---> SSH Server <===[ssh]===> SSH Client --(b)--> Remote Server > if the Remote Server sends some bytes and immediately closes the connection > (b) to the SSH Client the SSH Server will close the connection (a) to the > client before all of those bytes are sent to the SSH Client. > This is probably a race condition. If I run one connection at a time it works > 99% of the time, but if I use a load generator (a completely separate > process) to max out all 4 cores I can make it fail (I do not get all the > bytes from Remote Server at Client) 99% of the time. Also by running about > 100 simultaneous requests I get maybe a 20% failure rate. > If the Remote Server is something like Telnet (Open for a while, user closes > connection) everything seems fine, but the the Remote Server is a web server > with keep alive disabled, and many small requests are made, many images, > htmls, css are truncated. > Sorry I can't be more precise with this, but I hope anyone else having a > similar trouble can help fill out this bug with details. -- This message was sent by Atlassian JIRA (v6.4.14#64029)