Home » U++ Library support » U++ MT-multithreading and servers » SSH package for U++ (A feature-rich ilbssh2 wrapper for Ultimate++)
Re: SSH package for U++ [message #50174 is a reply to message #50160] |
Sun, 12 August 2018 12:51   |
Oblivion
Messages: 1226 Registered: August 2007
|
Senior Contributor |
|
|
Hello Mirek,
I've commited the first party of updates.
A summary:
- Ssh, SshSession, and SFtp classes are refactored.
- Non-blocking mode and multithreaded methods are removed.
- The package now uses a "pseudo-blocking" technique, similar to TcpSocket's.
- Accordingly, the Ssh::Cmd and Ssh::ComplexCmd methods are removed in favor of Ssh::Run and Ssh::Do() commands.
Run() command is the new command execution encgine. It'll hopefully take care of the possible thread safety problems.
Do() method is protected by a single static mutex, and should be thread-safe. Multithreaded execution should be possible.
- Abort mechanism refactored.
- Sftp::Read and SFtp::Write methods are further simplified.
- SFtp::WhenProgress method is removed in favour of GetDone() method (as the esisting WhenProgress method is now pretty useless).
- SshChannel and its derivatives are currently disabled. They will be re-added gradually.
I believe the new code can be easily maintained and changed in the future. (if we plan to take advantage of coroutines, etc.)
As for the SFtpStream and its variants: They are quite handy indeed. Thanks!
Quote:
I would like to learn a bit about this. Can you give me some link(s)?
Sorry, I should've phrase my words better: SSH and its relevant protocols are just fine. The problem I mentioned arises with implementations (on server or client side).
As you know, ssh is inherently an asynchronous communication protocol relying on channel multiplexing. So both servers and clients need to keep track of every package they sent and received.
In some cases where multiple channels are requested at the same time (be it in non-blocking-ST or in MT) channel requests fail with "Failed waiting for channel success" message.
The reason seems to be that SSH_CHANNEL_SUCCESS message for some channels are either somehow get lost in the process or not delivered in due time.
(Yet we get a valid handle for the requested channel from libssh2. So while we got a valid channel handle in the end, the subsequent calls would still fail.)
This is possibly a result of a race condition (at implementaion level).
I wrote that locking/unlocking mechanism as a workaround for this issue. Basically it functioned as a crude bu effective "WouldBlock()".
It allowed us to maintain the non-blocking behaviour while sequentially initalizing the requested channels.
Best regards,
Oblivion
Github page: https://github.com/ismail-yilmaz
Bobcat the terminal emulator: https://github.com/ismail-yilmaz/Bobcat
[Updated on: Sun, 12 August 2018 12:58] Report message to a moderator
|
|
|
 |
|
SSH package for U++
By: Oblivion on Tue, 14 November 2017 21:59
|
 |
|
Re: SSH package for U++
By: Oblivion on Fri, 17 November 2017 22:15
|
 |
|
Re: SSH package for U++
By: Oblivion on Sat, 18 November 2017 15:57
|
 |
|
Re: SSH package for U++
By: Oblivion on Sun, 19 November 2017 18:21
|
 |
|
Re: SSH package for U++
By: Oblivion on Tue, 21 November 2017 00:38
|
 |
|
Re: SSH package for U++
By: koldo on Thu, 23 November 2017 09:07
|
 |
|
Re: SSH package for U++
By: Oblivion on Fri, 24 November 2017 21:03
|
 |
|
Re: SSH package for U++
|
 |
|
Re: SSH package for U++
By: Oblivion on Sun, 26 November 2017 09:59
|
 |
|
Re: SSH package for U++
|
 |
|
Re: SSH package for U++
|
 |
|
Re: SSH package for U++
By: Oblivion on Fri, 01 December 2017 14:35
|
 |
|
Re: SSH package for U++
|
 |
|
Re: SSH package for U++
By: Oblivion on Sat, 02 December 2017 10:44
|
 |
|
Re: SSH package for U++
|
 |
|
Re: SSH package for U++
|
 |
|
Re: SSH package for U++
By: Oblivion on Mon, 04 December 2017 22:46
|
 |
|
Re: SSH package for U++
|
 |
|
Re: SSH package for U++
|
 |
|
Re: SSH package for U++
By: Oblivion on Tue, 19 December 2017 14:27
|
 |
|
Re: SSH package for U++
By: Oblivion on Tue, 19 December 2017 14:44
|
 |
|
Re: SSH package for U++
By: Oblivion on Sun, 07 January 2018 22:09
|
 |
|
Re: SSH package for U++
By: koldo on Mon, 08 January 2018 08:27
|
 |
|
Re: SSH package for U++
By: Oblivion on Tue, 09 January 2018 23:15
|
 |
|
Re: SSH package for U++
By: koldo on Wed, 10 January 2018 08:53
|
 |
|
Re: SSH package for U++
By: Oblivion on Fri, 19 January 2018 14:18
|
 |
|
Re: SSH package for U++
By: Oblivion on Sun, 21 January 2018 12:18
|
 |
|
Re: SSH package for U++
By: koldo on Sun, 21 January 2018 16:53
|
 |
|
Re: SSH package for U++
By: Oblivion on Sun, 28 January 2018 12:13
|
 |
|
Re: SSH package for U++
By: Oblivion on Mon, 02 April 2018 23:27
|
 |
|
Re: SSH package for U++
By: Oblivion on Sat, 07 April 2018 16:25
|
 |
|
Re: SSH package for U++
By: Oblivion on Sun, 15 April 2018 00:39
|
 |
|
Re: SSH package for U++
By: Oblivion on Sat, 21 April 2018 08:12
|
 |
|
Re: SSH package for U++
|
 |
|
Re: SSH package for U++
|
 |
|
Re: SSH package for U++
By: mirek on Tue, 10 July 2018 14:37
|
 |
|
Re: SSH package for U++
By: mirek on Tue, 10 July 2018 15:38
|
 |
|
Re: SSH package for U++
By: mirek on Tue, 10 July 2018 15:42
|
 |
|
Re: SSH package for U++
|
 |
|
Re: SSH package for U++
By: mirek on Tue, 31 July 2018 11:07
|
 |
|
Re: SSH package for U++
By: Oblivion on Fri, 03 August 2018 17:34
|
 |
|
Re: SSH package for U++
By: mirek on Fri, 03 August 2018 18:03
|
 |
|
Re: SSH package for U++
By: Oblivion on Fri, 03 August 2018 18:44
|
 |
|
Re: SSH package for U++
By: Oblivion on Tue, 07 August 2018 23:32
|
 |
|
Re: SSH package for U++
By: mirek on Wed, 08 August 2018 10:56
|
 |
|
Re: SSH package for U++
By: Oblivion on Wed, 08 August 2018 11:22
|
 |
|
Re: SSH package for U++
By: mirek on Wed, 08 August 2018 13:28
|
 |
|
Re: SSH package for U++
By: Oblivion on Wed, 08 August 2018 14:16
|
 |
|
Re: SSH package for U++
By: mirek on Thu, 09 August 2018 11:54
|
 |
|
Re: SSH package for U++
By: mirek on Thu, 09 August 2018 12:00
|
 |
|
Re: SSH package for U++
By: Oblivion on Thu, 09 August 2018 16:24
|
 |
|
Re: SSH package for U++
By: mirek on Thu, 09 August 2018 16:49
|
 |
|
Re: SSH package for U++
By: Oblivion on Thu, 09 August 2018 17:03
|
 |
|
Re: SSH package for U++
By: Oblivion on Thu, 09 August 2018 17:59
|
 |
|
Re: SSH package for U++
By: mirek on Thu, 09 August 2018 18:35
|
 |
|
Re: SSH package for U++
By: Oblivion on Sun, 12 August 2018 12:51
|
 |
|
Re: SSH package for U++
By: Oblivion on Thu, 30 August 2018 07:27
|
 |
|
Re: SSH package for U++
By: mirek on Thu, 30 August 2018 09:04
|
 |
|
Re: SSH package for U++
By: Oblivion on Fri, 31 August 2018 00:12
|
 |
|
Re: SSH package for U++
By: Oblivion on Sun, 02 September 2018 21:59
|
 |
|
Re: SSH package for U++
By: Oblivion on Wed, 31 October 2018 11:00
|
 |
|
Re: SSH package for U++
By: Oblivion on Sun, 04 November 2018 19:55
|
 |
|
Re: SSH package for U++
By: Oblivion on Fri, 22 March 2019 17:39
|
Goto Forum:
Current Time: Mon Aug 25 02:28:49 CEST 2025
Total time taken to generate the page: 0.05811 seconds
|