aboutsummaryrefslogtreecommitdiff
path: root/libssh/session.c
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2005-10-26 16:59:16 +0000
committerAris Adamantiadis <aris@0xbadc0de.be>2005-10-26 16:59:16 +0000
commitc53b6b907ce7ccaf720777c18eed3eea46807bb7 (patch)
tree526f19bfe0a15e1711d42f8c9cdfc08c3aea3576 /libssh/session.c
parentbef09f8848f60a2adfac7ef4a522c83fe184a854 (diff)
downloadlibssh-c53b6b907ce7ccaf720777c18eed3eea46807bb7.tar.gz
libssh-c53b6b907ce7ccaf720777c18eed3eea46807bb7.tar.xz
libssh-c53b6b907ce7ccaf720777c18eed3eea46807bb7.zip
resolved the infinite loop on exit (thanks giga for the hint).
I resolved a memory alloc problem into hmac_init (same kind that the one of md5_init). It's still saying there is a memory corruption. Since the memory corruption happens before it is found (in malloc()), I'll have to run valgrind to locate it. git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@46 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/session.c')
-rw-r--r--libssh/session.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/libssh/session.c b/libssh/session.c
index 0d75c5a7..016c127b 100644
--- a/libssh/session.c
+++ b/libssh/session.c
@@ -112,6 +112,21 @@ void ssh_set_fd_except(SSH_SESSION *session){
session->data_except=1;
}
+/* looks if there is data to read on the socket and parse it. */
+int ssh_handle_packets(SSH_SESSION *session){
+ int w,err,r;
+ do {
+ r=ssh_fd_poll(session,&w,&err);
+ if(r<=0)
+ return r; // error or no data available
+ /* if an exception happened, it will be trapped by packet_read() */
+ if(packet_read(session)||packet_translate(session))
+ return -1;
+ packet_parse(session);
+ } while(r>0);
+ return r;
+}
+
int ssh_get_status(SSH_SESSION *session){
int ret=0;
if(session->closed)