Daniel Stenberg skrev 3/14/12 11:12 PM:
So we would have to run a libssh2_channel_window_read_ex() loop after
each libssh2_channel_read_ex() loop, and repeat both loops until
libssh2_channel_window_read_ex() returns zero for all channels.

I would do it simpler. I would just do this:

select() on socket

if(readable) {

for(loop over all channels) {

rc = libssh2_channel_read_ex( channel [check index] ...);

...
}
}


Sure, and that's what I did first, but I repeat my concern: What if libssh2_channel_read_ex() reads data from the socket, which turns out to be data for another channel which has already been checked? It will be put aside in the queue and my app wouldn't learn of its existence before the next select() returns, either because of a timeout or other SSH data.

--
Best Regards,
Tom Weber
Cryptzone Group AB
_______________________________________________
libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel

Reply via email to