Blob Blame History Raw
diff -Naur libreswan-3.23-orig/programs/pluto/ikev2_parent.c libreswan-3.23/programs/pluto/ikev2_parent.c
--- libreswan-3.23-orig/programs/pluto/ikev2_parent.c	2018-04-27 14:08:15.514571020 -0400
+++ libreswan-3.23/programs/pluto/ikev2_parent.c	2018-04-27 14:08:53.835299450 -0400
@@ -6076,6 +6076,14 @@
 		md->st = st = NULL;
 	} else if (!responding &&
 		   md->chain[ISAKMP_NEXT_v2D] == NULL) {
+		/* A liveness update response */
+		/* ??? why wouldn't any INFORMATIONAL count, even one that
+		 * is actually deleting SAs?
+		 */
+		DBG(DBG_CONTROLMORE,
+		    DBG_log("Received an INFORMATIONAL response; updating liveness, no longer pending."));
+		st->st_last_liveness = mononow();
+		st->st_pend_liveness = FALSE;
 	} else if (del_ike) {
 		/*
 		 * If we are deleting the Parent SA, the Child SAs will be torn down as well,