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,