fixed a bug where channel_poll could wait forever for a packet already in socket buffer.

Inc'ed libtool numbers


git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@184 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
Aris Adamantiadis
2008-10-29 00:25:31 +00:00
parent 4a3554b2fa
commit 3b25cbf134
5 changed files with 19 additions and 31 deletions

View File

@@ -13,8 +13,8 @@ AM_MAINTAINER_MODE
# (Interfaces removed: CURRENT++, AGE=0, REVISION=0)
# (Interfaces added: CURRENT++, AGE++, REVISION=0)
# (No interfaces changed: REVISION++)
LIBSSH_CURRENT=2
LIBSSH_AGE=0
LIBSSH_CURRENT=3
LIBSSH_AGE=1
LIBSSH_REVISION=0
AC_SUBST(LIBSSH_CURRENT)
AC_SUBST(LIBSSH_AGE)

View File

@@ -212,18 +212,6 @@ socket_t ssh_connect_host(SSH_SESSION *session, const char *host, const char
/** \addtogroup ssh_session
* * @{ */
/** \internal
* \brief polls the stream for activity
* \param session ssh session
* \param write value pointed to set to 1 if it is possible to write
* \param except value pointed to set to 1 if there is an exception
* \return 1 if it is possible to read, 0 otherwise, -1 on error
*/
int ssh_fd_poll(SSH_SESSION *session, int *write, int *except){
return ssh_socket_poll(session->socket,write,except);
}
/** This functions acts more or less like the select(2) syscall.\n
* There is no support for writing or exceptions.\n
* \brief wrapper for the select syscall

View File

@@ -170,7 +170,7 @@ int ssh_handle_packets(SSH_SESSION *session){
int w,err,r,i=0;
enter_function();
do {
r=ssh_fd_poll(session,&w,&err);
r=ssh_socket_poll(session->socket,&w,&err);
if(r<=0){
leave_function();
return r; // error or no data available

View File

@@ -414,7 +414,7 @@ int ssh_socket_poll(struct socket *s, int *write, int *except){
*except=s->data_except;
*write=s->data_to_write;
leave_function();
return s->data_to_read;
return s->data_to_read || (buffer_get_rest_len(s->in_buffer)>0);
}
#endif
@@ -454,7 +454,7 @@ int ssh_socket_poll(struct socket *s, int *write, int *except){
*except=s->data_except;
*write=s->data_to_write;
leave_function();
return s->data_to_read;
return s->data_to_read || (buffer_get_rest_len(s->in_buffer)>0);
}
#endif
@@ -491,7 +491,7 @@ int ssh_socket_nonblocking_flush(struct socket *s){
}
buffer_pass_bytes(s->out_buffer,w);
/* refresh the socket status */
ssh_fd_poll(session,&can_write,&except);
ssh_socket_poll(session->socket,&can_write,&except);
}
if(buffer_get_rest_len(s->out_buffer)>0){
leave_function();