Commit Graph

133 Commits

Author SHA1 Message Date
Michael Grunder 2e7d7cbabd
Resp3 oob push support (#841)
Proper support for RESP3 PUSH messages.

By default, PUSH messages are now intercepted and the reply memory freed.  
This means existing code should work unchanged when connecting to Redis
>= 6.0.0 even if `CLIENT TRACKING` were then enabled.

Additionally, we define two callbacks users can configure if they wish to handle
these messages in a custom way:

void redisPushFn(void *privdata, void *reply);
void redisAsyncPushFn(redisAsyncContext *ac, void *reply);

See #825
2020-07-19 18:54:42 -07:00
Michael Grunder 8e0264cfd6
Allow users to replace allocator and handle OOM everywhere. (#800)
* Adds an indirection to every allocation/deallocation to allow users to 
  plug in ones of their choosing (use custom functions, jemalloc, etc).

* Gracefully handle OOM everywhere in hiredis.  This should make it possible
  for users of the library to have more flexibility in how they handle such situations.

* Changes `redisReaderTask->elements` from an `int` to a `long long` to prevent
  a possible overflow when transferring the task elements into a `redisReply`.

* Adds a configurable `max elements` member to `redisReader` that defaults to
  2^32 - 1.  This can be set to "unlimited" by setting the value to zero.
2020-05-22 09:27:49 -07:00
Yossi Gottlieb 243099ccd2
Fix missing SSL build/install options. (#812)
* Fix missing SSL build/install options.

* Use different build commands for non-Linux linkers.
* Add missing install targets.

Fixes #809
2020-05-19 10:13:32 -07:00
Michael Grunder 2cb203c1e9
Attempt to fix compilation on Solaris (#796)
See #757
2020-04-23 14:15:59 -07:00
Michael Grunder b484021859
Fix USE_SSL=1 make/cmake on OSX and CMake tests (#789)
* Fix linker problems when building with SSL enabled on OSX
* Corrects `HIREDIS_SSL=ON` to `USE_SSL=ON` so we test building with
  SSL enabled on travis.
2020-04-13 09:32:32 -07:00
akichan 3ae4739799 install alloc.h
alloc.h added in # 754
But not added to INSTALL_INCLUDE_PATH
2020-01-29 17:26:34 +09:00
Michael Grunder 669ac9d0c8
Safe allocation wrappers (#754)
Create allocation wrappers with a configurable OOM handler (defaults to abort()).

See #752, #747
2020-01-28 12:13:05 -08:00
Yossi Gottlieb d952ed877a Add SSL mode tests.
This repeats all existing tests in SSL mode, but does not yet provide
SSL-specific tests.
2019-09-16 17:30:35 +03:00
Yossi Gottlieb 5872d818d9 Separate hiredis and hiredis_ssl library build. 2019-09-01 13:46:27 +03:00
Yossi Gottlieb df68d7d8bd Rename sslio. 2019-08-29 22:14:09 +03:00
Yossi Gottlieb 8715ba5c82 wip: SSL code reorganization, see #705. 2019-08-29 22:09:37 +03:00
m dc6d19b9ec Port network layer to Winsock
With this change, Hiredis builds with MinGW and runs on Windows.
2019-04-01 11:54:37 +02:00
Mark Nunberg 1ec4aefba6 Fix ifeq condition (thanks @regae) 2019-02-21 06:21:53 -05:00
Mark Nunberg 3949c8a153 Disable SSL by default 2019-02-20 09:11:10 -05:00
valentino 271f33953f fix pkg config 2019-02-20 09:11:10 -05:00
valentino 389e694abe Fix compilation on Ubuntu 2019-02-20 09:10:10 -05:00
Mark Nunberg f51363a70c Don't warn on missing field initializers 2019-02-20 09:10:10 -05:00
Mark Nunberg d329cc952a Use SSL by default 2019-02-20 09:10:10 -05:00
Mark Nunberg bc2a8f372a Minor SSL-related fixes 2019-02-20 09:10:10 -05:00
Mark Nunberg 82549a53de Disable SSL by default 2019-02-20 09:10:10 -05:00
Mark Nunberg 08efa46599 SSL for async I/O 2019-02-20 09:10:10 -05:00
Mark Nunberg 0c14544906 Initial SSL (sync) implementation 2019-02-20 09:10:10 -05:00
Jörg Thalheim 2fa34e37af
Makefile: use predefined AR
This allows to override it for cross compilation.
2018-12-04 20:47:37 +00:00
Tom Lee 3bcf286356 Add CPPFLAGS to REAL_CFLAGS 2018-09-26 13:25:24 -07:00
Ryan Schmidt a65537a672 Use -dynamiclib instead of -shared on macOS
-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-31 02:52:45 -05:00
michael-grunder dbde4f68cf Merge branch 'master' of github.com:redis/hiredis 2018-05-16 09:57:40 -07:00
michael-grunder 9d3b4ec703 Make sure we've got a path separator before the actual dylib name 2018-05-16 09:08:00 -07:00
Ryan Schmidt 0e9af8acb6
Use cp -pPR instead of cp -a
This should be equivalent but compatible with older versions of cp.
2018-05-14 17:37:14 -05:00
Ryan Schmidt 881fcb776d
Use absolute install_name
Fixes #437.
2018-05-14 14:32:05 -05:00
Jan-Erik Rediger 43284ee495
Merge pull request #561 from zshipko/master
Fix "make install" on OpenBSD
2018-01-05 15:50:31 +01:00
Dmitri Vorobiev 12a9d1a32b Strip compiler options from the CC variable
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-28 11:42:45 +02:00
Dmitri Vorobiev 3238cf4fe7 Remove $(ARCH) expansion from the Makefile
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-12-27 14:46:07 +02:00
Zach Shipko a2ef2b69bf Fix "make install" on OpenBSD 2017-11-28 17:43:11 -08:00
Igor Gnatenko 725a96aaa2 build: do not assume that INSTALL is cp
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-10-30 10:22:05 +01:00
Trustfarm-heart 06eedd8a24 Build error patch with glib-2.0
In case of some glib-2.0 linker error ,
make examples 
can't link with glib2.0,  in this case -lglib-2.0  to after includes and move to last will solve the issues.
2016-10-10 04:17:28 +09:00
Jan-Erik Rediger acf8950041 fix: Rename DEBUG to DEBUG_FLAGS
This avoids issues with environments where DEBUG is set to an arbitrary
value to force debug mode in other tools.

BREAKING CHANGE: This breaks builds that explicitely set `DEBUG` to
                 some value (even the empty value).
                 To get back the old behaviour change the `DEBUG_FLAGS`
                 variable now.
2016-04-20 18:46:35 +02:00
Jan-Erik Rediger 8e6d8195a9 Merge branch 'soname-stable' into unstable 2015-08-24 16:54:48 +02:00
Jan-Erik Rediger a9a0af1d35 Use container-based Travis by installing packages through the addon 2015-07-28 00:21:24 +02:00
Dmitry Bakhvalov c18a564818 Added MacOS X addapter and corresponding example.
Added MacOS X support via CoreFoundation run loop.
2015-07-27 23:19:14 +02:00
Pietro Cerutti 8ef7d595ac Add Qt adapter and relative example. 2015-07-27 23:17:41 +02:00
Gergely Nagy 3b153cbf9d Add an Ivykis adapter
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>
2015-07-27 22:48:05 +02:00
Jan-Erik Rediger 9644a96a48 Use stable soname version 2015-07-27 22:14:03 +02:00
w359405949 485d0a148f Update Makefile
fix link error while run "make hiredis-example-libuv":

undefined reference to `clock_gettime'
undefined reference to `clock_getres'
2015-05-30 09:45:20 +08:00
Jan-Erik Rediger 26999505d6 Make sure to compile example to trigger edge-cases in compiling 2015-05-03 22:33:39 +02:00
Jan-Erik Rediger 8999750f12 Revert "Always compile with C99 standard."
This reverts commit d8145d79ce.
2015-05-03 22:32:42 +02:00
Jan-Erik Rediger d8145d79ce Always compile with C99 standard.
Turns out: gnu9x defines `unix` to 1, making it unusable as a variable
name.
2015-04-16 22:51:32 +02:00
David Watson dc13bc8627 Add PKGCONFNAME to install dependencies.
Attempting to use the install target before the make target works fine,
except for the missing pkgconfig file.  Adding that file to the
dependencies for the install target to make sure it gets created first.
2015-03-28 12:17:11 -04:00
Jan-Erik Rediger 30814af63c Correct escaping for prefix in pkgconf file 2015-03-19 09:21:25 +01:00
Dan Skorupski 97364ed59a Fix hiredis.pc generation. 2015-03-18 18:56:11 -05:00
Dominique Leuenberger 37c06facda Fix pkgconf file: escaping needed
Due to the various processors going over the command, we need more
escaping.

1) Make parses it, so $${libdir} becomes ${libdir}
2) 'shell' parses it for the 'echo command', whereas echo ${libdir}
would be an empty string; escape it as \${libdir} to ensure we get what
we want.

Closes #312
2015-03-03 08:12:49 -08:00