aboutsummaryrefslogtreecommitdiffstats
path: root/src/libtls/tls_fragmentation.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2011-12-30 18:29:55 +0100
committerMartin Willi <martin@revosec.ch>2011-12-31 13:14:49 +0100
commit703c0db894908fb20cada344b8b44a40f9e35818 (patch)
treed15758e564f1c5e781c63275142a2e74249a3470 /src/libtls/tls_fragmentation.c
parent4caa380625e583c9bad5b9333e65ef1f9486bb2a (diff)
downloadstrongswan-703c0db894908fb20cada344b8b44a40f9e35818.tar.bz2
strongswan-703c0db894908fb20cada344b8b44a40f9e35818.tar.xz
Check for cipherspec changes after each handshake message
Diffstat (limited to 'src/libtls/tls_fragmentation.c')
-rw-r--r--src/libtls/tls_fragmentation.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libtls/tls_fragmentation.c b/src/libtls/tls_fragmentation.c
index 0c3da71ad..62e36aaec 100644
--- a/src/libtls/tls_fragmentation.c
+++ b/src/libtls/tls_fragmentation.c
@@ -325,8 +325,12 @@ static status_t build_handshake(private_tls_fragmentation_t *this)
msg->write_data24(msg, hs->get_buf(hs));
DBG2(DBG_TLS, "sending TLS %N handshake (%u bytes)",
tls_handshake_type_names, type, hs->get_buf(hs).len);
- hs->destroy(hs);
- continue;
+ if (!this->handshake->cipherspec_changed(this->handshake, FALSE))
+ {
+ hs->destroy(hs);
+ continue;
+ }
+ /* FALL */
case INVALID_STATE:
this->output_type = TLS_HANDSHAKE;
this->output = chunk_clone(msg->get_buf(msg));