Age | Commit message (Collapse) | Author |
|
|
|
Protect against a NULL pointer dereference, and remove unused write
to a variable.
|
|
See #904
|
|
|
|
Respect an overridden libdir when installing using CMake.
CMake now generates the hiredis_ssl.pc file with the correct
result in `libdir` and `Libs`.
See #767 and CMakes `CMAKE_INSTALL_LIBDIR`
|
|
Fix ProtocolError
This commit attempts to fix hiredis such that a recoverable write error
will be retried rather than throwing a hard error.
Since our read/write functions are now behind function pointers, we
specify semantically that a return value of < 0 is a hard error, 0 a
recoverable error, and > 0 a success.
Our default `redisNetRead` function was already doing something similar
so this also improves code consistency.
Resolves #961
Co-authored-by: Maksim Tuleika <maksim.tuleika@appcast.io>
|
|
Use a windows specific keepalive function.
While it is possible to toggle `TCP_KEEPALIVE` in windows via
setsockopt, you have to use `WSAIoctl` to set the interval.
Since `WSAIoctl` can actually do all of this in one call (toggle the
option, and set the corresponding interval), just use that in Windows
and avoid the call to `setsockopt` alltogether.
Fixes: #1100
|
|
Currently, hiredis supports TCP/SSL/Unix, all of the connection types
use a single FD(int), close() is enough to close a connection. For the
further step, introduce .close method for redisContextFuncs, this
allows to close a complex connection context, for example RDMA.
Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
|
|
Add REDIS_OPT_PREFER_UNSPEC
See: #1099, #1096
Co-authored-by: Viktor Söderqvist <viktor.soderqvist@est.tech>
Co-authored-by: Viktor Söderqvist <viktor.soderqvist@est.tech>
Co-authored-by: Viktor Söderqvist <viktor.soderqvist@est.tech>
|
|
Additionally document the new `REDIS_OPT_PREFER_IPV4`,
`REDIS_OPT_PREFER_IPV6` as well as the rest of our existing options.
See #1096
|
|
Prevent incrementing passed a `\0` in our format string.
Co-authored-by: Michael Grunder <michael.grunder@gmail.com>
Co-authored-by: Kristján Valur Jónsson <sweskman@gmail.com>
|
|
Internally uv_poll_start iterates over all
attached event handlers to update event mask. It's
quite expensive operation if there many event handlers attached
to a loop.
As redisLibuvEvents.events is a copy of what libuv should see,
we can rely on it to avoid event mask updates.
Signed-off-by: Anton Tiurin <noxiouz@yandex.ru>
|
|
CMake config files were installed to `/usr/local/share/hiredis`, which is not recognizable by `find_package()`.
I'm not sure why it was set that way.
Given the commit introducing it is for Windows, I keep that behavior consistent there, but fix the rest.
|
|
|
|
|
|
A command with a faulty formatting string that lacks the
conversion specifier results in a ASAN heap-buffer-overflow.
This was due to that strchr() matches on null-termination,
which triggers a continuation of the string parsing.
|
|
We need to install our socket compatibility header as the new polling
adapter needs it.
|
|
See: #916
|
|
Wrapping multi-line macros in do...while(0) statement prevents
potential dangling else problem.
|
|
|
|
|
|
Commit c6b8bd77c0fe00dbc455b39208f15761178160a3 to make all functions in dict.c static. If a CMake project set warning unused functions, and include hiredis using add_subdirectory , this cause warnings / errors.
|
|
* Add docker support to test.sh
specifying a REDIS_DOCKER env var will run this as a server.
* Add initial test workflow
* Add workflow test to test 32 bit build
* Add ARM x compilation tests
* Add tests for windows platform
* Test with valgrind
|
|
Fix potential fault at createDoubleObject
|
|
Illumos test fixes, error message difference fot bad hostname test.
|
|
Remove semicolon after do-while in _EL_CLEANUP
|
|
Fix some undefined behavior
|
|
- redisSSLContextError must always be initialized at defintion,
otherwise when SSL connect succeeds it may not be assigned to a valid error.
Thus the memory trash remains in the variable, which may sign a misleading error.
|
|
Copy OOM errors to redisAsyncContext when finding subscribe callback
|
|
|
|
Maintain backward compatibiliy withour onConnect callback.
|
|
In f69fac7690fb22a7fc19dba61ef70e5f79ccb2e9, our async onConnect
callback was improved to take a non-const redisAsyncContext allowing it
to be reentrant.
Unfortunately, this is a breaking change we can't make until hiredis
v2.0.0.
This commit creates a separate callback member and corresponding
function that allows us to use the new functionality, while maintaining
our existing API for legacy code.
Fixes #1086
|
|
CI: bump macos runner version
|
|
Stability: Support calling redisAsyncCommand and redisAsyncDisconnect from the onConnected callback
|
|
Support for generating release notes
|
|
Make it possible to set SSL verify mode
|
|
If no SSL certificates are provided, many Redis clients default to
disabling SSL peer verification. Previously it was a bit cumbersome to
configure this because the client would either have to reimplement
`redisCreateSSLContext()` or reach into the internals to set the
OpenSSL verify mode.
We can improve the SSL API by introducing a
`redisCreateSSLContextWithOptions()` call that takes into structured
parameters for SSL initialization. This structure contains a verify
mode that is used to set the OpenSSL verify mode.
Relates to https://github.com/redis/hiredis/issues/646
|
|
Improve example for SSL initialization in README.md
|
|
The previous example left `ssl_error`
uninitialized. `redisCreateSSLContex` is not guaranteed to set this
when no error occurs.
Use the `REDIS_SSL_CTX_NONE` constant instead of 0 to be precise.
|
|
|
|
Co-authored-by: Bjorn Svensson <bjorn.a.svensson@est.tech>
|
|
Fix README typos
|
|
|
|
fix cmake version
|
|
|
|
Since the callback is now re-entrant, it can call apis such as redisAsyncDisconnect()
|
|
deferring context deletion
|
|
|
|
Polling adapter and example
|
|
|