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,