[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
timeout in ssh_channel_accept
[Thread Prev] | [Thread Next]
- Subject: timeout in ssh_channel_accept
- From: Oleksandr Shneyder <oleksandr.shneyder@xxxxxxxxxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Thu, 18 Nov 2010 12:21:32 +0100
- To: libssh@xxxxxxxxxx
Hello libssh developers, I have found a code in channels.c, function static ssh_channel ssh_channel_accept(ssh_session session, int channeltype, int timeout_ms) : for (t = timeout_ms; t >= 0; t -= 50) { ................... #ifdef _WIN32 Sleep(50); /* 50ms */ #else nanosleep(&ts, NULL); #endif } it make this function to sleep 50ms even if timeout_ms is 0. f.e, I want to develop application which open reverse tunnel: loop { ssh_channel newChan=channel_forward_accept(my_ssh_session,0); if(newChan) { newSocket= connect to server } ssh_select( ...... ) } In this case I calling function "channel_forward_accept" with timeout=0. I don't want this function to block execution of my thread. As result if I starting scp process over this tunnel, it is many times slower as scp over tunnel opened with "ssh -R". I attached a tiny patch, that make ssh_channel_accept not to wait 50 ms if timeout_ms is 0. Can you please accept it? With this patch my reverse tunnel created with libssh is as fast as tunnel created with "ssh -R". regards, alex -- Oleksandr Shneyder Dipl. Informatik X2go Core Developer Team email: oleksandr.shneyder@xxxxxxxxxxxxxxxxx web: www.obviously-nice.de --> X2go - everywhere@home
--- channels.c.orig 2010-11-18 11:57:56.457625033 +0100 +++ channels.c 2010-11-18 11:52:22.433612780 +0100 @@ -1657,11 +1657,13 @@ iterator = iterator->next; } } + if(t>0){ #ifdef _WIN32 Sleep(50); /* 50ms */ #else nanosleep(&ts, NULL); #endif + } } return NULL;
Attachment:
signature.asc
Description: OpenPGP digital signature
Re: timeout in ssh_channel_accept | Andreas Schneider <asn@xxxxxxxxxxxx> |