fix timeout code in windows
This commit is contained in:
parent
f5f855c912
commit
ab1762cd92
11
net.c
11
net.c
@ -310,11 +310,18 @@ int redisCheckSocketError(redisContext *c) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int redisContextSetTimeout(redisContext *c, const struct timeval tv) {
|
int redisContextSetTimeout(redisContext *c, const struct timeval tv) {
|
||||||
if (setsockopt(c->fd,SOL_SOCKET,SO_RCVTIMEO,&tv,sizeof(tv)) == -1) {
|
const void *to_ptr = &tv;
|
||||||
|
size_t to_sz = sizeof(tv);
|
||||||
|
#ifdef _WIN32
|
||||||
|
DWORD timeout_msec = tv.tv_sec * 1000 + tv.tv_usec / 1000;
|
||||||
|
to_ptr = &timeout_msec;
|
||||||
|
to_sz = sizeof(timeout_msec);
|
||||||
|
#endif
|
||||||
|
if (setsockopt(c->fd,SOL_SOCKET,SO_RCVTIMEO,to_ptr,to_sz) == -1) {
|
||||||
__redisSetErrorFromErrno(c,REDIS_ERR_IO,"setsockopt(SO_RCVTIMEO)");
|
__redisSetErrorFromErrno(c,REDIS_ERR_IO,"setsockopt(SO_RCVTIMEO)");
|
||||||
return REDIS_ERR;
|
return REDIS_ERR;
|
||||||
}
|
}
|
||||||
if (setsockopt(c->fd,SOL_SOCKET,SO_SNDTIMEO,&tv,sizeof(tv)) == -1) {
|
if (setsockopt(c->fd,SOL_SOCKET,SO_SNDTIMEO,to_ptr,to_sz) == -1) {
|
||||||
__redisSetErrorFromErrno(c,REDIS_ERR_IO,"setsockopt(SO_SNDTIMEO)");
|
__redisSetErrorFromErrno(c,REDIS_ERR_IO,"setsockopt(SO_SNDTIMEO)");
|
||||||
return REDIS_ERR;
|
return REDIS_ERR;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user