- Added DEFLATE compression support as per RFC3749 (requires zlib)
diff --git a/library/ssl_srv.c b/library/ssl_srv.c
index ecf1536..e4de68e 100644
--- a/library/ssl_srv.c
+++ b/library/ssl_srv.c
@@ -316,6 +316,18 @@
return( POLARSSL_ERR_SSL_BAD_HS_CLIENT_HELLO );
}
+ ssl->session->compression = SSL_COMPRESS_NULL;
+#if defined(POLARSSL_ZLIB_SUPPORT)
+ for( i = 0; i < comp_len; ++i )
+ {
+ if( buf[41 + sess_len + ciph_len + i] == SSL_COMPRESS_DEFLATE )
+ {
+ ssl->session->compression = SSL_COMPRESS_DEFLATE;
+ break;
+ }
+ }
+#endif
+
SSL_DEBUG_BUF( 3, "client hello, random bytes",
buf + 6, 32 );
SSL_DEBUG_BUF( 3, "client hello, session id",
@@ -449,11 +461,12 @@
*p++ = (unsigned char)( ssl->session->ciphersuite >> 8 );
*p++ = (unsigned char)( ssl->session->ciphersuite );
- *p++ = SSL_COMPRESS_NULL;
+ *p++ = (unsigned char)( ssl->session->compression );
SSL_DEBUG_MSG( 3, ( "server hello, chosen ciphersuite: %d",
ssl->session->ciphersuite ) );
- SSL_DEBUG_MSG( 3, ( "server hello, compress alg.: %d", 0 ) );
+ SSL_DEBUG_MSG( 3, ( "server hello, compress alg.: %d",
+ ssl->session->compression ) );
ssl->out_msglen = p - buf;
ssl->out_msgtype = SSL_MSG_HANDSHAKE;