*************************************************/
/* Copyright (c) University of Cambridge 1995 - 2018 */
+/* Copyright (c) The Exim Maintainers 2020 */
/* See the file NOTICE for conditions of use and distribution. */
#include "../exim.h"
static void *
-redis_open(uschar *filename, uschar **errmsg)
+redis_open(const uschar * filename, uschar ** errmsg)
{
return (void *)(1);
}
errmsg where to point an error message
defer_break TRUE if no more servers are to be tried after DEFER
do_cache set false if data is changed
+ opts options
The server string is of the form "host/dbnumber/password". The host can be
host:port. This string is in a nextinlist temporary buffer, so can be
static int
perform_redis_search(const uschar *command, uschar *server, uschar **resultptr,
- uschar **errmsg, BOOL *defer_break, uint *do_cache)
+ uschar **errmsg, BOOL *defer_break, uint *do_cache, const uschar * opts)
{
redisContext *redis_handle = NULL; /* Keep compilers happy */
redisReply *redis_reply = NULL;
/* Run the command. We use the argv form rather than plain as that parses
into args by whitespace yet has no escaping mechanism. */
- redis_reply = redisCommandArgv(redis_handle, i, (const char **) argv, NULL);
- if (!redis_reply)
+ if (!(redis_reply = redisCommandArgv(redis_handle, i, CCSS argv, NULL)))
{
*errmsg = string_sprintf("REDIS: query failed: %s\n", redis_handle->errstr);
*defer_break = FALSE;
*/
static int
-redis_find(void *handle __attribute__((unused)),
- uschar *filename __attribute__((unused)),
- const uschar *command, int length, uschar **result, uschar **errmsg,
- uint *do_cache)
+redis_find(void * handle __attribute__((unused)),
+ const uschar * filename __attribute__((unused)),
+ const uschar * command, int length, uschar ** result, uschar ** errmsg,
+ uint * do_cache, const uschar * opts)
{
return lf_sqlperform(US"Redis", US"redis_servers", redis_servers, command,
- result, errmsg, do_cache, perform_redis_search);
+ result, errmsg, do_cache, opts, perform_redis_search);
}
/* These are the lookup_info blocks for this driver */
static lookup_info redis_lookup_info = {
- US"redis", /* lookup name */
- lookup_querystyle, /* query-style lookup */
- redis_open, /* open function */
- NULL, /* no check function */
- redis_find, /* find function */
- NULL, /* no close function */
- redis_tidy, /* tidy function */
- redis_quote, /* quoting function */
- redis_version_report /* version reporting */
+ .name = US"redis", /* lookup name */
+ .type = lookup_querystyle, /* query-style lookup */
+ .open = redis_open, /* open function */
+ .check = NULL, /* no check function */
+ .find = redis_find, /* find function */
+ .close = NULL, /* no close function */
+ .tidy = redis_tidy, /* tidy function */
+ .quote = redis_quote, /* quoting function */
+ .version_report = redis_version_report /* version reporting */
};
#ifdef DYNLOOKUP