Ticket #76 (closed defect)
libssh2_poll detects data on channel, but no data available
|Reported by:||anonymous||Owned by:||bagder|
I've got a small home-brewed SSH client and I've encountered a problem in the library with libssh2_poll() when checking for data on a channel.
Simply put, here's the setup. I have a thread that polls for data on a channel every few usec. When the libssh2_poll function detects data available to be read on the channel I'm interested in, I immediately try to read from that channel. Trouble is, if its a small piece of data that I'm expecting, the read fails while subsequent polls still think that there is data there.
So In my SSH client with a pty, I do something like hit the "z" key. This should send a single character over the lines to the remote SSH server plus any SSH/TCP/IP.... overhead. Now the remote SSH server will echo back the key plus any additional terminal formatting.
As soon as I hit my "z" key, libssh2_poll alerts me that data is available to be read from the channel, but attempting to read from the channel doesn't read any data...polling keeps saying theres data, I read nothing... repeat a lot of times...
If I keep hitting keystrokes, eventually the channel read picks up the data. So it seems like libssh2 holds onto small packets for some reason.