aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@strongswan.org>2007-08-06 07:41:19 +0000
committerMartin Willi <martin@strongswan.org>2007-08-06 07:41:19 +0000
commit9ec19f13f73de2e90f746396524f7d05c34b9d7e (patch)
treede935f53cbb128060c898567b45b37b1407d7a28 /src
parent1eef2ae8d238698456f9581ea08e7a119bf489f1 (diff)
downloadstrongswan-9ec19f13f73de2e90f746396524f7d05c34b9d7e.tar.bz2
strongswan-9ec19f13f73de2e90f746396524f7d05c34b9d7e.tar.xz
allow starter to initiate connections simultaneously (on auto=start)
Diffstat (limited to 'src')
-rw-r--r--src/charon/control/interface_manager.c7
-rwxr-xr-xsrc/charon/control/interfaces/stroke_interface.c16
2 files changed, 19 insertions, 4 deletions
diff --git a/src/charon/control/interface_manager.c b/src/charon/control/interface_manager.c
index 700174c5b..4cc0581b3 100644
--- a/src/charon/control/interface_manager.c
+++ b/src/charon/control/interface_manager.c
@@ -290,6 +290,13 @@ static status_t initiate(private_interface_manager_t *this,
}
charon->ike_sa_manager->checkin(charon->ike_sa_manager, ike_sa);
+ if (callback == NULL)
+ {
+ /* don't wait for a result if no callback is specified */
+ charon->bus->set_listen_state(charon->bus, FALSE);
+ return NEED_MORE;
+ }
+
/* wait until we get a result */
while (TRUE)
{
diff --git a/src/charon/control/interfaces/stroke_interface.c b/src/charon/control/interfaces/stroke_interface.c
index 7885fc2e6..3d4e6372f 100755
--- a/src/charon/control/interfaces/stroke_interface.c
+++ b/src/charon/control/interfaces/stroke_interface.c
@@ -779,10 +779,18 @@ static void stroke_initiate(stroke_msg_t *msg, FILE *out)
return;
}
- info.out = out;
- info.level = msg->output_verbosity;
- charon->interfaces->initiate(charon->interfaces, peer_cfg, child_cfg,
- (interface_manager_cb_t)stroke_log, &info);
+ if (msg->output_verbosity < 0)
+ {
+ charon->interfaces->initiate(charon->interfaces, peer_cfg, child_cfg,
+ NULL, NULL);
+ }
+ else
+ {
+ info.out = out;
+ info.level = msg->output_verbosity;
+ charon->interfaces->initiate(charon->interfaces, peer_cfg, child_cfg,
+ (interface_manager_cb_t)stroke_log, &info);
+ }
}
/**