int peers_init_sync(struct peers *peers);
int peers_alloc_dcache(struct peers *peers);
-void peers_register_table(struct peers *, struct stktable *table);
+int peers_register_table(struct peers *, struct stktable *table);
void peers_setup_frontend(struct proxy *fe);
#if defined(USE_OPENSSL)
/*
* Function used to register a table for sync on a group of peers
- *
+ * Returns 0 in case of success.
*/
-void peers_register_table(struct peers *peers, struct stktable *table)
+int peers_register_table(struct peers *peers, struct stktable *table)
{
struct shared_table *st;
struct peer * curpeer;
int id = 0;
+ int retval = 0;
for (curpeer = peers->remote; curpeer; curpeer = curpeer->next) {
st = calloc(1,sizeof(*st));
+ if (!st) {
+ retval = 1;
+ break;
+ }
st->table = table;
st->next = curpeer->tables;
if (curpeer->tables)
}
table->sync_task = peers->sync_task;
+
+ return retval;
}
/*
/* Perform minimal stick table intializations, report 0 in case of error, 1 if OK. */
int stktable_init(struct stktable *t)
{
+ int peers_retval = 0;
if (t->size) {
t->keys = EB_ROOT_UNIQUE;
memset(&t->exps, 0, sizeof(t->exps));
t->exp_task->context = (void *)t;
}
if (t->peers.p && t->peers.p->peers_fe && !t->peers.p->peers_fe->disabled) {
- peers_register_table(t->peers.p, t);
+ peers_retval = peers_register_table(t->peers.p, t);
}
- return t->pool != NULL;
+ return (t->pool != NULL) && !peers_retval;
}
return 1;
}