[P1][bug] 같은 identity 재등록 시 UDP/TCP port reuse 또는 rollback 처리 #29
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
문제
LeaseRegistry::register()에서 기존 lease를 교체할 때 새 UDP/TCP port를 먼저 allocate하고 기존 record의 port는 나중에 release하는 구조로 보입니다.관련 후보:
crates/portal-relay/src/relay/leases.rscrates/portal-relay/src/relay/udp_datagram.rscrates/portal-relay/src/relay/tcp_port.rs영향
port range가 1개뿐이면 같은 identity가 재등록하더라도 기존 port가 아직
in_use상태이므로UdpPortExhausted또는TcpPortExhausted가 발생할 수 있습니다. runtime 생성 실패 시 state/port allocator rollback도 어려워집니다.제안
완료 기준
검토 기준: 업로드된 Rust
portal-relay코드 정적 리뷰. 리뷰 환경에서는cargo check/test/clippy를 실행하지 못했습니다.수용했습니다. PR #62에서 같은 identity 재등록 시 기존 UDP/TCP runtime/port를 재사용하고, 교체되는 stream/port는 필요한 경우에만 정리하도록 변경했습니다. 단일 port range에서도 동일 identity 갱신이 실패하지 않도록 했습니다. 검증: cargo test --locked, cargo clippy --locked --all-targets -- -D warnings.