Age | Commit message (Collapse) | Author |
|
|
|
We need to allow our users to use redisContext->privdata as context
for any RESP3 PUSH messages, which means we can't use it for managing
SSL connections.
Bulletpoints:
* Create a secondary redisContext member for internal use only called
privctx and rename the redisContextFuncs->free_privdata accordingly.
* Adds a `free_privdata` function pointer so the user can tie allocated
memory to the lifetime of a redisContext (like they can already do
with redisAsyncContext)
* Enables SSL tests in .travis.yml
|
|
Small change to the logic introduced in #839
|
|
Add an additional timeout so the user has a convenient way of controlling distinct connect and command timeouts
|
|
Static analyzer's can't tell that hi_calloc is calloc-like, and report a
potential null pointer dereference. This isn't possible but it's
probably smarter to make the test anyway in the event code changes.
|
|
See #848
|
|
|
|
|
|
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
|
|
* Don't try to ignore SIGPIPE in Windows (it doesn't exist).
* Add an include to our win32.h compatibility header.
* Enable building examples on Travis in Windows.
See #831
|
|
It appears that _WIN32 is always defined by MSVC whereas WIN32 may not
be, depending on configuration.
|
|
* Switch to memurai for Windows tests
* Switch to macports from brew.
|
|
Co-authored-by: Omri Steiner <omri@insoundz.com>
|
|
When connecting with a timeout, we shouldn't also call `redisSetTimeout` which will implement a timeout for commands.
See related issue #722
|
|
Fix overflow bug in `sdsrange`
|
|
|
|
|
|
|
|
|
|
|
|
Using `strdup` as a struct member causes issues in older gcc
|
|
|
|
* 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.
|
|
Fixes #815
|
|
Standard function available and on most platforms uses a lookup table and not
a check with 3 ranges.
|
|
Pull RESP3 verbatim string handling from Redis
Fixes #802
|
|
* Fix missing SSL build/install options.
* Use different build commands for non-Linux linkers.
* Add missing install targets.
Fixes #809
|
|
Addresses #506
|
|
* Remove nested depth limitation.
This commit removes the nested multi-bulk depth limitation of 7.
We do this by switching to pointer to pointer indirection and
growing the stack in chunks when needed.
See: #794, #421
|
|
Add support for timeouts in our libev adapter.
See #795
|
|
See #757
|
|
* Respect overridden libdir in CMake
See: #767
|
|
* 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.
|
|
|
|
Explicitly call `uv_poll_init_socket` as that has slightly different semantics on Windows (and is identical to `uv_poll_init` on Linux).
http://docs.libuv.org/en/v1.x/poll.html#c.uv_poll_init_socket
|
|
* Add CMake package configuration so hiredis can be more easily included in
other projects.
* Fixes hiredis_ssl such that it compiles and works in windows
Co-authored-by: nrivera <nrivera@blizzard.com>
Co-authored-by: Nick <heronr1@gmail.com>
|
|
CMake: Set hiredis_ssl shared object version.
|
|
|
|
Unit tests in Windows and a Windows timeout fix
This commit gets our unit tests compiling and running on Windows as well as removes a duplicated `timeval` -> `DWORD` conversion logic in sockcompat.c
There are minor differences in behavior between Linux and Windows to note:
1. In Windows, opening a non-existent hangs forever in WSAPoll whereas
it correctly returns with a "Connection refused" error on Linux.
For that reason, I simply skip this test in Windows.
It may be related to this known issue:
https://daniel.haxx.se/blog/2012/10/10/wsapoll-is-broken/
2. Timeouts are handled slightly differently in Windows and Linux.
In Linux, we intentionally set REDIS_ERR_IO for connection
timeouts whereas in Windows we set REDIS_ERR_TIMEOUT. It may be
prudent to fix this discrepancy although there are almost certainly
users relying on the current behavior.
|
|
Fixes #778
|
|
|
|
|
|
|
|
Housekeeping
* Check for C++ (#758, #750)
* Include `alloc.h` in `make install` and `cmake`
* Add a `.def` file for Windows (#760)
* Include allocation wrappers referenced in adapter headers
* Fix minor syntax errors and typos in README
* Fix CI in Windows by properly escaping arguments (#761)
|
|
install alloc.h
|
|
alloc.h added in # 754
But not added to INSTALL_INCLUDE_PATH
|
|
Create allocation wrappers with a configurable OOM handler (defaults to abort()).
See #752, #747
|
|
fix spelling mistakes
|
|
|
|
Free the reply in redisGetReply when passed NULL
|