From: Vsevolod Stakhov Date: Fri, 30 Dec 2016 12:49:31 +0000 (+0000) Subject: [Minor] Add support for unix connections for redis stats backend X-Git-Tag: 1.5.0~455 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3a98d054f54cd3f558dc3596fdde46d7c456d0fc;p=thirdparty%2Frspamd.git [Minor] Add support for unix connections for redis stats backend --- diff --git a/src/libstat/backends/redis_backend.c b/src/libstat/backends/redis_backend.c index 2018f303aa..b747fd75f3 100644 --- a/src/libstat/backends/redis_backend.c +++ b/src/libstat/backends/redis_backend.c @@ -650,8 +650,15 @@ rspamd_redis_async_stat_cb (struct rspamd_stat_async_elt *elt, gpointer d) g_assert (cbdata->selected != NULL); addr = rspamd_upstream_addr (cbdata->selected); g_assert (addr != NULL); - cbdata->redis = redisAsyncConnect (rspamd_inet_address_to_string (addr), - rspamd_inet_address_get_port (addr)); + + if (rspamd_inet_address_get_af (addr) == AF_UNIX) { + cbdata->redis = redisAsyncConnectUnix (rspamd_inet_address_to_string (addr)); + } + else { + cbdata->redis = redisAsyncConnect (rspamd_inet_address_to_string (addr), + rspamd_inet_address_get_port (addr)); + } + g_assert (cbdata->redis != NULL); redisLibeventAttach (cbdata->redis, redis_elt->ev_base); @@ -1143,8 +1150,14 @@ rspamd_redis_runtime (struct rspamd_task *task, addr = rspamd_upstream_addr (up); g_assert (addr != NULL); - rt->redis = redisAsyncConnect (rspamd_inet_address_to_string (addr), - rspamd_inet_address_get_port (addr)); + + if (rspamd_inet_address_get_af (addr) == AF_UNIX) { + rt->redis = redisAsyncConnectUnix (rspamd_inet_address_to_string (addr)); + } + else { + rt->redis = redisAsyncConnect (rspamd_inet_address_to_string (addr), + rspamd_inet_address_get_port (addr)); + } if (rt->redis == NULL) { msg_err_task ("cannot connect redis"); @@ -1270,8 +1283,14 @@ rspamd_redis_learn_tokens (struct rspamd_task *task, GPtrArray *tokens, addr = rspamd_upstream_addr (up); g_assert (addr != NULL); - rt->redis = redisAsyncConnect (rspamd_inet_address_to_string (addr), - rspamd_inet_address_get_port (addr)); + if (rspamd_inet_address_get_af (addr) == AF_UNIX) { + rt->redis = redisAsyncConnectUnix (rspamd_inet_address_to_string (addr)); + } + else { + rt->redis = redisAsyncConnect (rspamd_inet_address_to_string (addr), + rspamd_inet_address_get_port (addr)); + } + g_assert (rt->redis != NULL); redisLibeventAttach (rt->redis, task->ev_base); diff --git a/src/libstat/learn_cache/redis_cache.c b/src/libstat/learn_cache/redis_cache.c index 21f35a5634..cc6e66469e 100644 --- a/src/libstat/learn_cache/redis_cache.c +++ b/src/libstat/learn_cache/redis_cache.c @@ -398,8 +398,15 @@ rspamd_stat_cache_redis_runtime (struct rspamd_task *task, addr = rspamd_upstream_addr (up); g_assert (addr != NULL); - rt->redis = redisAsyncConnect (rspamd_inet_address_to_string (addr), - rspamd_inet_address_get_port (addr)); + + if (rspamd_inet_address_get_af (addr) == AF_UNIX) { + rt->redis = redisAsyncConnectUnix (rspamd_inet_address_to_string (addr)); + } + else { + rt->redis = redisAsyncConnect (rspamd_inet_address_to_string (addr), + rspamd_inet_address_get_port (addr)); + } + g_assert (rt->redis != NULL); redisLibeventAttach (rt->redis, task->ev_base);