diff options
author | michael-grunder <michael.grunder@gmail.com> | 2013-10-04 21:37:45 +0400 |
---|---|---|
committer | michael-grunder <michael.grunder@gmail.com> | 2013-10-04 21:37:45 +0400 |
commit | 00233a3f91fe4fb8355977bf81070fe8fc92f77b (patch) | |
tree | 53f7fe137064b442081adfb95aca43cec33fa918 | |
parent | 853f86b1f2e0364a44a9c06539a8e4d957ef5896 (diff) | |
parent | 0f003bcb2d406b7540d20ab3f2011357fe637187 (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.c | 4 | ||||
-rw-r--r-- | tests/TestRedis.php | 7 |
2 files changed, 9 insertions, 2 deletions
@@ -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); |