summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2014-08-13 21:48:47 +0800
committerMatt Johnston <matt@ucc.asn.au>2014-08-13 21:48:47 +0800
commit6bedc2213e48379c194ef1dbd5d3bd9fc192076d (patch)
treead80ae1d6be88d9892ecf206c174162c6755af64
parentdd8b417d5898f1da9f8c457e2ad66208cf716adc (diff)
downloaddropbear-6bedc2213e48379c194ef1dbd5d3bd9fc192076d.tar.gz
Don't send SSH_MSG_UNIMPLEMENTED for keepalive responses
-rw-r--r--cli-session.c2
-rw-r--r--common-session.c5
-rw-r--r--session.h1
-rw-r--r--svr-session.c1
4 files changed, 9 insertions, 0 deletions
diff --git a/cli-session.c b/cli-session.c
index d5ff02d..ecefe46 100644
--- a/cli-session.c
+++ b/cli-session.c
@@ -73,6 +73,8 @@ static const packettype cli_packettypes[] = {
#ifdef ENABLE_CLI_REMOTETCPFWD
{SSH_MSG_REQUEST_SUCCESS, cli_recv_msg_request_success}, /* client */
{SSH_MSG_REQUEST_FAILURE, cli_recv_msg_request_failure}, /* client */
+#else
+ {SSH_MSG_REQUEST_FAILURE, ignore_recv_msg_request_failure}, /* for keepalive */
#endif
{0, 0} /* End */
};
diff --git a/common-session.c b/common-session.c
index cebd787..ee5f1e9 100644
--- a/common-session.c
+++ b/common-session.c
@@ -394,6 +394,11 @@ static int ident_readln(int fd, char* buf, int count) {
return pos+1;
}
+void ignore_recv_msg_request_failure() {
+ // Do nothing
+ TRACE(("Ignored msg_request_failure"))
+}
+
static void send_msg_keepalive() {
CHECKCLEARTOWRITE();
time_t old_time_idle = ses.last_packet_time_idle;
diff --git a/session.h b/session.h
index b09fa44..5d555fa 100644
--- a/session.h
+++ b/session.h
@@ -47,6 +47,7 @@ void session_loop(void(*loophandler)());
void session_cleanup();
void send_session_identification();
void send_msg_ignore();
+void ignore_recv_msg_request_failure();
void update_channel_prio();
diff --git a/svr-session.c b/svr-session.c
index 4d3c058..74a7b16 100644
--- a/svr-session.c
+++ b/svr-session.c
@@ -58,6 +58,7 @@ static const packettype svr_packettypes[] = {
{SSH_MSG_CHANNEL_OPEN, recv_msg_channel_open},
{SSH_MSG_CHANNEL_EOF, recv_msg_channel_eof},
{SSH_MSG_CHANNEL_CLOSE, recv_msg_channel_close},
+ {SSH_MSG_REQUEST_FAILURE, ignore_recv_msg_request_failure}, /* for keepalive */
#ifdef USING_LISTENERS
{SSH_MSG_CHANNEL_OPEN_CONFIRMATION, recv_msg_channel_open_confirmation},
{SSH_MSG_CHANNEL_OPEN_FAILURE, recv_msg_channel_open_failure},