Initiate each load-testing connection with a fresh peer config

This commit is contained in:
Martin Willi
2012-11-29 10:22:51 +01:00
parent b7acd90763
commit 93ceaa7e64
@@ -198,7 +198,7 @@ static job_requeue_t initiate(FILE *stream)
enumerator_t *enumerator; enumerator_t *enumerator;
peer_cfg_t *peer_cfg; peer_cfg_t *peer_cfg;
child_cfg_t *child_cfg; child_cfg_t *child_cfg;
u_int i, count; u_int i, count, failed = 0;
char buf[16] = ""; char buf[16] = "";
fflush(stream); fflush(stream);
@@ -211,20 +211,6 @@ static job_requeue_t initiate(FILE *stream)
return JOB_REQUEUE_NONE; return JOB_REQUEUE_NONE;
} }
peer_cfg = charon->backends->get_peer_cfg_by_name(charon->backends,
"load-test");
if (!peer_cfg)
{
return JOB_REQUEUE_NONE;
}
enumerator = peer_cfg->create_child_cfg_enumerator(peer_cfg);
if (!enumerator->enumerate(enumerator, &child_cfg))
{
enumerator->destroy(enumerator);
return JOB_REQUEUE_NONE;
}
enumerator->destroy(enumerator);
INIT(listener, INIT(listener,
.listener = { .listener = {
.ike_state_change = _ike_state_change, .ike_state_change = _ike_state_change,
@@ -240,9 +226,28 @@ static job_requeue_t initiate(FILE *stream)
for (i = 0; i < count; i++) for (i = 0; i < count; i++)
{ {
peer_cfg = charon->backends->get_peer_cfg_by_name(charon->backends,
"load-test");
if (!peer_cfg)
{
failed++;
fprintf(stream, "!");
continue;
}
enumerator = peer_cfg->create_child_cfg_enumerator(peer_cfg);
if (!enumerator->enumerate(enumerator, &child_cfg))
{
enumerator->destroy(enumerator);
peer_cfg->destroy(peer_cfg);
failed++;
fprintf(stream, "!");
continue;
}
enumerator->destroy(enumerator);
switch (charon->controller->initiate(charon->controller, switch (charon->controller->initiate(charon->controller,
peer_cfg->get_ref(peer_cfg), child_cfg->get_ref(child_cfg), peer_cfg, child_cfg->get_ref(child_cfg),
(void*)initiate_cb, listener, 0)) (void*)initiate_cb, listener, 0))
{ {
case NEED_MORE: case NEED_MORE:
/* Callback returns FALSE once it got track of this IKE_SA. /* Callback returns FALSE once it got track of this IKE_SA.
@@ -258,7 +263,7 @@ static job_requeue_t initiate(FILE *stream)
} }
listener->mutex->lock(listener->mutex); listener->mutex->lock(listener->mutex);
while (listener->completed->get_count(listener->completed) < count) while (listener->completed->get_count(listener->completed) < count - failed)
{ {
listener->condvar->wait(listener->condvar, listener->mutex); listener->condvar->wait(listener->condvar, listener->mutex);
} }
@@ -272,7 +277,6 @@ static job_requeue_t initiate(FILE *stream)
listener->condvar->destroy(listener->condvar); listener->condvar->destroy(listener->condvar);
free(listener); free(listener);
peer_cfg->destroy(peer_cfg);
fprintf(stream, "\n"); fprintf(stream, "\n");
return JOB_REQUEUE_NONE; return JOB_REQUEUE_NONE;