Fix regression when connecting with Unix sockets (#629)
This commit is contained in:
parent
8633a2f32e
commit
088d1469b3
9
net.c
9
net.c
@ -472,7 +472,7 @@ int redisContextConnectBindTcp(redisContext *c, const char *addr, int port,
|
|||||||
|
|
||||||
int redisContextConnectUnix(redisContext *c, const char *path, const struct timeval *timeout) {
|
int redisContextConnectUnix(redisContext *c, const char *path, const struct timeval *timeout) {
|
||||||
int blocking = (c->flags & REDIS_BLOCK);
|
int blocking = (c->flags & REDIS_BLOCK);
|
||||||
struct sockaddr_un sa;
|
struct sockaddr_un *sa;
|
||||||
long timeout_msec = -1;
|
long timeout_msec = -1;
|
||||||
|
|
||||||
if (redisCreateSocket(c,AF_UNIX) < 0)
|
if (redisCreateSocket(c,AF_UNIX) < 0)
|
||||||
@ -499,9 +499,10 @@ int redisContextConnectUnix(redisContext *c, const char *path, const struct time
|
|||||||
if (redisContextTimeoutMsec(c,&timeout_msec) != REDIS_OK)
|
if (redisContextTimeoutMsec(c,&timeout_msec) != REDIS_OK)
|
||||||
return REDIS_ERR;
|
return REDIS_ERR;
|
||||||
|
|
||||||
sa.sun_family = AF_UNIX;
|
sa = (struct sockaddr_un*)(c->saddr = malloc(sizeof(struct sockaddr_un)));
|
||||||
strncpy(sa.sun_path,path,sizeof(sa.sun_path)-1);
|
sa->sun_family = AF_UNIX;
|
||||||
if (connect(c->fd, (struct sockaddr*)&sa, sizeof(sa)) == -1) {
|
strncpy(sa->sun_path,path,sizeof(sa->sun_path)-1);
|
||||||
|
if (connect(c->fd, (struct sockaddr*)sa, sizeof(*sa)) == -1) {
|
||||||
if (errno == EINPROGRESS && !blocking) {
|
if (errno == EINPROGRESS && !blocking) {
|
||||||
/* This is ok. */
|
/* This is ok. */
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user