diff options
author | Nicolas Favre-Felix <n.favrefelix@gmail.com> | 2010-05-13 19:58:49 +0400 |
---|---|---|
committer | Nicolas Favre-Felix <n.favrefelix@gmail.com> | 2010-05-13 19:58:49 +0400 |
commit | 576dd065e0ea1ef6a7f8364c66abb70ad82d8bb0 (patch) | |
tree | 42c248de9ddb2ebb6e5f3532ccfef9a120095ca4 /redis.c | |
parent | a8558c777a305ad82f0504a9a3f48ba5a49265fe (diff) |
More MULTI/EXEC/PIPELINE fixes.
Diffstat (limited to 'redis.c')
-rwxr-xr-x | redis.c | 40 |
1 files changed, 17 insertions, 23 deletions
@@ -2569,27 +2569,22 @@ PHP_METHOD(Redis, zRangeByScore) efree(limit); } - if (redis_sock_write(redis_sock, cmd, cmd_len) < 0) { - efree(cmd); - RETURN_FALSE; - } - efree(cmd); - - if (redis_sock_read_multibulk_reply(INTERNAL_FUNCTION_PARAM_PASSTHRU, - redis_sock, NULL TSRMLS_CC) < 0) { - RETURN_FALSE; - } - - if(!withscores) { - return; + REDIS_PROCESS_REQUEST(redis_sock, cmd, cmd_len); + if(withscores) { + /* with scores! we have to transform the return array. + * return_value currently holds this: [elt0, val0, elt1, val1 ... ] + * we want [elt0 => val0, elt1 => val1], etc. + */ + IF_ATOMIC() { + redis_sock_read_multibulk_reply_zipped(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock, NULL TSRMLS_CC); + } + REDIS_PROCESS_RESPONSE(redis_sock_read_multibulk_reply_zipped); + } else { + IF_ATOMIC() { + redis_sock_read_multibulk_reply(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock, NULL TSRMLS_CC); + } + REDIS_PROCESS_RESPONSE(redis_sock_read_multibulk_reply); } - /* with scores! we have to transform the return array. - * return_value currently holds this: [elt0, val0, elt1, val1 ... ] - * we want [elt0 => val0, elt1 => val1], etc. - */ - IF_NOT_MULTI() { - array_zip_values_and_scores(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1); - } ELSE_IF_MULTI() } /* }}} */ @@ -2645,10 +2640,9 @@ PHP_METHOD(Redis, zScore) REDIS_PROCESS_REQUEST(redis_sock, cmd, cmd_len); IF_ATOMIC() { - redis_bulk_double_response(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock TSRMLS_CC); + redis_bulk_double_response(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock, NULL TSRMLS_CC); } REDIS_PROCESS_RESPONSE(redis_bulk_double_response); - } PHPAPI void generic_incrby_method(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int keyword_len TSRMLS_DC) { @@ -2673,7 +2667,7 @@ PHPAPI void generic_incrby_method(INTERNAL_FUNCTION_PARAMETERS, char *keyword, i REDIS_PROCESS_REQUEST(redis_sock, cmd, cmd_len); IF_ATOMIC() { - redis_bulk_double_response(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock TSRMLS_CC); + redis_bulk_double_response(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock, NULL TSRMLS_CC); } REDIS_PROCESS_RESPONSE(redis_bulk_double_response); |