Skip to content

Commit d6b4c1a

Browse files
Fix variant reply handling
1 parent 39a507a commit d6b4c1a

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

cluster_library.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,9 @@ clusterReply*
183183
cluster_read_sock_resp(RedisSock *redis_sock, REDIS_REPLY_TYPE type,
184184
size_t len TSRMLS_DC)
185185
{
186-
clusterReply *r = ecalloc(1, sizeof(clusterReply));
186+
clusterReply *r;
187+
188+
r = ecalloc(1, sizeof(clusterReply));
187189
r->type = type;
188190

189191
// Error flag in case we go recursive
@@ -193,6 +195,9 @@ cluster_read_sock_resp(RedisSock *redis_sock, REDIS_REPLY_TYPE type,
193195
case TYPE_INT:
194196
r->integer = len;
195197
break;
198+
case TYPE_LINE:
199+
case TYPE_ERR:
200+
return r;
196201
case TYPE_BULK:
197202
r->len = len;
198203
r->str = redis_sock_read_bulk_reply(redis_sock, len TSRMLS_CC);
@@ -1702,6 +1707,9 @@ PHPAPI void cluster_variant_resp(INTERNAL_FUNCTION_PARAMETERS, redisCluster *c,
17021707
case TYPE_INT:
17031708
RETVAL_LONG(r->integer);
17041709
break;
1710+
case TYPE_ERR:
1711+
RETVAL_FALSE;
1712+
break;
17051713
case TYPE_LINE:
17061714
RETVAL_TRUE;
17071715
break;
@@ -1728,6 +1736,9 @@ PHPAPI void cluster_variant_resp(INTERNAL_FUNCTION_PARAMETERS, redisCluster *c,
17281736
case TYPE_INT:
17291737
add_next_index_long(c->multi_resp, r->integer);
17301738
break;
1739+
case TYPE_ERR:
1740+
add_next_index_bool(c->multi_resp, 0);
1741+
break;
17311742
case TYPE_LINE:
17321743
add_next_index_bool(c->multi_resp, 1);
17331744
break;

redis_cluster.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2181,10 +2181,10 @@ static void cluster_raw_cmd(INTERNAL_FUNCTION_PARAMETERS, char *kw, int kw_len)
21812181
}
21822182

21832183
/* Initialize our command */
2184-
redis_cmd_init_sstr(&cmd, argc-1, kw, kw_len);
2184+
redis_cmd_init_sstr(&cmd, argc, kw, kw_len);
21852185

21862186
/* Iterate, appending args */
2187-
for(i=1;i<argc;i++) {
2187+
for(i=0;i<argc;i++) {
21882188
convert_to_string(z_args[i]);
21892189
redis_cmd_append_sstr(&cmd, Z_STRVAL_P(z_args[i]),
21902190
Z_STRLEN_P(z_args[i]));

0 commit comments

Comments
 (0)