|
|
|
|
@ -179,6 +179,10 @@ static void keepalive_timer_cb(void* arg) {
|
|
|
|
|
link->ka_sleeping = 0; |
|
|
|
|
link->ka_period_ms = link->keepalive_interval; |
|
|
|
|
link->keepalive_timeout = (uint32_t)link->keepalive_interval * KA_TIMEOUT_MULT; |
|
|
|
|
if (link->etcp && link->etcp->peer_sleeping) { |
|
|
|
|
link->etcp->peer_sleeping = 0; |
|
|
|
|
utun_fire_peer_sleep_cbk(link->etcp->instance, link->etcp->peer_node_id, 0); |
|
|
|
|
} |
|
|
|
|
DEBUG_INFO(DEBUG_CATEGORY_KEEPALIVE, "[%s] server: sleep deadline expired, back to normal (interval=%dms)", |
|
|
|
|
link->etcp->log_name, link->keepalive_interval); |
|
|
|
|
} |
|
|
|
|
@ -351,6 +355,10 @@ int etcp_keepalive_on_recv(struct ETCP_SOCKET* e_sock, struct ETCP_DGRAM* pkt,
|
|
|
|
|
link->ka_sleep_time = sleep_time; |
|
|
|
|
link->ka_sleep_deadline_tb = get_time_tb() + (uint64_t)sleep_time * 1000; |
|
|
|
|
link->ka_period_ms = peer_period; |
|
|
|
|
if (link->etcp && !link->etcp->peer_sleeping) { |
|
|
|
|
link->etcp->peer_sleeping = 1; |
|
|
|
|
utun_fire_peer_sleep_cbk(link->etcp->instance, link->etcp->peer_node_id, 1); |
|
|
|
|
} |
|
|
|
|
DEBUG_INFO(DEBUG_CATEGORY_KEEPALIVE, "[%s] server: peer sleeping (period=%dms deadline=%us), echo ack", |
|
|
|
|
link->etcp->log_name, peer_period, (unsigned)(sleep_time / 10)); |
|
|
|
|
etcp_link_send_keepalive(link); |
|
|
|
|
@ -371,6 +379,10 @@ int etcp_keepalive_on_recv(struct ETCP_SOCKET* e_sock, struct ETCP_DGRAM* pkt,
|
|
|
|
|
link->ka_sleeping = 0; |
|
|
|
|
link->ka_period_ms = (uint16_t)link->keepalive_interval; |
|
|
|
|
link->keepalive_timeout = (uint32_t)link->keepalive_interval * KA_TIMEOUT_MULT; |
|
|
|
|
if (link->etcp && link->etcp->peer_sleeping) { |
|
|
|
|
link->etcp->peer_sleeping = 0; |
|
|
|
|
utun_fire_peer_sleep_cbk(link->etcp->instance, link->etcp->peer_node_id, 0); |
|
|
|
|
} |
|
|
|
|
DEBUG_INFO(DEBUG_CATEGORY_KEEPALIVE, "[%s] server: peer woke up, back to normal (interval=%dms)", |
|
|
|
|
link->etcp->log_name, link->keepalive_interval); |
|
|
|
|
restart_keepalive_timer_ms(link, link->ka_period_ms); |
|
|
|
|
|