From 1847fb2373f6cc5e95d36efa4e0b260fb1337c3c Mon Sep 17 00:00:00 2001 From: Aris Adamantiadis Date: Tue, 22 Nov 2005 23:15:31 +0000 Subject: added bases for nonblocking packet sending and receiving. packet_send and packet_read may return SSH_AGAIN if the session is nonblocking and there is not enough data to be read. I also added a socket buffering through session->in_socket_buffer. It is more low-level than the packet buffer. I should rename in_buffer with in_packet_buffer. There is still work to do with the socket status, (opened, error, closed, ...) and much more work to extend the nonblocking to session opening, messages sending and such. I find the switch(session->packet_state) solution very nice (especially when the nonblocking function may have 10 differents states, like in a connection.) git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@49 7dcaeef0-15fb-0310-b436-a5af3365683c --- include/libssh/priv.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'include/libssh/priv.h') diff --git a/include/libssh/priv.h b/include/libssh/priv.h index c2a1f86..e587e1e 100644 --- a/include/libssh/priv.h +++ b/include/libssh/priv.h @@ -304,7 +304,7 @@ struct ssh_session { not block */ int data_to_write; int data_except; - int blocking; // functions should not block + int blocking; // functions should block STRING *banner; /* that's the issue banner from the server */ @@ -315,6 +315,14 @@ struct ssh_session { BUFFER *in_buffer; PACKET in_packet; BUFFER *out_buffer; + + BUFFER *out_socket_buffer; + BUFFER *in_socket_buffer; + + /* the states are used by the nonblocking stuff to remember */ + /* where it was before being interrupted */ + int packet_state; + KEX server_kex; KEX client_kex; BUFFER *in_hashbuf; -- cgit