Avoid an exception due to some bad logic in the DNS resolution mechanic
fix #3207
This commit is contained in:
@@ -42,7 +42,8 @@ bool DNSSocketHandler::is_connected() const
|
|||||||
|
|
||||||
void DNSSocketHandler::remove_from_poller()
|
void DNSSocketHandler::remove_from_poller()
|
||||||
{
|
{
|
||||||
this->poller->remove_socket_handler(this->socket);
|
if (this->poller->is_managing_socket(this->socket))
|
||||||
|
this->poller->remove_socket_handler(this->socket);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CARES_FOUND */
|
#endif /* CARES_FOUND */
|
||||||
|
|||||||
@@ -226,3 +226,8 @@ size_t Poller::size() const
|
|||||||
{
|
{
|
||||||
return this->socket_handlers.size();
|
return this->socket_handlers.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Poller::is_managing_socket(const socket_t socket) const
|
||||||
|
{
|
||||||
|
return (this->socket_handlers.find(socket) != this->socket_handlers.end());
|
||||||
|
}
|
||||||
|
|||||||
@@ -74,6 +74,10 @@ public:
|
|||||||
* Returns the number of SocketHandlers managed by the poller.
|
* Returns the number of SocketHandlers managed by the poller.
|
||||||
*/
|
*/
|
||||||
size_t size() const;
|
size_t size() const;
|
||||||
|
/**
|
||||||
|
* Whether the given socket is managed by the poller
|
||||||
|
*/
|
||||||
|
bool is_managing_socket(const socket_t socket) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user