diff options
-rw-r--r-- | async_private.h | 18 | ||||
-rw-r--r-- | hiredis.h | 5 |
2 files changed, 14 insertions, 9 deletions
diff --git a/async_private.h b/async_private.h index e4a22ab..b9d23ff 100644 --- a/async_private.h +++ b/async_private.h @@ -54,14 +54,18 @@ } while(0); static inline void refreshTimeout(redisAsyncContext *ctx) { - if (!(ctx->c.flags & REDIS_CONNECTED)) { - if (ctx->c.connect_timeout && ctx->ev.scheduleTimer && - (ctx->c.connect_timeout->tv_sec || ctx->c.connect_timeout->tv_usec)) { - ctx->ev.scheduleTimer(ctx->ev.data, *ctx->c.connect_timeout); + #define REDIS_TIMER_ISSET(tvp) \ + (tvp && ((tvp)->tv_sec || (tvp)->tv_usec)) + + #define REDIS_EL_TIMER(ac, tvp) \ + if ((ac)->ev.scheduleTimer && REDIS_TIMER_ISSET(tvp)) { \ + (ac)->ev.scheduleTimer((ac)->ev.data, *(tvp)); \ } - } else if (ctx->c.command_timeout && ctx->ev.scheduleTimer && - (ctx->c.command_timeout->tv_sec || ctx->c.command_timeout->tv_usec)) { - ctx->ev.scheduleTimer(ctx->ev.data, *ctx->c.command_timeout); + + if (ctx->c.flags & REDIS_CONNECTED) { + REDIS_EL_TIMER(ctx, ctx->c.command_timeout); + } else { + REDIS_EL_TIMER(ctx, ctx->c.connect_timeout); } } @@ -176,9 +176,10 @@ typedef struct { int type; /* bit field of REDIS_OPT_xxx */ int options; - /* timeout value for connect operation. if NULL, no timeout is used */ + /* timeout value for connect operation. If NULL, no timeout is used */ const struct timeval *connect_timeout; - /* timeout value for commands. if NULL, no timeout is used. (can be set later on with redisSetTimeout/redisAsyncSetTimeout) */ + /* timeout value for commands. If NULL, no timeout is used. This can be + * updated at runtime with redisSetTimeout/redisAsyncSetTimeout. */ const struct timeval *command_timeout; union { /** use this field for tcp/ip connections */ |