|
|
|
|
@ -445,18 +445,14 @@ static void ack_timeout_check(void* arg) {
|
|
|
|
|
while (current = etcp->input_wait_ack->head) { |
|
|
|
|
struct INFLIGHT_PACKET* pkt = (struct INFLIGHT_PACKET*)current; |
|
|
|
|
|
|
|
|
|
// Check for invalid timestamp
|
|
|
|
|
// Check for invalid timestamp - silent fix, no error output
|
|
|
|
|
if (pkt->last_timestamp == 0) { |
|
|
|
|
DEBUG_ERROR(DEBUG_CATEGORY_ETCP, "[%s] ack_timeout_check: packet seq=%u has last_timestamp=0, not sent yet!", |
|
|
|
|
etcp->log_name, pkt->seq); |
|
|
|
|
// Schedule timer to check again later
|
|
|
|
|
etcp->retrans_timer = uasync_set_timeout(etcp->instance->ua, timeout, etcp, ack_timeout_check); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (pkt->last_timestamp > now) { |
|
|
|
|
DEBUG_ERROR(DEBUG_CATEGORY_ETCP, "[%s] ack_timeout_check: packet seq=%u has last_timestamp=%llu > now=%llu, clock went backwards!", |
|
|
|
|
etcp->log_name, pkt->seq, (unsigned long long)pkt->last_timestamp, (unsigned long long)now); |
|
|
|
|
// Fix the timestamp to prevent overflow
|
|
|
|
|
pkt->last_timestamp = now; |
|
|
|
|
} |
|
|
|
|
|