chiark / gitweb /
Keepalive option: Start trying to rekey as soon as peer shuts down
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 12 Sep 2015 23:56:06 +0000 (00:56 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 12 Sep 2015 23:56:06 +0000 (00:56 +0100)
This avoids us ending up in state RUN with no keys and no key
initiation attempt, which with keepalive is a forbidden.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
site.c

diff --git a/site.c b/site.c
index db78d5f4ed27001d300951fa77784597096169ba..b83919c3b4467bc484a5a18fbea78373d6920044 100644 (file)
--- a/site.c
+++ b/site.c
@@ -1147,6 +1147,10 @@ static bool_t process_msg0(struct site *st, struct buffer_if *msg0,
     case LABEL_MSG7:
        /* We must forget about the current session. */
        delete_keys(st,"request from peer",LOG_SEC);
+       /* probably, the peer is shutting down, and this is going to fail,
+        * but we need to be trying to bring the link up again */
+       if (st->keepalive)
+           initiate_key_setup(st,"peer requested key teardown",0);
        return True;
     case LABEL_MSG9:
        /* Deliver to netlink layer */