diff --git a/src/transport_layer/reality_io.c b/src/transport_layer/reality_io.c index 2eaf15d2..584348c8 100644 --- a/src/transport_layer/reality_io.c +++ b/src/transport_layer/reality_io.c @@ -28,6 +28,17 @@ struct reality_io { void (*ready)(struct stcp_conn *); }; +const char* reality_io_state_name(const struct stcp_conn *c) { + if (!c->reality_io) return "none"; + switch (c->reality_io->phase) { + case WAIT_HELLO: return c->is_server ? "waiting-ClientHello" : "waiting-ServerHello"; + case WAIT_SERVER_FLIGHT: return "waiting-server-authentication"; + case WAIT_CLIENT_FINISHED: return "waiting-client-Finished"; + case RECORD_DATA: return "protected-data"; + } + return "unknown"; +} + static int replay_accept(struct reality_owner *owner, const uint8_t *ch, size_t len, uint32_t now, uint32_t timestamp, int64_t window) { if (!owner->replay) owner->replay = u_calloc(1, sizeof(*owner->replay)); @@ -259,7 +270,8 @@ static int hello_process(struct stcp_conn *c) { } return 0; reject: - DEBUG_WARN(DEBUG_CATEGORY_REALITY, "Hello rejected: buffered=%zu handshake=%zu", io->wire_len, io->handshake_len); + DEBUG_WARN(DEBUG_CATEGORY_REALITY, "REALITY Hello rejected: buffered=%zu handshake=%zu %s", + io->wire_len, io->handshake_len, stcp_conn_describe(c).text); return fallback(c); } @@ -286,7 +298,8 @@ static int handshake_process(struct stcp_conn *c, const uint8_t *data, size_t le if (io->phase == WAIT_SERVER_FLIGHT && send_finished(c)) return -1; io->phase = RECORD_DATA; reality_session_handshake_done(&io->session); - DEBUG_INFO(DEBUG_CATEGORY_REALITY, "Finished verified: role=%s; protected STCP enabled", io->session.is_server ? "server" : "client"); + DEBUG_TRACE(DEBUG_CATEGORY_REALITY, "REALITY Finished verified; starting protected STCP handshake: %s", + stcp_conn_describe(c).text); io->ready(c); if (!c->reality_io || c->state == STCP_STATE_CLOSED || c->state == STCP_STATE_ERROR) return -1; } else { @@ -300,8 +313,8 @@ static int handshake_process(struct stcp_conn *c, const uint8_t *data, size_t le } return 0; reject: - DEBUG_WARN(DEBUG_CATEGORY_REALITY, "protected handshake rejected: phase=%d step=%u type=%u size=%zu", io->phase, - io->flight_step, io->handshake[0], io->handshake_len); + DEBUG_WARN(DEBUG_CATEGORY_REALITY, "REALITY protected handshake rejected: step=%u message_type=%u buffered=%zu %s", + io->flight_step, io->handshake[0], io->handshake_len, stcp_conn_describe(c).text); return -1; } diff --git a/src/transport_layer/reality_io.h b/src/transport_layer/reality_io.h index 1567c8ba..f6c80cda 100644 --- a/src/transport_layer/reality_io.h +++ b/src/transport_layer/reality_io.h @@ -27,6 +27,7 @@ int reality_io_client_start(struct stcp_conn *c, const struct reality_client_con const struct ETCP_PADDING *padding, void (*ready)(struct stcp_conn *)); int reality_io_server_start(struct stcp_conn *c, void (*ready)(struct stcp_conn *)); size_t reality_io_buffered(const struct stcp_conn *c); +const char* reality_io_state_name(const struct stcp_conn *c); int reality_io_read(struct stcp_conn *c); void reality_io_resume(struct stcp_conn *c); int reality_io_send(struct stcp_conn *c, uint8_t *data, size_t len); diff --git a/src/transport_layer/stcp.c b/src/transport_layer/stcp.c index 0cef10b8..5550a4d3 100644 --- a/src/transport_layer/stcp.c +++ b/src/transport_layer/stcp.c @@ -58,13 +58,13 @@ struct stcp_log_context stcp_conn_describe(const struct stcp_conn *c) { ((c->is_server ? c->peer_flags : c->hs_flags) & STCP_HANDSHAKE_FLAG_PING ? "reachability-probe" : "data-link"); snprintf(out.text, sizeof(out.text), "role=%s purpose=%s state=%s target=%s local=%s peer=%016llx peer_identity=%s socket=%d age_ms=%llu " - "outer=%s recv_buffered=%zu recv_needed=%zu wire_queued=%zu finishing=%u", + "reality_state=%s recv_buffered=%zu recv_needed=%zu wire_queued=%zu finishing=%u", c->is_server ? "server" : "client", purpose, state, c->log_target[0] ? c->log_target : "unknown", local_text.str[0] ? local_text.str : "unavailable", (unsigned long long)(c->peer_pubkey_set ? sc_derive_node_id_from_pubkey(c->peer_pubkey) : 0), c->peer_pubkey_set ? "known-key" : "unknown", (int)c->sock, (unsigned long long)(c->log_started_tb ? (get_time_tb() - c->log_started_tb) / 10 : 0), - c->reality_io ? "REALITY" : "plain-STCP", c->recv_buf_len, c->recv_need, c->wire_bytes, c->finish_requested); + reality_io_state_name(c), c->recv_buf_len, c->recv_need, c->wire_bytes, c->finish_requested); return out; }