]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
redis: If remap fails because the connection is bad, don't leave the stale connection...
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 13 Apr 2023 10:57:07 +0000 (20:57 +1000)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 13 Apr 2023 10:57:07 +0000 (20:57 +1000)
src/modules/rlm_redis/rlm_redis.c

index 0fcda1ddba94bf077367cd9089076c039dee4c4b..98fcee1b59437a6d9d9a5b2779ec9dc56d73ab98 100644 (file)
@@ -274,7 +274,15 @@ static xlat_action_t redis_remap_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out,
        }
 
        rcode = fr_redis_cluster_remap(request, inst->cluster, conn);
-       fr_pool_connection_release(pool, request, conn);
+       switch (rcode) {
+       case FR_REDIS_CLUSTER_RCODE_NO_CONNECTION:
+               fr_pool_connection_close(pool, request, conn);
+               break;
+
+       default:
+               fr_pool_connection_release(pool, request, conn);
+               break;
+       }
 
        MEM(vb = fr_value_box_alloc_null(ctx));
        fr_value_box_strdup(vb, vb, NULL, fr_table_str_by_value(fr_redis_cluster_rcodes_table, rcode, "<INVALID>"), false);