提交 66b7f8a0 编写于 作者: J Jonathan Pickett

working through issues regarding sentinal not working

上级 e1f312e5
......@@ -156,9 +156,9 @@ redisAsyncContext *redisAsyncConnect(const char *ip, int port) {
struct sockaddr_in sa;
redisContext *c = redisPreConnectNonBlock(ip, port, &sa);
redisAsyncContext *ac = redisAsyncInitialize(c);
if (aeWinSocketConnect(c->fd, (struct sockaddr *)&sa, sizeof(sa)) != 0) {
c->err = errno;
strerror_r(errno,c->errstr,sizeof(c->errstr));
if (aeWinSocketConnect(ac->c.fd, (struct sockaddr *)&sa, sizeof(sa)) != 0) {
ac->c.err = errno;
strerror_r(errno,ac->c.errstr,sizeof(ac->c.errstr));
}
__redisAsyncCopyError(ac);
return ac;
......
......@@ -84,6 +84,24 @@ pid_t wait3(int *stat_loc, int options, void *rusage) {
REDIS_NOTUSED(stat_loc);
REDIS_NOTUSED(options);
REDIS_NOTUSED(rusage);
//JEP: BUGBUG
// http://linux.die.net/man/2/wait3 says:
// "wait3(status, options, rusage); is equivalent to: waitpid(-1, status, options); "
//
// http://linux.die.net/man/2/waitpid says:
// "The value of pid can be:
// < -1 meaning wait for any child process whose process group ID is equal to the absolute value of pid.
// -1 meaning wait for any child process.
// 0 meaning wait for any child process whose process group ID is equal to that of the calling process.
// > 0 meaning wait for the child whose process ID is equal to the value of pid."
//
// On Windows waitpid evaluates to _cwait, so the -1 passed referrs to the current process. Thus it will never signal.
//
// Since windows parent->child relationships are unreliable (process ids are recycled leading to unexpected PID relationships),
// the hiredis mechanism of process signaling will have to be changed. It should be using process handles on Windows.
return (pid_t) waitpid((intptr_t) -1, 0, WAIT_FLAGS);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册