summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2008-08-27 22:35:54 +0300
committerLennart Poettering <lennart@poettering.net>2008-08-27 23:42:39 +0200
commitbcd508a4e525b6512da639f432920fc44b811432 (patch)
tree9f6dfa5b52f1b4a2a383ca23cb082de5f014d2e9
parentd7d6d26e1f858841f333264a07edc512066269af (diff)
multi: respect given backend order
Signed-off-by: Marc-André Lureau <marcandre.lureau@gmail.com> Signed-off-by: Lennart Poettering <lennart@poettering.net>
-rw-r--r--src/multi.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/multi.c b/src/multi.c
index 14cc074..0215296 100644
--- a/src/multi.c
+++ b/src/multi.c
@@ -41,7 +41,7 @@ struct private {
#define PRIVATE(c) ((struct private *) ((c)->private))
static int add_backend(struct private *p, const char *name) {
- struct backend *b;
+ struct backend *b, *last;
int ret;
ca_assert(p);
@@ -69,7 +69,11 @@ static int add_backend(struct private *p, const char *name) {
if ((ret = ca_context_open(b->context)) < 0)
goto fail;
- CA_LLIST_PREPEND(struct backend, p->backends, b);
+ for (last = p->backends; last; last = last->next)
+ if (!last->next)
+ break;
+
+ CA_LLIST_INSERT_AFTER(struct backend, p->backends, last, b);
return CA_SUCCESS;