diff options
author | Nicolas Viennot <nicolas@viennot.biz> | 2013-11-02 22:30:35 -0400 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2013-11-03 10:48:59 +0100 |
commit | 1ef00045dde9a695e6d82fd30ed49eaebcf22095 (patch) | |
tree | 5cf6f0963471f37ead38006cffd4a117acca2371 | |
parent | a466a624e2c9567854c88879baa9cba89071dc8d (diff) | |
download | libssh-1ef00045dde9a695e6d82fd30ed49eaebcf22095.tar.gz libssh-1ef00045dde9a695e6d82fd30ed49eaebcf22095.tar.xz libssh-1ef00045dde9a695e6d82fd30ed49eaebcf22095.zip |
server kex: enable delayed compression
The code is careful to reenable compression when rekeying.
Signed-off-by: Nicolas Viennot <nicolas@viennot.biz>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
-rw-r--r-- | src/wrapper.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/wrapper.c b/src/wrapper.c index 6f57ae8f..51688753 100644 --- a/src/wrapper.c +++ b/src/wrapper.c @@ -317,8 +317,13 @@ int crypt_set_algorithms_server(ssh_session session){ session->next_crypto->do_compress_in=1; } if(strcmp(method,"zlib@openssh.com") == 0){ - ssh_set_error(session,SSH_FATAL,"zlib@openssh.com not supported"); - return SSH_ERROR; + SSH_LOG(SSH_LOG_PACKET,"enabling C->S delayed compression"); + + if (session->flags & SSH_SESSION_FLAG_AUTHENTICATED) { + session->next_crypto->do_compress_in = 1; + } else { + session->next_crypto->delayed_compress_in = 1; + } } method = session->next_crypto->kex_methods[SSH_COMP_S_C]; @@ -327,8 +332,13 @@ int crypt_set_algorithms_server(ssh_session session){ session->next_crypto->do_compress_out=1; } if(strcmp(method,"zlib@openssh.com") == 0){ - ssh_set_error(session,SSH_FATAL,"zlib@openssh.com not supported"); - return SSH_ERROR; + SSH_LOG(SSH_LOG_PACKET,"enabling S->C delayed compression\n"); + + if (session->flags & SSH_SESSION_FLAG_AUTHENTICATED) { + session->next_crypto->do_compress_out = 1; + } else { + session->next_crypto->delayed_compress_out = 1; + } } method = session->next_crypto->kex_methods[SSH_HOSTKEYS]; |