Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormichael-grunder <michael.grunder@gmail.com>2013-10-04 21:37:45 +0400
committermichael-grunder <michael.grunder@gmail.com>2013-10-04 21:37:45 +0400
commit00233a3f91fe4fb8355977bf81070fe8fc92f77b (patch)
tree53f7fe137064b442081adfb95aca43cec33fa918
parent853f86b1f2e0364a44a9c06539a8e4d957ef5896 (diff)
parent0f003bcb2d406b7540d20ab3f2011357fe637187 (diff)
Merge branch 'hotfix/setex_long_expires'setex_long_expires
Incorporate @zined and @s0enke commits to properly handle long timeout values and not overrun our buffer. Addresses #385
-rw-r--r--redis.c4
-rw-r--r--tests/TestRedis.php7
2 files changed, 9 insertions, 2 deletions
diff --git a/redis.c b/redis.c
index d57a17ac..ed4ec9d9 100644
--- a/redis.c
+++ b/redis.c
@@ -890,7 +890,7 @@ PHP_METHOD(Redis, set) {
val, val_len, set_type, 2);
} else if(expire > 0) {
/* Backward compatible SETEX redirection */
- cmd_len = redis_cmd_format_static(&cmd, "SETEX", "sds", key, key_len,
+ cmd_len = redis_cmd_format_static(&cmd, "SETEX", "sls", key, key_len,
expire, val, val_len);
} else {
/* SET <key> <value> */
@@ -932,7 +932,7 @@ PHPAPI void redis_generic_setex(INTERNAL_FUNCTION_PARAMETERS, char *keyword) {
val_free = redis_serialize(redis_sock, z_value, &val, &val_len TSRMLS_CC);
key_free = redis_key_prefix(redis_sock, &key, &key_len TSRMLS_CC);
- cmd_len = redis_cmd_format_static(&cmd, keyword, "sds", key, key_len, expire, val, val_len);
+ cmd_len = redis_cmd_format_static(&cmd, keyword, "sls", key, key_len, expire, val, val_len);
if(val_free) efree(val);
if(key_free) efree(key);
diff --git a/tests/TestRedis.php b/tests/TestRedis.php
index b93cef10..2a684754 100644
--- a/tests/TestRedis.php
+++ b/tests/TestRedis.php
@@ -408,6 +408,13 @@ class Redis_Test extends TestSuite
$this->assertTrue($this->redis->get('key') === '42');
}
+ public function testExpireAtWithLong() {
+ $longExpiryTimeExceedingInt = 3153600000;
+ $this->redis->delete('key');
+ $this->assertTrue($this->redis->setex('key', $longExpiryTimeExceedingInt, 'val') === TRUE);
+ $this->assertTrue($this->redis->ttl('key') === $longExpiryTimeExceedingInt);
+ }
+
public function testIncr()
{
$this->redis->set('key', 0);