diff --git a/src/client.c b/src/client.c
index 64ce5de..36685a8 100644
--- a/src/client.c
+++ b/src/client.c
@@ -335,8 +335,16 @@ static void ssh_client_connection_callback(ssh_session session){
 	switch(session->session_state){
 		case SSH_SESSION_STATE_NONE:
 		case SSH_SESSION_STATE_CONNECTING:
+            break;
 		case SSH_SESSION_STATE_SOCKET_CONNECTED:
-			break;
+          /*
+           * If SSH-1 disabled then we can send the banner immediately and
+           * save a round-trip.
+           */
+          if (!session->opts.ssh1) {
+            ssh_send_banner(session, 0);
+          }
+          break;
 		case SSH_SESSION_STATE_BANNER_RECEIVED:
 		  if (session->serverbanner == NULL) {
 		    goto error;
@@ -381,7 +389,9 @@ static void ssh_client_connection_callback(ssh_session session){
 #endif
 		  ssh_packet_set_default_callbacks(session);
 		  session->session_state=SSH_SESSION_STATE_INITIAL_KEX;
-		  ssh_send_banner(session, 0);
+          if (session->opts.ssh1) {
+            ssh_send_banner(session, 0);
+          }
 		  set_status(session, 0.5f);
 		  break;
 		case SSH_SESSION_STATE_INITIAL_KEX:
