From a18a6b8db8e86f0870dfd59c84fa286436f79e5c Mon Sep 17 00:00:00 2001
From: Matt Johnston <matt@ucc.asn.au>
Date: Wed, 12 Feb 2014 22:15:02 +0800
Subject: [PATCH] cleanup before clearing keys

---
 common-session.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/common-session.c b/common-session.c
index 40c66e85..6882dced 100644
--- a/common-session.c
+++ b/common-session.c
@@ -244,7 +244,11 @@ void session_cleanup() {
 	if (ses.extra_session_cleanup) {
 		ses.extra_session_cleanup();
 	}
+
+	chancleanup();
 	
+	/* Cleaning up keys must happen after other cleanup
+	functions which might queue packets */
 	if (ses.session_id) {
 		buf_burn(ses.session_id);
 		buf_free(ses.session_id);
@@ -258,8 +262,6 @@ void session_cleanup() {
 	m_burn(ses.keys, sizeof(struct key_context));
 	m_free(ses.keys);
 
-	chancleanup();
-
 	TRACE(("leave session_cleanup"))
 }
 
-- 
GitLab