You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Changed
The node join protocol client now uses the curl multi singleton client (introduced in #7102) instead of the legacy enclave RPCSessions::create_client() HTTP client, matching the JWT refresh and snapshot-fetch clients. The service certificate remains the sole trust anchor for the join connection (the host certificate store is never consulted) (#8040).
Node joins now check the target RPC address against the target node's certificate SANs. TLS certificate hostname verification (CURLOPT_SSL_VERIFYHOST) is now enforced on the join connection: the host in join.target_rpc_address must be covered by one of the target node's certificate Subject Alternative Names (SANs), and a join to an address absent from the target's SANs is now rejected (the previous join client did not check the target certificate name at all). CCF derives node-certificate SANs from node_certificate.subject_alt_names, or by default from each RPC interface's published_address, so standard deployments are unaffected; operators that configure a bespoke join.target_rpc_address must ensure it is present in the target node's certificate SANs (#8040).
Removed
The unused enclave-side HTTP client infrastructure (RPCSessions::create_client, HTTPClientSession, HTTP2ClientSession, UnencryptedHTTPClientSession, and the ClientSession base) has been removed following the migration of the node join client to curl, completing the legacy HTTP client removal tracked in #7262 (#8040).
Fixed
A node joining or recovering from a stale snapshot no longer fails to bootstrap its network identity history when the local key-value store briefly exposes a previous service identity. The network identity subsystem now detects that the topmost endorsement is signed by a stale service identity and retries (unbounded, matching the other pre-bootstrap waits) until the committed ledger suffix is replayed and the local store reaches the current service identity. Each retry logs the topmost endorsement's txid and the mismatching public keys (the endorsement's signer and the expected current network identity), so an operator can diagnose a node that stays in this state (#8042).