diff options
author | Martin Willi <martin@strongswan.org> | 2007-08-06 07:41:19 +0000 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2007-08-06 07:41:19 +0000 |
commit | 9ec19f13f73de2e90f746396524f7d05c34b9d7e (patch) | |
tree | de935f53cbb128060c898567b45b37b1407d7a28 /src | |
parent | 1eef2ae8d238698456f9581ea08e7a119bf489f1 (diff) | |
download | strongswan-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.c | 7 | ||||
-rwxr-xr-x | src/charon/control/interfaces/stroke_interface.c | 16 |
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); + } } /** |