Document RX ownership and limit readiness wakeups to transitions
This commit is contained in:
1 parent
f00a5bd306
commit
b167a27e85
3 files changed
+18
-5
No files matched your search
@@ -2010,7 +2010,8 @@ static int etcp_link_publish_rx(struct ETCP_LINK* link, int old_state, int old_s
|
||||
conn->log_name, link->local_link_id, old_status, link->link_status, link->recv_keepalive,
|
||||
link->remote_keepalive, link->link_state, link->initialized);
|
||||
if (old_status && !link->link_status) etcp_on_link_down(conn, link);
|
||||
else if (link->initialized && link->link_status) loadbalancer_link_ready(link);
|
||||
else if (link->initialized && link->link_status && (old_status != link->link_status || old_state != link->link_state))
|
||||
loadbalancer_link_ready(link);
|
||||
return etcp_link_rx_alive(conn, link);
|
||||
}
|
||||
|
||||
|
||||
@@ -229,8 +229,8 @@ struct ETCP_LINK {
|
||||
uint8_t remote_socket_id; // socket id peer
|
||||
uint8_t remote_only_local; // only_local flag from peer
|
||||
uint8_t remote_type; // CFG_SERVER_TYPE_* (type of peer's socket)
|
||||
uint8_t recv_keepalive; // 1 - up, 0 - down (принимаются ли пакеты)
|
||||
uint8_t remote_keepalive; // 1 - up, 0 - down (удаленная сторона сообщает - принимаются ли у нее пакеты)
|
||||
uint8_t recv_keepalive; // Принимаем допустимые пакеты этого линка; INIT также обновляет RX и его deadline
|
||||
uint8_t remote_keepalive; // Входной flag_up: пир принимает наши пакеты; INIT(0) не сохраняет прежнюю единицу
|
||||
uint8_t link_status; // 1 - up, 0 - down (итоговый статус - если есть проблемы на любой стороне - линк down)
|
||||
uint8_t link_state; // 0 - just init, 1 - handshake, 2 - try reconnect, 3 - connected
|
||||
|
||||
@@ -439,6 +439,9 @@ void etcp_tcp_link_start_connect(struct ETCP_LINK *link, struct sockaddr_storage
|
||||
|
||||
void etcp_tcp_link_start_reconnect(struct ETCP_LINK *link);
|
||||
|
||||
/* Принять plaintext установленного линка: session/формат проверяются до соответствующей обработки RX.
|
||||
* 0 — pkt потреблён; ненулевой код — pkt остаётся вызывающему. RX/handshake callbacks могут запросить close;
|
||||
* callbacks_running удерживает teardown до выхода, сброс сессии прекращает обработку старого потока. */
|
||||
int etcp_packet_decrypted(struct ETCP_SOCKET* e_sock, struct ETCP_DGRAM* pkt,
|
||||
struct ETCP_LINK* link, size_t pkt_len);
|
||||
|
||||
|
||||
Reference in new issue
Block a user