PIP Bugfixes #207
@@ -90,11 +90,11 @@ bool PIWaitEvent::wait(int fd, CheckRole role) {
|
|||||||
FD_SET(fd, &(fds[CheckExeption]));
|
FD_SET(fd, &(fds[CheckExeption]));
|
||||||
if (fd_index != CheckExeption) FD_SET(fd, &(fds[fd_index]));
|
if (fd_index != CheckExeption) FD_SET(fd, &(fds[fd_index]));
|
||||||
int sr = ::select(nfds, &(fds[CheckRead]), &(fds[CheckWrite]), &(fds[CheckExeption]), nullptr);
|
int sr = ::select(nfds, &(fds[CheckRead]), &(fds[CheckWrite]), &(fds[CheckExeption]), nullptr);
|
||||||
|
if (sr < 0) return false;
|
||||||
int buf = 0;
|
int buf = 0;
|
||||||
while (::read(pipe_fd[ReadEnd], &buf, sizeof(buf)) > 0)
|
while (::read(pipe_fd[ReadEnd], &buf, sizeof(buf)) > 0)
|
||||||
;
|
;
|
||||||
// piCout << "wait result" << sr << FD_ISSET(fd, &(fds[CheckExeption])) << FD_ISSET(fd, &(fds[fd_index]));
|
// piCout << "wait result" << sr << FD_ISSET(fd, &(fds[CheckExeption])) << FD_ISSET(fd, &(fds[fd_index]));
|
||||||
if (sr < 0) return false;
|
|
||||||
if (errno == EBADF || errno == EINTR) return false;
|
if (errno == EBADF || errno == EINTR) return false;
|
||||||
if (FD_ISSET(fd, &(fds[CheckExeption]))) return true;
|
if (FD_ISSET(fd, &(fds[CheckExeption]))) return true;
|
||||||
return FD_ISSET(fd, &(fds[fd_index]));
|
return FD_ISSET(fd, &(fds[fd_index]));
|
||||||
|
|||||||
@@ -104,7 +104,7 @@
|
|||||||
PIString getSockAddr(sockaddr * s) {
|
PIString getSockAddr(sockaddr * s) {
|
||||||
if (!s) return PIString();
|
if (!s) return PIString();
|
||||||
char buf[INET_ADDRSTRLEN];
|
char buf[INET_ADDRSTRLEN];
|
||||||
memset(&buf, 0, INET_ADDRSTRLEN);
|
piZeroMemory(buf, sizeof(buf));
|
||||||
const char * r = inet_ntop(AF_INET, &((sockaddr_in *)s)->sin_addr, buf, sizeof(buf));
|
const char * r = inet_ntop(AF_INET, &((sockaddr_in *)s)->sin_addr, buf, sizeof(buf));
|
||||||
return r ? PIStringAscii(r) : PIString();
|
return r ? PIStringAscii(r) : PIString();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user