inst->redispool = NULL;
}
-static size_t redis_escape_func(char *out, size_t outlen, const char *in)
-{
-
- size_t len = 0;
-
- while (*in) {
- /*
- * Non-printable characters get replaced with their
- * mime-encoded equivalents.
- */
- if ((*in <= 32) || (*in == '\\')) {
- /*
- * Only 3 or less bytes available.
- */
- if (outlen <= 3) {
- break;
- }
-
- snprintf(out, outlen, "=%02X", (unsigned char) in[0]);
- in++;
- out += 3;
- outlen -= 3;
- len += 3;
- continue;
- }
-
- /*
- * Only one byte left.
- */
- if (outlen <= 1) {
- break;
- }
-
- /*
- * Allowed character.
- */
- *out = *in;
- out++;
- in++;
- outlen--;
- len++;
- }
- *out = '\0';
- return len;
-
-}
-
static int redis_xlat(void *instance, REQUEST *request,
char *fmt, char *out, size_t freespace,
UNUSED RADIUS_ESCAPE_STRING func)
inst->redis_finish_query = rlm_redis_finish_query;
inst->redis_get_socket = redis_get_socket;
inst->redis_release_socket = redis_release_socket;
- inst->redis_escape_func = redis_escape_func;
*instance = inst;
int (*redis_query)(REDISSOCK *dissocket, REDIS_INST *inst,
const char *query, REQUEST *request);
int (*redis_finish_query)(REDISSOCK *dissocket);
- size_t (*redis_escape_func)(char *out, size_t outlen, const char *in);
} rlm_redis_t;