Age | Commit message (Collapse) | Author |
|
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.
|
|
Fix README typos
|
|
|
|
fix cmake version
|
|
Polling adapter and example
|
|
|
|
|
|
|
|
Use the same name for static and shared libraries
|
|
Embed debug information in windows static .lib file
|
|
Improved async documentation
|
|
|
|
|
|
|
|
Fix async connect on Windows
|
|
|
|
|
|
|
|
Fix tests so they work for Redis 7.0
|
|
* Redis >= 7.0.0 disables the `DEBUG` command by default, which we need
for our unit tests.
* Downgrade to Redis 6.2.x in macOS temporarily
There is a macOS specific TLS error on large payloads when running
against 7.x.x so temporarily run our tests against 6.2, while we
investigate the root cause.
|
|
Fix warnings on Win64
|
|
read.c:399:27: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
399 | obj = (void*)(long)cur->type;
| ^
|
|
Handle push notifications before or after reply.
|
|
Use official repository for redis package.
|
|
Whitelist hiredis repo path in cygwin
|
|
|
|
|
|
|
|
Unsubscribe handling in async
|
|
Update hiredis sds with improvements found in redis
|
|
On all system except MSVC, the targets are different.
Unix: libhiredis.so, libhiredis.a
MinGW: libhiredis.dll+libhiredis.dll.a, libhiredis.a
MSVC: hiredis.dll+hiredis.lib, hiredis_static.lib
|
|
Using .pdb files with .lib files on windows is very inconvenient, particularly if the .lib
file is then linked as part of a different .dll. Chances are that the original .pdb
will not be picked up or distributed along with the tooling.
|
|
|
|
Redis responds to an unsubscribe with one or many replies, depending
on the current subscribe state. When channels/patterns names are
provided in a command each given name will trigger a reply even if
duplicated or not subscribed to.
To know when we can return from the subscribed state we need to do
bookkeeping on pending additional unsubscribe replies, and make sure
we receive them all before switching state.
|
|
|
|
|
|
Equivalent changes introduced to redis sds.c via:
https://github.com/redis/redis/pull/8522
https://github.com/redis/redis/pull/9584
|
|
Equivalent changes introduced to redis sds.c via:
https://github.com/redis/redis/pull/4568
|
|
CentOS 8 is EOL, switch to RockyLinux
|
|
|
|
* No reuse of the previous reply callback
When multiple replies are parsed from a socket in one read
a previously found callback might get reused when the current
reply has no known callback.
This can be triggered by the added testcase which unsubscribe to
subscribed (A,B) and a non-subscribed channel (X).
Without this correction a callback for wrong channel is called.
- In 'unsubscribe B X A', B's callback is called when handling X.
- Now this is not done, i.e. there is no callback called for X.
* Re-push monitor callback for each reply
MONITORING used the same callback for all replies while parsing
multiple responses. This handling was changed to avoid calling
the wrong callback in some scenarios.
Now also change monitorings repush to work with this change.
Includes an added async monitoring testcase.
|
|
|
|
Add timeout to libuv adapter
Co-authored-by: sunmingqi <sunmingqi@corp.netease.com>
Co-authored-by: sunmingqi <smq222@126.com>
Co-authored-by: Michael Grunder <michael.grunder@gmail.com>
Co-authored-by: Viktor Söderqvist <viktor@zuiderkwast.se>
|
|
* Add test of async commands after unsubscribe
Verify that commands are handled after unsubscribing from a channel.
A command is sent before the `unsubscribe` response is received,
which currently triggers an assert in async.c:567:
`redisProcessCallbacks: Assertion `(c->flags & REDIS_SUBSCRIBED || c->flags & REDIS_MONITORING)' failed.`
* Handle async commands after an unsubscribe
When unsubscribing from the last channel we move from the `subscribe`
state to a normal state. These states uses different holders for the
command callback information.
By moving the callback info during the state change the callback order
can be maintained.
|
|
* Add test of command timeout during pubsub
A timeout of a non-subscribe command will be ignored during pubsub.
It will be handled as an idle timeout and a response is awaited for.
* Correction for command timeout during pubsub
Disconnect when a sent non-subscribe command triggers a timeout.
|
|
Define hiredis as a C project (and use a single PROJECT statement) to
avoid the following build failure if a C++ compiler is not found:
CMake Error at CMakeLists.txt:3 (PROJECT):
The CMAKE_CXX_COMPILER:
/srv/storage/autobuild/run/instance-1/output-1/host/bin/arm-linux-g++
is not a full path to an existing compiler tool.
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
The only cpp source file is examples/example-qt.cpp which is never
compiled with cmake buildsystem. This file is compiled only with the
Makefile buildsystem so perhaps it should be removed. If it is added to
the cmake buildsystem, a call to enable_language(CXX) will have to be
added.
Fixes:
- http://autobuild.buildroot.org/results/830ec3398cd29b9fc5cde06a225ef531d7a9d850
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
|
Where SOCKET is a 64-bit unsigned integer.
|