Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
hiredis
Commits
c8b5d62c
Commit
c8b5d62c
authored
Jul 31, 2023
by
michael-grunder
Browse files
Make redisEnableKeepAlive a no-op on AF_UNIX connections.
Fixes #1185
parent
e07ae7d3
Changes
3
Show whitespace changes
Inline
Side-by-side
.gitignore
View file @
c8b5d62c
...
...
@@ -7,3 +7,4 @@
/*.pc
*.dSYM
tags
compile_commands.json
net.c
View file @
c8b5d62c
...
...
@@ -173,6 +173,10 @@ int redisKeepAlive(redisContext *c, int interval) {
int
val
=
1
;
redisFD
fd
=
c
->
fd
;
/* TCP_KEEPALIVE makes no sense with AF_UNIX connections */
if
(
c
->
connection_type
==
REDIS_CONN_UNIX
)
return
REDIS_ERR
;
#ifndef _WIN32
if
(
setsockopt
(
fd
,
SOL_SOCKET
,
SO_KEEPALIVE
,
&
val
,
sizeof
(
val
))
==
-
1
){
__redisSetError
(
c
,
REDIS_ERR_OTHER
,
strerror
(
errno
));
...
...
test.c
View file @
c8b5d62c
...
...
@@ -431,6 +431,24 @@ static void test_tcp_options(struct config cfg) {
redisFree(c);
}
static void test_unix_keepalive(struct config cfg) {
redisContext *c;
redisReply *r;
c = do_connect(cfg);
test("Setting TCP_KEEPALIVE on a unix socket returns an error: ");
test_cond(redisEnableKeepAlive(c) == REDIS_ERR && c->err == 0);
test("Setting TCP_KEEPALIVE on a unix socket doesn't break the connection: ");
r = redisCommand(c, "PING");
test_cond(r != NULL && r->type == REDIS_REPLY_STATUS && r->len == 4 &&
!memcmp(r->str, "PONG", 4));
freeReplyObject(r);
redisFree(c);
}
static void test_reply_reader(void) {
redisReader *reader;
void *reply, *root;
...
...
@@ -2363,6 +2381,7 @@ int main(int argc, char **argv) {
test_blocking_connection_timeouts(cfg);
test_blocking_io_errors(cfg);
test_invalid_timeout_errors(cfg);
test_unix_keepalive(cfg);
if (throughput) test_throughput(cfg);
} else {
test_skipped();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment