mina-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Abhishek Ganguly (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (SSHD-269) Random Data corruption with Remote Port Forwarding
Date Sat, 25 Jan 2014 06:04:38 GMT

    [ https://issues.apache.org/jira/browse/SSHD-269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13881700#comment-13881700

Abhishek Ganguly commented on SSHD-269:

I dont know much of junit, but i am working on it and i hope to produce the test soon. until
then the previously attached dot net code stands valid. it fails with mina-sshd but passes
with standard ubuntu server ssh. also please note that only the stream from ssh-client to
ssh-server gets corrupted that too only with remote-port-forwarded connections, and it happens
random but often. all other scenarios are fine.

you said your test passed. could you please share your test code, so that i may also verify
with the same. it will help me check the sanity of my environment. i would also get a direction
with which to approach.


> Random Data corruption with Remote Port Forwarding
> --------------------------------------------------
>                 Key: SSHD-269
>                 URL: https://issues.apache.org/jira/browse/SSHD-269
>             Project: MINA SSHD
>          Issue Type: Bug
>    Affects Versions: 0.9.0
>         Environment: WIN7 + JDK7, Centos+OpenJDK7
>            Reporter: Abhishek Ganguly
>            Assignee: Guillaume Nodet
>            Priority: Critical
>         Attachments: Module1.vb
> A TCP connection set up over Remote Port Forwarding feature randomly garbles the data.
On further testing I found that the TCP stream from remote-to-local is unaffected whereas
the local-to-remote is bad.
> To reproduce,
> 1. setup a basic sshd. listen on port 22. call the host 'remote'.
> 2. on 'local' machine set up putty (ssh client) as follows:
> 2.1 Host name: remote
> 2.2 Port: 22
> 2.3 Connection-SSH: Dont start a shell or command at all
> 2.4 Connection-SSH-tunnels:: source-port: remote-port, destination: localhost:localport
> 2.5 Connection type: Remote [Click ADD]
> 2.6 Open connection
> this makes a tunnel from remoteserver:remoteport to localhost:localport
> 3. set up a basic TCP server on localhost:localport
> 3.1 start serving predictable byte arrays. {0000111112222....}
> 4. set up a basic TCP client. connect to remoteHost:remotePort
> 4.1 the connection automatically gets forwarded to localhost:localport where my own TCP
server is running. hence a TCP connection is setup over the tunnel.
> 5. start consuming the byte array from server.
> 5.1 match the incoming bytes to expected sequence.
> you will see that the sequence is oftentimes garbled.
> 6. let the client send a similar predictable byte stream to server.
> 6.1 from client take OutputStream from the socket and push a long but predictable byte
array in it.
> 6.2 from server get InputStream out of socket and read the bytes
> you will see that irrespective of array length, all the bytes are safely delivered.

This message was sent by Atlassian JIRA

View raw message