* The following low level packet routines now fully support non-blocking:
libssh2_sftp_packet_read()
libssh2_sftp_packet_ask()
libssh2_sftp_packet_require()
libssh2_sftp_packet_requirev()
* libssh2_sftp_readdirnb() functions completely in non-blocking mode
* The rest of the routines which call the libssh2_sftp_packet_* routine
loop on a return code of PACKET_EAGAIN. This maintains the current
functionality until they fully support non-blocking
* The state of all function are labeled with either NB-SAFE or NB-UNSAFE,
for those that are know. NB-UNSAFE?? for those that haven't been
examined.
from the server as mandated by the RFC. Not doing so causes an OpenSSH
server to occasionally corrupt (truncate) short files uploaded by scp
(which manifests itself as a failure of test603 in the curl regression
test suite).
libssh2_packet_ask_ex. The purpose of these calls is to clear out any packets
that may have arrived already, so there's no need to poll for more.
(Dan Fandrich)
code:
It's not clear to me whether all the BN_news in _libssh2_rsa_new need to
be cleaned up, too. The OpenSSL docs for RSA_free implies that you don't
need to, and valgrind doesn't complain, so it's probably OK as is.
1 - let libssh2 compile with OpenSSL 0.9.6b. This is due to 'crypt' is found
in one of its header files and EVP_MAX_BLOCK_LENGTH not being found.
2 - The EXEEXT patch is because automake 1.7 doesn't support it, and recent
automakes add it automatically
various stuff if libssh2 was built with debug. If built without debug, the
function does nothing.
2 - configure --enable-debug is now enough to build a debug version (including
picky compiler options)
3 - internally, we no longer need/use #ifdef/#endif around all uses of the
_libssh2_debug() function/macro.
The scp.c example is the first application to test this new debug logging.
blocking way. The channel code is now responsible for enabling/disabling
blocking status and to work with it.
I've also modified indenting and fixed compiler warnings at places, and
added a bunch of new examples in example/simple that I've used to verify that
the code still runs like before.
libssh2_channel_{read|write}nb_ex() and libssh2_sftp_{read|write}nb() are the
four new functions that supposedly work non-blocking.