1
0
mirror of https://github.com/libssh2/libssh2.git synced 2025-07-29 13:01:14 +03:00

Modify the code to truely support non-blocking. Propogate the EAGAIN error

all the way up to the user interface.  All code modules bug sftp.c have
been completed.

Functions that return an "int", or similar return LIBSSH2CHANNEL_EAGAIN to
indicate some part of the call would block, in non-blocking mode.

Functions that return a structure, like "LIBSSH2_CHANNEL *", return NULL
and set the libssh2 error.  The error can be obtained with either
libssh2_session_last_error() or libssh2_session_last_errno().  Either of
these will return the error code of LIBSSH2_ERROR_EAGAIN if the
call would block, in non-blocking mode.

The current state of a function and some variable are keep in the
structures so that on the next call the operation that would block can
be retried again with the same data.
This commit is contained in:
James Housley
2007-06-06 12:34:06 +00:00
parent 9896c291e4
commit 4b8db8c1ab
38 changed files with 6982 additions and 4403 deletions

View File

@ -1,6 +1,6 @@
.\" $Id: libssh2_session_startup.3,v 1.2 2007/01/02 05:47:00 gusarov Exp $
.\" $Id: libssh2_session_startup.3,v 1.3 2007/06/06 12:34:07 jehousley Exp $
.\"
.TH libssh2_session_startup 3 "14 Dec 2006" "libssh2 0.15" "libssh2 manual"
.TH libssh2_session_startup 3 "1 June 2007" "libssh2 0.15" "libssh2 manual"
.SH NAME
libssh2_session_startup - begin transport layer
.SH SYNOPSIS
@ -11,6 +11,27 @@ int libssh2_session_startup(LIBSSH2_SESSION *session, int socket);
Begin transport layer protocol negotiation with the connected host.
.SH RETURN VALUE
0 on success, \-1 on failure
.SH ERRORS
LIBSSH2_ERROR_SOCKET_NONE
Bad socket provided.
.br
LIBSSH2_ERROR_BANNER_SEND
Error sending banner to remote host.
.br
LIBSSH2_ERROR_KEX_FAILURE
Unable to exchange encryption keys.
.br
LIBSSH2_ERROR_SOCKET_SEND
Unable to ask for ssh-userauth service.
.br
LIBSSH2_ERROR_SOCKET_DISCONNECT
Connection was lost.
.br
LIBSSH2_ERROR_PROTO
Invalid response received from server.
.br
LIBSSH2_ERROR_EAGAIN
Marked for non-blocking I/O but the call would block.
.SH "SEE ALSO"
.BI libssh2_session_free(3),
.BI libssh2_session_init(3)