mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-23 08:38:27 -05:00
If the unit of a timeout is seconds treat it a float
This commit is contained in:
parent
438ae496af
commit
eca0187370
@ -75,10 +75,18 @@
|
|||||||
* is zero. */
|
* is zero. */
|
||||||
int getTimeoutFromObjectOrReply(client *c, robj *object, mstime_t *timeout, int unit) {
|
int getTimeoutFromObjectOrReply(client *c, robj *object, mstime_t *timeout, int unit) {
|
||||||
long long tval;
|
long long tval;
|
||||||
|
long double ftval;
|
||||||
|
|
||||||
|
if (unit == UNIT_SECONDS) {
|
||||||
|
if (getLongDoubleFromObjectOrReply(c,object,&ftval,
|
||||||
|
"timeout is not an float or out of range") != C_OK)
|
||||||
|
return C_ERR;
|
||||||
|
tval = (long long) (ftval * 1000.0);
|
||||||
|
} else {
|
||||||
if (getLongLongFromObjectOrReply(c,object,&tval,
|
if (getLongLongFromObjectOrReply(c,object,&tval,
|
||||||
"timeout is not an integer or out of range") != C_OK)
|
"timeout is not an integer or out of range") != C_OK)
|
||||||
return C_ERR;
|
return C_ERR;
|
||||||
|
}
|
||||||
|
|
||||||
if (tval < 0) {
|
if (tval < 0) {
|
||||||
addReplyError(c,"timeout is negative");
|
addReplyError(c,"timeout is negative");
|
||||||
@ -86,7 +94,6 @@ int getTimeoutFromObjectOrReply(client *c, robj *object, mstime_t *timeout, int
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (tval > 0) {
|
if (tval > 0) {
|
||||||
if (unit == UNIT_SECONDS) tval *= 1000;
|
|
||||||
tval += mstime();
|
tval += mstime();
|
||||||
}
|
}
|
||||||
*timeout = tval;
|
*timeout = tval;
|
||||||
|
@ -436,8 +436,11 @@ start_server {
|
|||||||
|
|
||||||
test "$pop: with non-integer timeout" {
|
test "$pop: with non-integer timeout" {
|
||||||
set rd [redis_deferring_client]
|
set rd [redis_deferring_client]
|
||||||
$rd $pop blist1 1.1
|
r del blist1
|
||||||
assert_error "ERR*not an integer*" {$rd read}
|
$rd $pop blist1 0.1
|
||||||
|
r rpush blist1 foo
|
||||||
|
assert_equal {blist1 foo} [$rd read]
|
||||||
|
assert_equal 0 [r exists blist1]
|
||||||
}
|
}
|
||||||
|
|
||||||
test "$pop: with zero timeout should block indefinitely" {
|
test "$pop: with zero timeout should block indefinitely" {
|
||||||
|
Loading…
Reference in New Issue
Block a user