Browse Source

Add sequential order for upstreams.

tags/0.8.0
Vsevolod Stakhov 9 years ago
parent
commit
ba06982886
2 changed files with 11 additions and 1 deletions
  1. 9
    0
      src/libutil/upstream.c
  2. 2
    1
      src/libutil/upstream.h

+ 9
- 0
src/libutil/upstream.c View File

@@ -64,6 +64,7 @@ struct upstream_list {
GPtrArray *alive;
rspamd_mutex_t *lock;
guint64 hash_seed;
guint cur_elt;
};

static struct rdns_resolver *res = NULL;
@@ -354,6 +355,7 @@ rspamd_upstreams_create (void)
ls->ups = g_ptr_array_new ();
ls->alive = g_ptr_array_new ();
ls->lock = rspamd_mutex_new ();
ls->cur_elt = 0;

return ls;
}
@@ -678,5 +680,12 @@ rspamd_upstream_get (struct upstream_list *ups,
return rspamd_upstream_get_round_robin (ups, TRUE);
case RSPAMD_UPSTREAM_MASTER_SLAVE:
return rspamd_upstream_get_round_robin (ups, FALSE);
case RSPAMD_UPSTREAM_SEQUENTIAL:
if (ups->cur_elt >= ups->alive->len) {
ups->cur_elt = 0;
return NULL;
}

return g_ptr_array_index (ups->alive, ups->cur_elt ++);
}
}

+ 2
- 1
src/libutil/upstream.h View File

@@ -10,7 +10,8 @@ enum rspamd_upstream_rotation {
RSPAMD_UPSTREAM_RANDOM,
RSPAMD_UPSTREAM_HASHED,
RSPAMD_UPSTREAM_ROUND_ROBIN,
RSPAMD_UPSTREAM_MASTER_SLAVE
RSPAMD_UPSTREAM_MASTER_SLAVE,
RSPAMD_UPSTREAM_SEQUENTIAL
};



Loading…
Cancel
Save