代码拉取完成,页面将自动刷新
#include "tcp.h"
#include "tcp_timer.h"
#include "tcp_sock.h"
#include <unistd.h>
static struct list_head timer_list;
// scan the timer_list, find the tcp sock which stays for at 2*MSL, release it
void tcp_scan_timer_list()
{
struct tcp_sock *tsk;
struct tcp_timer *t, *q;
list_for_each_entry_safe(t, q, &timer_list, list) {
t->timeout -= TCP_TIMER_SCAN_INTERVAL;
if (t->timeout <= 0) {
list_delete_entry(&t->list);
// only support time wait now
tsk = timewait_to_tcp_sock(t);
if (! tsk->parent)
tcp_bind_unhash(tsk);
tcp_set_state(tsk, TCP_CLOSED);
free_tcp_sock(tsk);
}
}
}
// set the timewait timer of a tcp sock, by adding the timer into timer_list
void tcp_set_timewait_timer(struct tcp_sock *tsk)
{
struct tcp_timer *timer = &tsk->timewait;
timer->type = 0;
timer->timeout = TCP_TIMEWAIT_TIMEOUT;
list_add_tail(&timer->list, &timer_list);
tcp_sock_inc_ref_cnt(tsk);
}
// scan the timer_list periodically by calling tcp_scan_timer_list
void *tcp_timer_thread(void *arg)
{
init_list_head(&timer_list);
while (1) {
usleep(TCP_TIMER_SCAN_INTERVAL);
tcp_scan_timer_list();
}
return NULL;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。