sockaddr_un.sun_path appears to never hold anything after accept()

This commit is contained in:
Pieter Noordhuis 2010-10-13 18:50:07 +02:00
parent ab17b909fe
commit 4fe83b554a
3 changed files with 3 additions and 8 deletions

View File

@ -336,16 +336,12 @@ int anetTcpAccept(char *err, int s, char *ip, int *port) {
return fd; return fd;
} }
int anetUnixAccept(char *err, int s, char *path, int len) { int anetUnixAccept(char *err, int s) {
int fd; int fd;
struct sockaddr_un sa; struct sockaddr_un sa;
socklen_t salen = sizeof(sa); socklen_t salen = sizeof(sa);
if ((fd = anetGenericAccept(err,s,(struct sockaddr*)&sa,&salen)) == ANET_ERR) if ((fd = anetGenericAccept(err,s,(struct sockaddr*)&sa,&salen)) == ANET_ERR)
return ANET_ERR; return ANET_ERR;
if (path) {
strncpy(path,sa.sun_path,len-1);
path[len-1] = 0;
}
return fd; return fd;
} }

View File

@ -44,7 +44,7 @@ int anetResolve(char *err, char *host, char *ipbuf);
int anetTcpServer(char *err, int port, char *bindaddr); int anetTcpServer(char *err, int port, char *bindaddr);
int anetUnixServer(char *err, char *path); int anetUnixServer(char *err, char *path);
int anetTcpAccept(char *err, int serversock, char *ip, int *port); int anetTcpAccept(char *err, int serversock, char *ip, int *port);
int anetUnixAccept(char *err, int serversock, char *path, int len); int anetUnixAccept(char *err, int serversock);
int anetWrite(int fd, char *buf, int count); int anetWrite(int fd, char *buf, int count);
int anetNonBlock(char *err, int fd); int anetNonBlock(char *err, int fd);
int anetTcpNoDelay(char *err, int fd); int anetTcpNoDelay(char *err, int fd);

View File

@ -199,12 +199,11 @@ void acceptTcpHandler(aeEventLoop *el, int fd, void *privdata, int mask) {
void acceptUnixHandler(aeEventLoop *el, int fd, void *privdata, int mask) { void acceptUnixHandler(aeEventLoop *el, int fd, void *privdata, int mask) {
int cfd; int cfd;
char cpath[128];
REDIS_NOTUSED(el); REDIS_NOTUSED(el);
REDIS_NOTUSED(mask); REDIS_NOTUSED(mask);
REDIS_NOTUSED(privdata); REDIS_NOTUSED(privdata);
cfd = anetUnixAccept(server.neterr, fd, cpath, sizeof(cpath)); cfd = anetUnixAccept(server.neterr, fd);
if (cfd == AE_ERR) { if (cfd == AE_ERR) {
redisLog(REDIS_VERBOSE,"Accepting client connection: %s", server.neterr); redisLog(REDIS_VERBOSE,"Accepting client connection: %s", server.neterr);
return; return;