Fixed bad logic inside the timer scheduling.
This commit is contained in:
@@ -226,12 +226,7 @@ void net_con_close(struct net_connection* con_)
|
||||
g_backend->num--;
|
||||
}
|
||||
|
||||
if (timeout_evt_is_scheduled(con->timeout))
|
||||
{
|
||||
timeout_queue_remove(&g_backend->timeout_queue, con->timeout);
|
||||
hub_free(con->timeout);
|
||||
con->timeout = 0;
|
||||
}
|
||||
net_con_clear_timeout(con_);
|
||||
|
||||
if (epoll_ctl(g_backend->epfd, EPOLL_CTL_DEL, con->sd, &con->ev) == -1)
|
||||
{
|
||||
|
||||
@@ -195,12 +195,7 @@ void net_con_close(struct net_connection* con)
|
||||
g_backend->num--;
|
||||
}
|
||||
|
||||
if (timeout_evt_is_scheduled(con->timeout))
|
||||
{
|
||||
timeout_queue_remove(&g_backend->timeout_queue, con->timeout);
|
||||
hub_free(con->timeout);
|
||||
con->timeout = 0;
|
||||
}
|
||||
net_con_clear_timeout(con);
|
||||
|
||||
net_con_print("DEL", (struct net_connection_select*) con);
|
||||
net_cleanup_delayed_free(g_backend->cleaner, con);
|
||||
|
||||
@@ -41,7 +41,7 @@ void net_con_set_timeout(struct net_connection* con, int seconds)
|
||||
|
||||
void net_con_clear_timeout(struct net_connection* con)
|
||||
{
|
||||
if (timeout_evt_is_scheduled(con->timeout))
|
||||
if (con->timeout && timeout_evt_is_scheduled(con->timeout))
|
||||
{
|
||||
timeout_queue_remove(net_backend_get_timeout_queue(), con->timeout);
|
||||
hub_free(con->timeout);
|
||||
|
||||
Reference in New Issue
Block a user