From owner-freebsd-ports-bugs@FreeBSD.ORG Tue May 15 13:40:02 2012 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3B43D1065672 for ; Tue, 15 May 2012 13:40:02 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 0FC138FC16 for ; Tue, 15 May 2012 13:40:02 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q4FDe1rH068968 for ; Tue, 15 May 2012 13:40:01 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q4FDe1on068967; Tue, 15 May 2012 13:40:01 GMT (envelope-from gnats) Resent-Date: Tue, 15 May 2012 13:40:01 GMT Resent-Message-Id: <201205151340.q4FDe1on068967@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Martin Matuska Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5E854106564A for ; Tue, 15 May 2012 13:32:12 +0000 (UTC) (envelope-from mm@neo.vx.sk) Received: from neo.vx.sk (neo.vx.sk [176.9.47.205]) by mx1.freebsd.org (Postfix) with ESMTP id 659D98FC16 for ; Tue, 15 May 2012 13:32:10 +0000 (UTC) Received: by neo.vx.sk (Postfix, from userid 1001) id 24C9B11FE8; Tue, 15 May 2012 15:32:04 +0200 (CEST) Message-Id: <20120515133204.24C9B11FE8@neo.vx.sk> Date: Tue, 15 May 2012 15:32:04 +0200 (CEST) From: Martin Matuska To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: m.tsatsenko@gmail.com Subject: ports/167924: [PATCH] databases/php5-redis: add nothrow patch from upstream X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 May 2012 13:40:02 -0000 >Number: 167924 >Category: ports >Synopsis: [PATCH] databases/php5-redis: add nothrow patch from upstream >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue May 15 13:40:01 UTC 2012 >Closed-Date: >Last-Modified: >Originator: Martin Matuska >Release: FreeBSD 9.0-STABLE amd64 >Organization: >Environment: System: FreeBSD neo 9.0-STABLE FreeBSD 9.0-STABLE #1 r235218M: Thu May 10 12:01:50 CEST >Description: Add nothrow patch and echo debug command from upstream (c4a5370a82 and ee3a23acd2) https://github.com/nicolasff/phpredis/commit/c4a5370a821ec29b990d5ea6e95b7fb13bc669c1 https://github.com/nicolasff/phpredis/commit/ee3a23acd273803bfec1fe6e53515fb15a756a2d Added file(s): - files/patch-echo-nothrow Port maintainer (m.tsatsenko@gmail.com) is cc'd. Generated with FreeBSD Port Tools 0.99_6 (mode: change, diff: CVS) >How-To-Repeat: >Fix: --- php5-redis-2.2.1_1.patch begins here --- Index: Makefile =================================================================== RCS file: /home/pcvs/ports/databases/php5-redis/Makefile,v retrieving revision 1.7 diff -u -r1.7 Makefile --- Makefile 18 Apr 2012 17:18:15 -0000 1.7 +++ Makefile 15 May 2012 13:30:16 -0000 @@ -7,6 +7,7 @@ PORTNAME= redis PORTVERSION= 2.2.1 +PORTREVISION= 1 CATEGORIES= databases MASTER_SITES= https://github.com/nicolasff/phpredis/tarball/${PORTVERSION}/ PKGNAMEPREFIX= php5- Index: files/patch-echo-nothrow =================================================================== RCS file: files/patch-echo-nothrow diff -N files/patch-echo-nothrow --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ files/patch-echo-nothrow 15 May 2012 13:30:16 -0000 @@ -0,0 +1,879 @@ +index 1dfaa0f..fd8f024 100755 +--- a/php_redis.h ++++ php_redis.h +@@ -29,6 +29,7 @@ PHP_METHOD(Redis, connect); + PHP_METHOD(Redis, pconnect); + PHP_METHOD(Redis, close); + PHP_METHOD(Redis, ping); ++PHP_METHOD(Redis, echo); + PHP_METHOD(Redis, get); + PHP_METHOD(Redis, set); + PHP_METHOD(Redis, setex); +diff --git a/redis.c b/redis.c +index 9ca3a14..3e15d73 100755 +--- a/redis.c ++++ redis.c +@@ -76,6 +76,7 @@ static zend_function_entry redis_functions[] = { + PHP_ME(Redis, pconnect, NULL, ZEND_ACC_PUBLIC) + PHP_ME(Redis, close, NULL, ZEND_ACC_PUBLIC) + PHP_ME(Redis, ping, NULL, ZEND_ACC_PUBLIC) ++ PHP_ME(Redis, echo, NULL, ZEND_ACC_PUBLIC) + PHP_ME(Redis, get, NULL, ZEND_ACC_PUBLIC) + PHP_ME(Redis, set, NULL, ZEND_ACC_PUBLIC) + PHP_ME(Redis, setex, NULL, ZEND_ACC_PUBLIC) +@@ -324,7 +325,7 @@ static void redis_destructor_redis_sock(zend_rsrc_list_entry * rsrc TSRMLS_DC) + /** + * redis_sock_get + */ +-PHPAPI int redis_sock_get(zval *id, RedisSock **redis_sock TSRMLS_DC) ++PHPAPI int redis_sock_get(zval *id, RedisSock **redis_sock TSRMLS_DC, int no_throw) + { + + zval **socket; +@@ -332,15 +333,21 @@ PHPAPI int redis_sock_get(zval *id, RedisSock **redis_sock TSRMLS_DC) + + if (Z_TYPE_P(id) != IS_OBJECT || zend_hash_find(Z_OBJPROP_P(id), "socket", + sizeof("socket"), (void **) &socket) == FAILURE) { +- zend_throw_exception(redis_exception_ce, "Redis server went away", 0 TSRMLS_CC); ++ // Throw an exception unless we've been requested not to ++ if(!no_throw) { ++ zend_throw_exception(redis_exception_ce, "Redis server went away", 0 TSRMLS_CC); ++ } + return -1; + } + + *redis_sock = (RedisSock *) zend_list_find(Z_LVAL_PP(socket), &resource_type); + + if (!*redis_sock || resource_type != le_redis_sock) { +- zend_throw_exception(redis_exception_ce, "Redis server went away", 0 TSRMLS_CC); +- return -1; ++ // Throw an exception unless we've been requested not to ++ if(!no_throw) { ++ zend_throw_exception(redis_exception_ce, "Redis server went away", 0 TSRMLS_CC); ++ } ++ return -1; + } + + return Z_LVAL_PP(socket); +@@ -471,7 +478,7 @@ PHP_METHOD(Redis,__destruct) { + + // Grab our socket + RedisSock *redis_sock; +- if (redis_sock_get(getThis(), &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(getThis(), &redis_sock TSRMLS_CC, 1) < 0) { + RETURN_FALSE; + } + +@@ -504,7 +511,7 @@ PHP_METHOD(Redis, pconnect) + } else { + /* reset multi/exec state if there is one. */ + RedisSock *redis_sock; +- if (redis_sock_get(getThis(), &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(getThis(), &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -547,7 +554,7 @@ PHPAPI int redis_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) { + } + + /* if there is a redis sock already we have to remove it from the list */ +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) > 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) > 0) { + if (zend_hash_find(Z_OBJPROP_P(object), "socket", + sizeof("socket"), (void **) &socket) == FAILURE) { + /* maybe there is a socket but the id isn't known.. what to do? */ +@@ -587,7 +594,7 @@ PHP_METHOD(Redis, close) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -617,7 +624,7 @@ PHP_METHOD(Redis, set) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -656,7 +663,7 @@ PHP_METHOD(Redis, setex) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -691,7 +698,7 @@ PHP_METHOD(Redis, setnx) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -729,7 +736,7 @@ PHP_METHOD(Redis, getSet) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -763,7 +770,7 @@ PHP_METHOD(Redis, randomKey) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -778,6 +785,39 @@ PHP_METHOD(Redis, randomKey) + } + /* }}} */ + ++/* {{{ proto string Redis::echo(string key) ++ */ ++PHP_METHOD(Redis, echo) ++{ ++ zval *object; ++ RedisSock *redis_sock; ++ char *key = NULL, *cmd; ++ int key_len, cmd_len; ++ int key_free; ++ ++ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", ++ &object, redis_ce, ++ &key, &key_len) == FAILURE) { ++ RETURN_FALSE; ++ } ++ ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { ++ RETURN_FALSE; ++ } ++ ++ key_free = redis_key_prefix(redis_sock, &key, &key_len TSRMLS_CC); ++ cmd_len = redis_cmd_format_static(&cmd, "ECHO", "s", key, key_len); ++ if(key_free) efree(key); ++ ++ REDIS_PROCESS_REQUEST(redis_sock, cmd, cmd_len); ++ IF_ATOMIC() { ++ redis_string_response(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock, NULL, NULL); ++ } ++ REDIS_PROCESS_RESPONSE(redis_string_response); ++ ++} ++/* }}} */ ++ + /* {{{ proto string Redis::renameKey(string key_src, string key_dst) + */ + PHP_METHOD(Redis, renameKey) +@@ -796,7 +836,7 @@ PHP_METHOD(Redis, renameKey) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -833,7 +873,7 @@ PHP_METHOD(Redis, renameNx) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -868,7 +908,7 @@ PHP_METHOD(Redis, get) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -900,7 +940,7 @@ PHP_METHOD(Redis, ping) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -929,7 +969,7 @@ PHPAPI void redis_atomic_increment(INTERNAL_FUNCTION_PARAMETERS, char *keyword, + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + key_free = redis_key_prefix(redis_sock, &key, &key_len TSRMLS_CC); +@@ -1055,7 +1095,7 @@ PHP_METHOD(Redis, getMultiple) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1141,7 +1181,7 @@ PHP_METHOD(Redis, exists) + &key, &key_len) == FAILURE) { + RETURN_FALSE; + } +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1240,7 +1280,7 @@ PHP_METHOD(Redis, getKeys) + RETURN_NULL(); + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1274,7 +1314,7 @@ PHP_METHOD(Redis, type) + RETURN_NULL(); + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1304,7 +1344,7 @@ PHP_METHOD(Redis, append) + RETURN_NULL(); + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1333,7 +1373,7 @@ PHP_METHOD(Redis, getRange) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1361,7 +1401,7 @@ PHP_METHOD(Redis, setRange) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1389,7 +1429,7 @@ PHP_METHOD(Redis, getBit) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1418,7 +1458,7 @@ PHP_METHOD(Redis, setBit) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1447,7 +1487,7 @@ PHP_METHOD(Redis, strlen) + RETURN_NULL(); + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1477,7 +1517,7 @@ generic_push_function(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int keyword_l + RETURN_NULL(); + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1550,7 +1590,7 @@ PHP_METHOD(Redis, lInsert) + RETURN_NULL(); + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1599,7 +1639,7 @@ generic_pop_function(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int keyword_le + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1689,7 +1729,7 @@ PHP_METHOD(Redis, lSize) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1725,7 +1765,7 @@ PHP_METHOD(Redis, lRemove) + RETURN_NULL(); + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1761,7 +1801,7 @@ PHP_METHOD(Redis, listTrim) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1794,7 +1834,7 @@ PHP_METHOD(Redis, lGet) + RETURN_NULL(); + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1827,7 +1867,7 @@ PHP_METHOD(Redis, lGetRange) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1878,7 +1918,7 @@ PHP_METHOD(Redis, sSize) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1930,7 +1970,7 @@ PHP_METHOD(Redis, sMove) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -1985,7 +2025,7 @@ PHP_METHOD(Redis, sContains) + return; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -2018,7 +2058,7 @@ PHP_METHOD(Redis, sMembers) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -2059,7 +2099,7 @@ PHPAPI int generic_multiple_args_cmd(INTERNAL_FUNCTION_PARAMETERS, char *keyword + } + + /* get redis socket */ +- if (redis_sock_get(getThis(), out_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(getThis(), out_sock TSRMLS_CC, 0) < 0) { + ZVAL_BOOL(return_value, 0); + return FAILURE; + } +@@ -2392,7 +2432,7 @@ PHP_METHOD(Redis, sort) { + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -2603,7 +2643,7 @@ PHPAPI void generic_sort_cmd(INTERNAL_FUNCTION_PARAMETERS, char *sort, int use_a + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + if(key_len == 0) { +@@ -2798,7 +2838,7 @@ PHPAPI void generic_expire_cmd(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -2847,7 +2887,7 @@ PHP_METHOD(Redis, lSet) { + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -2874,7 +2914,7 @@ PHPAPI void generic_empty_cmd_impl(INTERNAL_FUNCTION_PARAMETERS, char *cmd, int + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -2921,7 +2961,7 @@ PHPAPI void generic_empty_long_cmd(INTERNAL_FUNCTION_PARAMETERS, char *cmd, int + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -2988,7 +3028,7 @@ PHP_METHOD(Redis, auth) { + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3017,7 +3057,7 @@ PHP_METHOD(Redis, persist) { + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3048,7 +3088,7 @@ PHP_METHOD(Redis, ttl) { + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3079,7 +3119,7 @@ PHP_METHOD(Redis, info) { + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3118,7 +3158,7 @@ PHP_METHOD(Redis, select) { + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3148,7 +3188,7 @@ PHP_METHOD(Redis, move) { + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3183,7 +3223,7 @@ generic_mset(INTERNAL_FUNCTION_PARAMETERS, char *kw, void (*fun)(INTERNAL_FUNCTI + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3307,7 +3347,7 @@ PHP_METHOD(Redis, rpoplpush) + zval *object; + RedisSock *redis_sock; + char *srckey = NULL, *dstkey = NULL; +- int srckey_len, dstkey_len, cmd_len; ++ int srckey_len, dstkey_len; + + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oss", + &object, redis_ce, &srckey, &srckey_len, +@@ -3315,7 +3355,7 @@ PHP_METHOD(Redis, rpoplpush) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3339,7 +3379,7 @@ PHP_METHOD(Redis, brpoplpush) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3367,7 +3407,7 @@ PHP_METHOD(Redis, zAdd) { + int argc = ZEND_NUM_ARGS(), i; + + /* get redis socket */ +- if (redis_sock_get(getThis(), &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(getThis(), &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3466,7 +3506,7 @@ PHP_METHOD(Redis, zRange) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3529,7 +3569,7 @@ PHP_METHOD(Redis, zDeleteRangeByScore) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3562,7 +3602,7 @@ PHP_METHOD(Redis, zDeleteRangeByRank) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3596,7 +3636,7 @@ PHP_METHOD(Redis, zReverseRange) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3649,7 +3689,7 @@ redis_generic_zrange_by_score(INTERNAL_FUNCTION_PARAMETERS, char *keyword) { + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3755,7 +3795,7 @@ PHP_METHOD(Redis, zCount) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3786,7 +3826,7 @@ PHP_METHOD(Redis, zCard) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3820,7 +3860,7 @@ PHP_METHOD(Redis, zScore) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3853,7 +3893,7 @@ PHPAPI void generic_rank_method(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3903,7 +3943,7 @@ PHPAPI void generic_incrby_method(INTERNAL_FUNCTION_PARAMETERS, char *keyword, i + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -3948,7 +3988,7 @@ PHPAPI void generic_z_command(INTERNAL_FUNCTION_PARAMETERS, char *command, int c + RETURN_FALSE; + } + +- if(redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if(redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -4126,7 +4166,7 @@ generic_hset(INTERNAL_FUNCTION_PARAMETERS, char *kw, void (*fun)(INTERNAL_FUNCTI + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -4170,7 +4210,7 @@ PHP_METHOD(Redis, hGet) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + key_free = redis_key_prefix(redis_sock, &key, &key_len TSRMLS_CC); +@@ -4200,7 +4240,7 @@ PHP_METHOD(Redis, hLen) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -4232,7 +4272,7 @@ generic_hash_command_2(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int keyword_ + return NULL; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + ZVAL_BOOL(return_value, 0); + return NULL; + } +@@ -4293,7 +4333,7 @@ generic_hash_command_1(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int keyword_ + return NULL; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + ZVAL_BOOL(return_value, 0); + return NULL; + } +@@ -4441,7 +4481,7 @@ PHP_METHOD(Redis, hIncrBy) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -4492,7 +4532,7 @@ PHP_METHOD(Redis, hMget) { + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + nb_fields = zend_hash_num_elements(Z_ARRVAL_P(z_array)); +@@ -4572,7 +4612,7 @@ PHP_METHOD(Redis, hMset) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -4681,7 +4721,7 @@ PHP_METHOD(Redis, multi) + + /* if the flag is activated, send the command, the reply will be "QUEUED" or -ERR */ + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -4730,7 +4770,7 @@ PHP_METHOD(Redis, discard) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -4832,7 +4872,7 @@ PHP_METHOD(Redis, exec) + &object, redis_ce) == FAILURE) { + RETURN_FALSE; + } +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -4931,7 +4971,7 @@ PHP_METHOD(Redis, pipeline) + } + + /* if the flag is activated, send the command, the reply will be "QUEUED" or -ERR */ +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + redis_sock->mode = PIPELINE; +@@ -4963,7 +5003,7 @@ PHP_METHOD(Redis, publish) + RETURN_NULL(); + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -5004,7 +5044,7 @@ PHP_METHOD(Redis, subscribe) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -5164,7 +5204,7 @@ PHP_METHOD(Redis, unsubscribe) + &object, redis_ce, &array) == FAILURE) { + RETURN_FALSE; + } +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -5248,7 +5288,7 @@ PHP_METHOD(Redis, slaveof) + &object, redis_ce, &host, &host_len, &port) == FAILURE) { + RETURN_FALSE; + } +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -5280,7 +5320,7 @@ PHP_METHOD(Redis, object) + &object, redis_ce, &info, &info_len, &key, &key_len) == FAILURE) { + RETURN_FALSE; + } +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -5318,7 +5358,7 @@ PHP_METHOD(Redis, getOption) { + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -5354,7 +5394,7 @@ PHP_METHOD(Redis, setOption) { + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +@@ -5414,7 +5454,7 @@ PHP_METHOD(Redis, config) + RETURN_FALSE; + } + +- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { ++ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { + RETURN_FALSE; + } + +diff --git a/tests/TestRedis.php b/tests/TestRedis.php +index 1033b01..46af355 100644 +--- a/tests/TestRedis.php ++++ tests/TestRedis.php +@@ -115,6 +115,12 @@ class Redis_Test extends TestSuite + $this->assertEquals($s, $this->redis->get('x')); + } + ++ public function testEcho() { ++ $this->assertEquals($this->redis->echo("hello"), "hello"); ++ $this->assertEquals($this->redis->echo(""), ""); ++ $this->assertEquals($this->redis->echo(" 0123 "), " 0123 "); ++ } ++ + public function testErr() { + + $this->redis->set('x', '-ERR'); --- php5-redis-2.2.1_1.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted: