do not select on a closed file descriptor (doing so crash on Android)
This commit is contained in:
parent
718154cfb4
commit
13c87e38ed
@ -46,11 +46,6 @@ namespace ix
|
|||||||
|
|
||||||
PollResultType Socket::poll(int timeoutMs)
|
PollResultType Socket::poll(int timeoutMs)
|
||||||
{
|
{
|
||||||
if (_sockfd == -1)
|
|
||||||
{
|
|
||||||
return PollResultType::Error;
|
|
||||||
}
|
|
||||||
|
|
||||||
return isReadyToRead(timeoutMs);
|
return isReadyToRead(timeoutMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,7 +57,10 @@ namespace ix
|
|||||||
FD_ZERO(&wfds);
|
FD_ZERO(&wfds);
|
||||||
|
|
||||||
fd_set* fds = (readyToRead) ? &rfds : & wfds;
|
fd_set* fds = (readyToRead) ? &rfds : & wfds;
|
||||||
FD_SET(_sockfd, fds);
|
if (_sockfd != -1)
|
||||||
|
{
|
||||||
|
FD_SET(_sockfd, fds);
|
||||||
|
}
|
||||||
|
|
||||||
// File descriptor used to interrupt select when needed
|
// File descriptor used to interrupt select when needed
|
||||||
int interruptFd = _selectInterrupt->getFd();
|
int interruptFd = _selectInterrupt->getFd();
|
||||||
@ -118,12 +116,22 @@ namespace ix
|
|||||||
|
|
||||||
PollResultType Socket::isReadyToRead(int timeoutMs)
|
PollResultType Socket::isReadyToRead(int timeoutMs)
|
||||||
{
|
{
|
||||||
|
if (_sockfd == -1)
|
||||||
|
{
|
||||||
|
return PollResultType::Error;
|
||||||
|
}
|
||||||
|
|
||||||
bool readyToRead = true;
|
bool readyToRead = true;
|
||||||
return select(readyToRead, timeoutMs);
|
return select(readyToRead, timeoutMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
PollResultType Socket::isReadyToWrite(int timeoutMs)
|
PollResultType Socket::isReadyToWrite(int timeoutMs)
|
||||||
{
|
{
|
||||||
|
if (_sockfd == -1)
|
||||||
|
{
|
||||||
|
return PollResultType::Error;
|
||||||
|
}
|
||||||
|
|
||||||
bool readyToRead = false;
|
bool readyToRead = false;
|
||||||
return select(readyToRead, timeoutMs);
|
return select(readyToRead, timeoutMs);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user