Bugs item #2788319, was opened at 2009-05-07 13:32
Message generated for change (Tracker Item Submitted) made by samikujala
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=703942&aid=2788319&group_id=125852

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: API
Group: None
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: SKujala (samikujala)
Assigned to: Nobody/Anonymous (nobody)
Summary: Problems with remote port forwarding

Initial Comment:
Out of curiosity (and to educate myself) I decided to try and set up remote 
port forwarding with using Libssh2. Something along the lines of 

ssh -nNT -R 5900:localhost:5900 u...@host

This turned out to be a non-trivial task due to my little experience with 
libssh2 and sparse documentation. To explain my findings, let's call my end 
host A, and the remote end host B. I wish to connect from host A to host B, 
after which the ssh daemon in host B is to establish remote port forwarding 
back to host A.

I was successful, but it appears that there are some bugs in channel.c file, 
which I address in the attached patch file. The way I establish the remote port 
forwarding, 'tcpip-forward' channel is as follows:


(assume the connection and session are established and user authentication is 
successful)

listener = libssh2_channel_forward_listen(session, 5900);
channel = libssh2_channel_forward_accept(listener);


1. as packet_queue_listener() in packet.c successfully allocates and queues the 
incoming connection from host B into a new channel, _libssh2_packet_add() in 
packet.c fails to add the incoming packets into the proper channel, as 
_libssh2_channel_locate() in channel.c fails to locate the previously allocate 
channel. 

If I understand correctly, this is because _libssh2_channel_locate() tries to 
locate the channels only from the current session, whereas the channel it is 
looking for is in the queue of incoming connections.

I fixed this by changing _libssh2_packet_add() to iterate not only through the 
current session, but also through the queues contained in the listeners 
contained in the current session.


2. channel_forward_accept() in channel.c fails to break from the do-while loop 
because the condition to end the do-while loop is wrong. The condition (rc > 0) 
should read (rc < 0).



Please review my attached patch and if deemed correct, commit it into the tree.


Best regards,

Sami

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=703942&aid=2788319&group_id=125852

------------------------------------------------------------------------------
The NEW KODAK i700 Series Scanners deliver under ANY circumstances! Your
production scanning environment may not be a perfect world - but thanks to
Kodak, there's a perfect scanner to get the job done! With the NEW KODAK i700
Series Scanner you'll get full speed at 300 dpi even with all image 
processing features enabled. http://p.sf.net/sfu/kodak-com
_______________________________________________
libssh2-devel mailing list
libssh2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libssh2-devel

Reply via email to