Fix potential race in 'invalid timeout' tests
It's possible for the call to connect() to succeed on the very first try, in which case the logic for checking for invalid timeout fields is never executed. When this happens, the tests fail because they expect a REDIS_ERR_IO but no such failure has occurred.
Tests aside, this is a potential source of irritating and hard-to-find intermittent bugs.
This patch forces the validation to occur early so that we get predictable behavior whenever an invalid timeout is specified.
Update read.c
static char *seekNewline(char *s, size_t len) :
this function can not parse the string,such as "hello world\r". the case that the last char is '\r'.
fix: Remove backwards compatibility macro's
Closes#296
BREAKING CHANGE: This removes the redisReplyReader* functions, which are
already replaced by redisReader* functions.
It renames `redisReplyReaderSetPrivdata`,
`redisReplyReaderGetObject` and `redisReplyReaderGetError`
to `redisReaderSetPrivdata`, `redisReaderGetObject`
and `redisReaderGetError`.
fmacros.h: Fix warning when compiled with -Wundef
When compiling with the flag `-Wundef` the following warning is emitted:
```
[ 40%] Building C object CMakeFiles/hiredis-STATIC.dir/read.c.o
In file included from /data/files/users/jerry/github/hiredis/read.c:33:0:
/data/files/users/jerry/github/hiredis/fmacros.h:17:5: warning: "__APPLE__" is not defined [-Wundef]
#if __APPLE__ && __MACH__
^
In file included from /usr/include/string.h:25:0,
from /data/files/users/jerry/github/hiredis/read.c:34:
```
Closes#296
BREAKING CHANGE: This removes the redisReplyReader* functions, which are
already replaced by redisReader* functions.
It renames `redisReplyReaderSetPrivdata`,
`redisReplyReaderGetObject` and `redisReplyReaderGetError`
to `redisReaderSetPrivdata`, `redisReaderGetObject`
and `redisReaderGetError`.
Prevent buffer overflow when formatting the error
strncat might copy n+1 bytes (n bytes from the source plus a terminating nul byte).
Also strncat appends after the first found nul byte. But all we pass is
a buffer we might not have zeroed out already.
Closes#380
test.c: Fix shadowed name with typedef when compiling with -Wshadow
Fixes:
```
/data/files/users/jerry/github/hiredis/test.c: In function 'test_free_null':
/data/files/users/jerry/github/hiredis/test.c:331:11: warning: declaration of 'redisContext' shadows a global declaration [-Wshadow]
void *redisContext = NULL;
^
In file included from /data/files/users/jerry/github/hiredis/test.c:13:0:
/data/files/users/jerry/github/hiredis/hiredis.h:161:3: note: shadowed declaration is here
} redisContext;
^
```
strncat might copy n+1 bytes (n bytes from the source plus a terminating nul byte).
Also strncat appends after the first found nul byte. But all we pass is
a buffer we might not have zeroed out already.
Closes#380
It's possible for the call to connect() to succeed on the very first
try, in which case the logic for checking for invalid timeout fields is
never executed. When this happens, the tests fail because they expect a
REDIS_ERR_IO but no such failure has occurred.
Tests aside, this is a potential source of irritating and hard-to-find
intermittent bugs.
This patch forces the validation to occur early so that we get
predictable behavior whenever an invalid timeout is specified.
This reverts commit 1db17f257b.
If the `REDIS_CONNECTED` flag is cleared,
the async onDisconnect callback function will never be called.
This causes problems as the disconnect is never reported back to the user.
Closes#359
This adds a new adapter and an example for using hiredis with the ivykis
async I/O library.
Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>