Skip to content

Commit

Permalink
Make KeepAlive optional
Browse files Browse the repository at this point in the history
Make Connection KeepAlive being optional instead of default.
  • Loading branch information
AllenDou committed Apr 29, 2013
1 parent 8d5bc44 commit 9dff510
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 6 deletions.
7 changes: 7 additions & 0 deletions hiredis.c
Original file line number Diff line number Diff line change
Expand Up @@ -1092,6 +1092,13 @@ int redisSetTimeout(redisContext *c, struct timeval tv) {
return REDIS_ERR;
}

/* Enable connection KeepAlive. */
int redisEnableKeepAlive(redisContext *c) {
if (redisKeepAlive(c, REDIS_KEEPALIVE_INTERVAL) != REDIS_OK)
return REDIS_ERR;
return REDIS_OK;
}

/* Use this function to handle a read event on the descriptor. It will try
* and read some bytes from the socket and feed them to the reply parser.
*
Expand Down
1 change: 1 addition & 0 deletions hiredis.h
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,7 @@ redisContext *redisConnectUnix(const char *path);
redisContext *redisConnectUnixWithTimeout(const char *path, struct timeval tv);
redisContext *redisConnectUnixNonBlock(const char *path);
int redisSetTimeout(redisContext *c, struct timeval tv);
int redisEnableKeepAlive(redisContext *c);
void redisFree(redisContext *c);
int redisBufferRead(redisContext *c);
int redisBufferWrite(redisContext *c, int *done);
Expand Down
9 changes: 3 additions & 6 deletions net.c
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,10 @@ static int redisSetBlocking(redisContext *c, int fd, int blocking) {
return REDIS_OK;
}

static int redisKeepAlive(redisContext *c,int fd,int interval) {
int redisKeepAlive(redisContext *c, int interval) {
int val = 1;

int fd = c->fd;

if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &val, sizeof(val)) == -1){
__redisSetError(c,REDIS_ERR_OTHER,strerror(errno));
return REDIS_ERR;
Expand Down Expand Up @@ -143,8 +144,6 @@ static int redisKeepAlive(redisContext *c,int fd,int interval) {
return REDIS_OK;
}



static int redisSetTcpNoDelay(redisContext *c, int fd) {
int yes = 1;
if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &yes, sizeof(yes)) == -1) {
Expand Down Expand Up @@ -273,8 +272,6 @@ int redisContextConnectTcp(redisContext *c, const char *addr, int port, struct t
goto error;
if (redisSetTcpNoDelay(c,s) != REDIS_OK)
goto error;
if (redisKeepAlive(c,s,REDIS_KEEPALIVE_INTERVAL) != REDIS_OK)
goto error;

c->fd = s;
c->flags |= REDIS_CONNECTED;
Expand Down
1 change: 1 addition & 0 deletions net.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,6 @@ int redisCheckSocketError(redisContext *c, int fd);
int redisContextSetTimeout(redisContext *c, struct timeval tv);
int redisContextConnectTcp(redisContext *c, const char *addr, int port, struct timeval *timeout);
int redisContextConnectUnix(redisContext *c, const char *path, struct timeval *timeout);
int redisKeepAlive(redisContext *c, int interval);

#endif

0 comments on commit 9dff510

Please sign in to comment.