@ -1403,21 +1403,23 @@ void etcp_conn_input(struct ETCP_DGRAM* pkt) {
break ;
}
}
struct ACK_PACKET * p = ( struct ACK_PACKET * ) queue_entry_new_from_pool ( etcp - > instance - > ack_pool ) ;
if ( ! p ) {
DEBUG_ERROR ( DEBUG_CATEGORY_ETCP , " [%s] failed to allocate ACK_PACKET " , etcp - > log_name ) ;
len = 0 ;
break ;
}
p - > seq = seq ;
p - > pkt_timestamp = pkt - > timestamp ;
p - > recv_timestamp = get_current_timestamp ( ) ;
DEBUG_DEBUG ( DEBUG_CATEGORY_ETCP , " [%s] RX add to ack_q seq=%d " , etcp - > log_name , seq ) ;
queue_data_put_with_index ( etcp - > ack_q , ( struct ll_entry * ) p ) ;
if ( etcp - > ack_resp_timer = = NULL ) {
DEBUG_TRACE ( DEBUG_CATEGORY_ETCP , " [%s] set ack_timer for delayed ACK send " , etcp - > log_name ) ;
etcp - > ack_resp_timer = uasync_set_timeout ( etcp - > instance - > ua , ACK_DELAY_TB , etcp , ack_response_timer_cb , " etcp_ack_resp " ) ;
if ( queue_find_data_by_index ( etcp - > ack_q , & seq ) = = NULL ) {
struct ACK_PACKET * p = ( struct ACK_PACKET * ) queue_entry_new_from_pool ( etcp - > instance - > ack_pool ) ;
if ( ! p ) {
DEBUG_ERROR ( DEBUG_CATEGORY_ETCP , " [%s] failed to allocate ACK_PACKET " , etcp - > log_name ) ;
len = 0 ;
break ;
}
p - > seq = seq ;
p - > pkt_timestamp = pkt - > timestamp ;
p - > recv_timestamp = get_current_timestamp ( ) ;
DEBUG_DEBUG ( DEBUG_CATEGORY_ETCP , " [%s] RX add to ack_q seq=%d " , etcp - > log_name , seq ) ;
queue_data_put_with_index ( etcp - > ack_q , ( struct ll_entry * ) p ) ;
if ( etcp - > ack_resp_timer = = NULL ) {
DEBUG_TRACE ( DEBUG_CATEGORY_ETCP , " [%s] set ack_timer for delayed ACK send " , etcp - > log_name ) ;
etcp - > ack_resp_timer = uasync_set_timeout ( etcp - > instance - > ua , ACK_DELAY_TB , etcp , ack_response_timer_cb , " etcp_ack_resp " ) ;
}
}
if ( ( ( int32_t ) ( etcp - > last_delivered_id - seq ) < 0 ) & & ( queue_find_data_by_index ( etcp - > recv_q , & seq ) = = NULL ) ) { // проверяем есть ли пакет с этим seq
uint32_t pkt_len = len - 5 ;