The current code is available at http://www.thehousleys.net/ 
libssh2_NB_initial.zip

I am nearly done with the code.  Right now, as far as I know, all the  
routines in session, packet, kex, userauth, publickey and scp  
routines are fully non-blocking capable.  All the channel routines  
except for libssh2_channel_read_ex() are done.  That one is a little  
complex and I keep looking at it and putting it off.  In a couple of  
routings I found that "goto" was the best solution.

There have been no significant changes to the API yet.  I added:
LIBSSH2_API int libssh2_channel_handle_extended_data2(LIBSSH2_CHANNEL  
*channel, int ignore_mode)
LIBSSH2_API int libssh2_session_last_errno(LIBSSH2_SESSION *session)

libssh2_channel_handle_extended_data2() is a non-blocking version of  
libssh2_channel_handle_extended_data()

libssh2_session_last_errno() make it much easier to check the last  
error if you only care about the error number.  This is needed for  
calls like libssh2_channel_open_ex() that return a channel  
structure.  libssh2_channel_open_ex() no set the error to  
LIBSSH2_ERROR_EAGAIN and return NULL.  So in non-blocking a code  
segment like this could be used:

channel = libssh2_channel_open_ex(session, ......);
if (!channel) {
     if (libssh2_session_last_errno(session) != LIBSSH2_ERROR_EAGAIN) {
         /* previous call set libssh2_session_last_error(), pass it  
through */
         LIBSSH2_FREE(session, session->scpSend_command);
         return NULL;
     }
     else if (libssh2_session_last_errno(session) ==  
LIBSSH2_ERROR_EAGAIN) {
         libssh2_error(session, LIBSSH2_ERROR_EAGAIN, "Would block  
starting up channel", 0);
         return NULL;
     }
}

Still to do is libssh2_channel_read_ex() and the sftp subsystem.  The  
last part will be the documentation

Jim

--

/"\   ASCII Ribbon Campaign  .
\ / - NO HTML/RTF in e-mail  .
  X  - NO Word docs in e-mail .
/ \ -----------------------------------------------------------------
[EMAIL PROTECTED]      http://www.FreeBSD.org     The Power to Serve
[EMAIL PROTECTED]  http://www.TheHousleys.net
---------------------------------------------------------------------
In theory there is no difference between theory and practice.
In practice there is no similarity.
       -- From the "I wish I'd said that" archives.



-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
libssh2-devel mailing list
libssh2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libssh2-devel

Reply via email to