diff --git a/examples/sample.c b/examples/sample.c
index c847635..040a2e1 100644
--- a/examples/sample.c
+++ b/examples/sample.c
@@ -240,7 +240,7 @@ static void select_loop(ssh_session session,ssh_channel channel){
             channels[0]=NULL;
         }
         if(channels[0]){
-            while(channel && channel_is_open(channel) && channel_poll(channel,0)){
+            while(channel && channel_is_open(channel) && channel_poll(channel,0)>0){
                 lus=channel_read_buffer(channel,readbuf,0,0);
                 if(lus==-1){
                     fprintf(stderr, "Error reading channel: %s\n",
@@ -259,7 +259,7 @@ static void select_loop(ssh_session session,ssh_channel channel){
                       return;
                     }
             }
-            while(channel && channel_is_open(channel) && channel_poll(channel,1)){ /* stderr */
+            while(channel && channel_is_open(channel) && channel_poll(channel,1)>0){ /* stderr */
                 lus=channel_read_buffer(channel,readbuf,0,1);
                 if(lus==-1){
                     fprintf(stderr, "Error reading channel: %s\n",
@@ -332,7 +332,7 @@ static void select_loop(ssh_session session,ssh_channel channel){
 				channels[0]=NULL;
 			}
 			if(outchannels[0]){
-				while(channel && channel_is_open(channel) && channel_poll(channel,0)){
+				while(channel && channel_is_open(channel) && channel_poll(channel,0)>0){
 					lus=channel_read(channel,buffer,sizeof(buffer),0);
 					if(lus==-1){
 						fprintf(stderr, "Error reading channel: %s\n",
@@ -351,7 +351,7 @@ static void select_loop(ssh_session session,ssh_channel channel){
                                                     return;
                                                 }
 				}
-				while(channel && channel_is_open(channel) && channel_poll(channel,1)){ /* stderr */
+				while(channel && channel_is_open(channel) && channel_poll(channel,1)>0){ /* stderr */
 					lus=channel_read(channel,buffer,sizeof(buffer),1);
 					if(lus==-1){
 						fprintf(stderr, "Error reading channel: %s\n",
diff --git a/libssh/client.c b/libssh/client.c
index 0d34a8b..805b144 100644
--- a/libssh/client.c
+++ b/libssh/client.c
@@ -227,7 +227,7 @@ int ssh_send_banner(ssh_session session, int server) {
     }
   }
 
-  snprintf(buffer, 128, "%s\r\n", banner);
+  snprintf(buffer, 128, "%s\n", banner);
 
   if (ssh_socket_write(session->socket, buffer, strlen(buffer)) == SSH_ERROR) {
     leave_function();
@@ -645,7 +645,7 @@ void ssh_connection_callback(ssh_session session){
 		case SSH_SESSION_STATE_AUTHENTICATING:
 			break;
 		case SSH_SESSION_STATE_ERROR:
-		  break;
+			goto error;
 		default:
 			ssh_set_error(session,SSH_FATAL,"Invalid state %d",session->session_state);
 	}
diff --git a/libssh/packet1.c b/libssh/packet1.c
index 7a68c12..f7df911 100644
--- a/libssh/packet1.c
+++ b/libssh/packet1.c
@@ -337,6 +337,7 @@ SSH_PACKET_CALLBACK(ssh_packet_smsg_success1){
     return SSH_PACKET_USED;
   } else if(session->session_state==SSH_SESSION_STATE_AUTHENTICATING){
     ssh_auth1_handler(session,type);
+    session->session_state=SSH_SESSION_STATE_AUTHENTICATED;
     return SSH_PACKET_USED;
   } else {
     return ssh_packet_channel_success(session,type,packet,user);
