1
This commit is contained in:
1 parent
692b9054f7
commit
8a27c7ad80
1 file changed
+16
-11
+16
-11
@@ -662,6 +662,16 @@ void etcp_on_link_down(struct ETCP_CONN* etcp) {
|
||||
}
|
||||
}
|
||||
|
||||
static void ack_response_timer_cb(void* arg) {// проверяем неотправленные ack response и отправляем если надо.
|
||||
DEBUG_TRACE(DEBUG_CATEGORY_ETCP, "");
|
||||
struct ETCP_CONN* etcp = (struct ETCP_CONN*)arg;
|
||||
if (etcp->ack_q->count==0) return;// нечего отправлять
|
||||
etcp_conn_process_send_queue(etcp);// проталкиваем (она же должна отправлять только ack если больше ничего нет)
|
||||
// если ack все еще заняты - обновляем таймаут
|
||||
if (etcp->ack_q->count) etcp->ack_resp_timer = uasync_set_timeout(etcp->instance->ua, ACK_DELAY_TB, etcp, ack_response_timer_cb);
|
||||
else etcp->ack_resp_timer=NULL;
|
||||
}
|
||||
|
||||
static void etcp_link_ready_callback(struct ETCP_CONN* etcp) {
|
||||
DEBUG_TRACE(DEBUG_CATEGORY_ETCP, "");
|
||||
if (!etcp) return;
|
||||
@@ -681,18 +691,13 @@ static void etcp_link_ready_callback(struct ETCP_CONN* etcp) {
|
||||
if (etcp->tx_state!=ETCP_TX_STATE_LINK_WAIT) return;
|
||||
etcp->tx_state = ETCP_TX_STATE_DATA_WAIT;
|
||||
queue_resume_callback(etcp->input_send_q);
|
||||
queue_resume_callback(etcp->ack_q);
|
||||
DEBUG_TRACE(DEBUG_CATEGORY_ETCP, "resume input_send_q+ack_q; link_wait->data_wait");
|
||||
}
|
||||
// queue_resume_callback(etcp->ack_q);
|
||||
if (etcp->ack_q->count && etcp->ack_resp_timer == NULL) {
|
||||
ack_response_timer_cb(etcp);
|
||||
}
|
||||
|
||||
static void ack_response_timer_cb(void* arg) {// проверяем неотправленные ack response и отправляем если надо.
|
||||
DEBUG_TRACE(DEBUG_CATEGORY_ETCP, "");
|
||||
struct ETCP_CONN* etcp = (struct ETCP_CONN*)arg;
|
||||
if (etcp->ack_q->count==0) return;// нечего отправлять
|
||||
etcp_conn_process_send_queue(etcp);// проталкиваем (она же должна отправлять только ack если больше ничего нет)
|
||||
// если ack все еще заняты - обновляем таймаут
|
||||
if (etcp->ack_q->count) etcp->ack_resp_timer = uasync_set_timeout(etcp->instance->ua, ACK_DELAY_TB, etcp, ack_response_timer_cb);
|
||||
else etcp->ack_resp_timer=NULL;
|
||||
|
||||
DEBUG_TRACE(DEBUG_CATEGORY_ETCP, "resume input_send_q+ack_q; link_wait->data_wait");
|
||||
}
|
||||
|
||||
// Process packets in send queue and transmit them
|
||||
|
||||
Reference in new issue
Block a user