At the head of _libssh2_channel_read(), a while loop calls _libssh2_transport_read(), after this comment:
> Process all pending incoming packets in all states in order to "even > out" the network readings. Tests prove that this way produces faster > transfers. That makes sense for file transfers where the server will wait for an acknowledgement, but in the case of a terminal session that's firehosing data at us faster than we can process, that winds up filling up all available memory--instead of just the network buffer. I changed that code to read_packet = _libssh2_list_first(&session->packets); while ( read_packet == NULL && rc > 0 ) { rc = _libssh2_transport_read(session); read_packet = _libssh2_list_first(&session->packets); } and it appears to fix this problem. Maybe there should be a channel or session setting, choosing between the two? Or a limit on the number of packets the session will buffer? Thanks! -Dave _______________________________________________ libssh2-devel http://cool.haxx.se/cgi-bin/mailman/listinfo/libssh2-devel