diff --git a/cli-session.c b/cli-session.c
index c2e4863ba418bd42fb16c7f744f40f104e061f54..8cd75f8386bf6ebf87709dbb7636b46805e8aeb4 100644
--- a/cli-session.c
+++ b/cli-session.c
@@ -100,6 +100,7 @@ void cli_connected(int result, int sock, void* userdata, const char *errstring)
 		dropbear_exit("Connect failed: %s", errstring);
 	}
 	ses.sock_in = ses.sock_out = sock;
+	update_channel_prio();
 }
 
 void cli_session(int sock_in, int sock_out, struct dropbear_progress_connection *progress) {
diff --git a/common-session.c b/common-session.c
index 6ca7f547977f02f9e076300fc54471714d56b047..d95c2eea33fbb60d4c27b46406c9c54a510b676f 100644
--- a/common-session.c
+++ b/common-session.c
@@ -552,6 +552,11 @@ void update_channel_prio() {
 
 	TRACE(("update_channel_prio"))
 
+	if (ses.sock_out < 0) {
+		TRACE(("leave update_channel_prio: no socket"))
+		return;
+	}
+
 	new_prio = DROPBEAR_PRIO_BULK;
 	for (i = 0; i < ses.chansize; i++) {
 		struct Channel *channel = ses.channels[i];