aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2014-11-03 09:39:16 +0100
committerMartin Willi <martin@revosec.ch>2014-11-21 12:51:19 +0100
commitc39b0c883dc625c09db3925e84999820e2349748 (patch)
treea187dfffb5451aef7aa1a106d735672c4182378f
parent013857ad7956fa5f38614bea8b08e05cd23a47d7 (diff)
downloadstrongswan-c39b0c883dc625c09db3925e84999820e2349748.tar.bz2
strongswan-c39b0c883dc625c09db3925e84999820e2349748.tar.xz
controller: Keep following initiate() if the first DH guess was wrong
-rw-r--r--src/libcharon/control/controller.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libcharon/control/controller.c b/src/libcharon/control/controller.c
index 25667e532..60d186e27 100644
--- a/src/libcharon/control/controller.c
+++ b/src/libcharon/control/controller.c
@@ -303,6 +303,18 @@ METHOD(listener_t, child_state_change, bool,
/* proper delete */
this->status = SUCCESS;
break;
+ case CHILD_RETRYING:
+ /* retrying with a different DH group; survive another
+ * initiation round */
+ this->status = NEED_MORE;
+ return TRUE;
+ case CHILD_CREATED:
+ if (this->status == NEED_MORE)
+ {
+ this->status = FAILED;
+ return TRUE;
+ }
+ break;
default:
break;
}