summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-09-25Call connect(2) again for non-blocking connectMark Nunberg
This retrieves the actual error which occurred, as getsockopt is not always reliable in this regard.
2018-09-25Merge pull request #612 from thomaslee/tom_release_prepMark Nunberg
Prepare for the 0.14.0 release
2018-09-25Prepare for the 0.14.0 releaseTom Lee
SONAME bumped to 0.14 because we've broken ABI compatibility with 0.13.x
2018-09-24Merge pull request #610 from thomaslee/tom_static_string2llMark Nunberg
Make string2ll static to avoid conflict with redis
2018-09-24Make string2ll static to avoid conflict with redisTom Lee
See discussion on #609. This should also make it easier for redis to update the vendored/bundled hiredis (though not by much).
2018-05-31Use -dynamiclib instead of -shared on macOSRyan Schmidt
-dynamiclib is the correct documented flag to use to create dynamic libraries on macOS. Newer toolchains recognize -shared as a synonym of -dynamiclib but older toolchains don't.
2018-05-21Add Changelog entry about the integer parsing changesJustin Brewer
This should have been included in 93421f9d84868989ab0e401fb3be7b31c7a9c181 but was missed. Signed-off-by: Justin Brewer <jzb0012@auburn.edu>
2018-05-20Don't overflow 32 bit machines in the tests!michael-grunder
2018-05-20Add an integer parsing heavy workload to throughput testingmichael-grunder
2018-05-20Use string2ll from Redismichael-grunder
This commit pulls string2ll from Redis (with permission from Antirez) as strtoll is 2-3x slower and even worse vs the original version in hiredis that didn't check for overflow at all. By using string2ll there is almost no measurable performance impact of overflow detection even in integer parsing heavy workloads (e.g. INCRBY commands).
2018-05-20Fix bulk and multi-bulk length truncationJustin Brewer
processMultiBulkItem truncates the value read from readLongLong, resulting in a corrupted state when the next item is read. createArray takes an int, so bound to INT_MAX. Inspection showed that processBulkItem had the same truncation issue. createString takes size_t, so bound to SIZE_MAX. This only has an effect on 32-bit platforms. A strict lower bound is also added, since negative lengths other than -1 are invalid according to RESP. Signed-off-by: Justin Brewer <jzb0012@auburn.edu>
2018-05-19Properly detect integer parse errorsJustin Brewer
Badly formatted or out-of-range integers are now protocol errors. Signed-off-by: Justin Brewer <jzb0012@auburn.edu>
2018-05-16Merge branch 'master' of github.com:redis/hiredismichael-grunder
2018-05-16Make sure we've got a path separator before the actual dylib namemichael-grunder
2018-05-16Merge remote-tracking branch 'ryandesign/install_name'michael-grunder
2018-05-15Merge pull request #596 from ryandesign/cp-pPRMichael Grunder
Use cp -pPR instead of cp -a
2018-05-14Use cp -pPR instead of cp -aRyan Schmidt
This should be equivalent but compatible with older versions of cp.
2018-05-14Use absolute install_nameRyan Schmidt
Fixes #437.
2018-05-13Merge remote-tracking branch 'justinbrewer/hiredis-pr1' into posix-build-fixesmichael-grunder
2018-05-09Attempted fix for Cygwin to expose getaddrinfo and friendsmichael-grunder
2018-05-09Merge remote-tracking branch 'hyjin/master'michael-grunder
2018-04-30Remove redundant NULL checksJustin Brewer
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>
2018-04-30Remove redundant zero storesJustin Brewer
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>
2018-04-30Fix a segfault on *BSDJustin Brewer
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>
2018-04-30Drop __redis_strerror_rJustin Brewer
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>
2018-04-28Strip down fmacros.hJustin Brewer
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>
2018-04-28Use AF_UNIXJustin Brewer
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>
2018-01-06Merge #569not-a-robot[bot]
569: Ibm aix fix r=badboy
2018-01-06Make it compile on IBM AIX systemsJan-Erik Rediger
Closes #422
2018-01-05Merge #568not-a-robot[bot]
568: Make XOPEN_SOURCE definition explicit per architecture r=badboy Fixes #441
2018-01-05Make XOPEN_SOURCE definition explicit per architectureJan-Erik Rediger
Fixes #441
2018-01-05calloc param fixes and NULL checkcdliuqiang@gmail.com
2018-01-05Merge pull request #561 from zshipko/masterJan-Erik Rediger
Fix "make install" on OpenBSD
2018-01-05Merge pull request #564 from dmvo/masterJan-Erik Rediger
Remove $(ARCH) expansion from the Makefile
2017-12-28Strip compiler options from the CC variableDmitri Vorobiev
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>
2017-12-27Remove $(ARCH) expansion from the MakefileDmitri Vorobiev
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>
2017-11-28Fix "make install" on OpenBSDZach Shipko
2017-11-07Merge #554not-a-robot[bot]
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>
2017-11-07chore: Build only branches bors needsJan-Erik Rediger
2017-10-30build: do not assume that INSTALL is cpIgor Gnatenko
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>
2017-09-01Merge pull request #542 from EdwardBetts/spellingJan-Erik Rediger
correct spelling mistake
2017-09-01correct spelling mistakeEdward Betts
2017-07-15Merge #533not-a-robot[bot]
533: Small fixes r=badboy
2017-07-15Merge #524 #525not-a-robot[bot]
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.
2017-07-15Merge #523not-a-robot[bot]
523: Fix leak if setsockopt fails r=badboy
2017-06-16Merge pull request #532 from amallia/assert-side-effectsJan-Erik Rediger
Assert statement calls a function which has side effects
2017-06-15Small fixesamallia
2017-06-15Assert statement calls a function which has side effectsamallia
2017-05-17Fix compilation on FreeBSD 10.3 with default compilereldarko
2017-05-15Don't pass a negative value to __redisAsyncCommand if ↵Frederik Deweerdt
redisFormatSdsCommandArgv fails