Age | Commit message (Collapse) | Author |
|
|
|
|
|
Fixes #437.
|
|
|
|
|
|
|
|
free(NULL) is a valid NOP. Most of the hiredis free functions behave the
same way. redisReaderFree is updated to also be NULL-safe.
There is one redundant NULL check at sds.c:1036, but it's left as is
since sds is imported from upstream.
Signed-off-by: Justin Brewer <jzb0012@auburn.edu>
|
|
calloc is guaranteed to provide a zero-initialized buffer. There is
no need to set fields to zero explicitly.
Signed-off-by: Justin Brewer <jzb0012@auburn.edu>
|
|
freeaddrinfo is not required by POSIX to be NULL-safe. OpenBSD will
SIGSEGV. NetBSD will assert. FreeBSD up to 11.1 will SIGSEGV, while in
future versions, it will be a silent NOP [1].
Commit d4b715f0aa97 ("Fix potential race in 'invalid timeout' tests")
added a code path to _redisContextConnectTcp which calls
freeaddrinfo(NULL), triggering the segfault. Put a NULL check around the
call to freeaddrinfo.
[1] - https://github.com/freebsd/freebsd/commit/e9167239034a1e475c3238f8d133ebf703424ee0
Signed-off-by: Justin Brewer <jzb0012@auburn.edu>
|
|
Since _GNU_SOURCE is now guaranteed to be unset, it is no longer
necessary to support the GNU-specific version of strerror_r.
Drop __redis_strerror_r from the header, and call strerror_r directly.
This breaks any external users of this macro, but they shouldn't have
been using it in the first place.
Signed-off-by: Justin Brewer <jzb0012@auburn.edu>
|
|
strerror_r and addrinfo require _POSIX_C_SOURCE >= 200112L, which is
implied by _XOPEN_SOURCE >= 600. With the removal of AF_LOCAL usage,
the only non-standard features being used are the TCP_KEEP* socket
flags. _DARWIN_C_SOURCE is required to expose TCP_KEEPALIVE.
Fall back to using _XOPEN_SOURCE 600 for all platforms, and
additionally define _DARWIN_C_SOURCE for Darwin.
Signed-off-by: Justin Brewer <jzb0012@auburn.edu>
|
|
AF_LOCAL is the old, non-standardized name for AF_UNIX. Just use
AF_UNIX, rather than wrestling with platform specifics of AF_LOCAL
definitions.
Signed-off-by: Justin Brewer <jzb0012@auburn.edu>
|
|
569: Ibm aix fix r=badboy
|
|
Closes #422
|
|
568: Make XOPEN_SOURCE definition explicit per architecture r=badboy
Fixes #441
|
|
Fixes #441
|
|
|
|
Fix "make install" on OpenBSD
|
|
Remove $(ARCH) expansion from the Makefile
|
|
The Makefile checks validity of the compiler command in the CC
variable by feeding the contents of that variable to the `type'
utility. Some environments include compiler options in the CC
variable such as architecture specific tuning flags. For such
cases it is necessary to first strip everything except the
command itself from the contents of the CC variable prior to
checking the command with the type utility, which is what this
patch is introducing. We use shell parameter expansion mechanism
for this purpose.
Signed-off-by: Dmitri Vorobiev <dmitri.vorobiev@movial.com>
|
|
Some compilation environments (such as Yocto) define the ARCH
environment variable to indicate the target architecture. For
such enviroments, hiredis build fails, because the expanded
$(ARCH) variable in the Makefile gets erroneously interpreted
as an argument to the `-ggdb' command line option during the
compilation stage or as an input file name during the linking
stage.
This patch removes $(ARCH) expansions from the Makefile. This
doesn't harm cross-compilation, the latter goes fine with the
properly assigned CC environment variable. For native builds,
this patch does not imply any changes.
Signed-off-by: Dmitri Vorobiev <dmitri.vorobiev@movial.com>
|
|
|
|
554: build: do not assume that INSTALL is cp r=badboy
INSTALL is supposed to be `install` in most of the cases which
doesn't work with directories, but works perfectly with files.
Don't do this assumption.
Reported-by: Jiří Vymazal <jvymazal@redhat.com>
References: https://bugzilla.redhat.com/show_bug.cgi?id=1506251
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
|
|
|
|
INSTALL is supposed to be `install` in most of the cases which
doesn't work with directories, but works perfectly with files.
Don't do this assumption.
Reported-by: Jiří Vymazal <jvymazal@redhat.com>
References: https://bugzilla.redhat.com/show_bug.cgi?id=1506251
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
|
|
correct spelling mistake
|
|
|
|
533: Small fixes r=badboy
|
|
524: Don't pass a negative value to __redisAsyncCommand if redisFormatSdsCommandArgv fails r=badboy
525: Fix compilation on FreeBSD 10.3 with default compiler r=badboy
Given FreeBSD 10.3 with default compiler:
> $ cc -v
> FreeBSD clang version 3.4.1 (tags/RELEASE_34/dot1-final 208032) 20140512
> Target: x86_64-unknown-freebsd10.3
Defining _XOPEN_SOURCE to 600 on the fixed line leads to the following errors:
> cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c
> net.c:435:29: error: use of undeclared identifier 'AF_LOCAL'
> if (redisCreateSocket(c,AF_LOCAL) < 0)
> ^
> net.c:460:21: error: use of undeclared identifier 'AF_LOCAL'
> sa.sun_family = AF_LOCAL;
> ^
> 2 errors generated.
>
AF_LOCAL is defined in sys/socket.h within ifdef __BSD_VISIBLE.
__BSD_VISIBLE could be defined in sys/cdefs.h, but it is never done if _XOPEN_SOURCE is defined.
So on FreeBSD _XOPEN_SOURCE shouldn't be defined.
|
|
523: Fix leak if setsockopt fails r=badboy
|
|
Assert statement calls a function which has side effects
|
|
|
|
|
|
|
|
redisFormatSdsCommandArgv fails
|
|
|
|
redisLibeventCleanup will be leak
|
|
chore(CI): Skip installing Cygwin
|
|
|
|
Build error when make examples , patch with glib-2.0 positon move will solve.
|
|
event_del can not free the "e->rev" and "e->wev",that will leak when reconnect the redis
|
|
suppress gcc complaint
|
|
|
|
|
|
|
|
Fix __redisSetErrorFromErrno() can not get error string.
|
|
snprintf() may change errno.
|
|
using new version libevent
|
|
Prevented uv adapter from calling write when context has been freed
The `redisLibuvPoll` function can be called with both the `UV_READABLE` and `UV_WRITABLE` flags set at the same time. Calling `redisAsyncHandleRead` can lead to a disconnect and the context being cleaned up/freed. If this happens then `redisAsyncHandleWrite` should not be called otherwise memory read/write errors and duplicate freeing will occur.
These changes prevent this from happening by having the `redisLibuvCleanup` callback indicate that the context has been cleaned. This is done indirectly by setting the context to a null pointer, maybe someone can come up with a cleaner way.
|
|
Closes #471
|