Bugs item #2788319, was opened at 2009-05-07 12:32 Message generated for change (Comment added) made by bagder 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: Daniel Stenberg (bagder) 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 ---------------------------------------------------------------------- >Comment By: Daniel Stenberg (bagder) Date: 2009-05-07 21:36 Message: Thanks for your patch. Can you please tell me what that second part of the patch is supposed to fix? It will bail out the _libssh2_transport_read() loop in channel_forward_accept() if it returns something >= 0 and I would like to know what you think that's a good idea! ---------------------------------------------------------------------- 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