Adversarial review F2 (Med-High, confirmed): accept_offer asserted audio_mid.is_none() on a path fed by unauthenticated external input. A second POST /v1/sessions/:id/offer panicked the handler task instead of returning a clean 4xx. Replace the assert! with a typed RtcSessionError::AlreadyNegotiated. routes.rs maps the variant to 409 Conflict, distinct from 400 Bad Request for malformed SDP. debug_assert! documents the invariant for tests; the production path returns Err, never panics. TDD: unit test second_accept_offer_returns_already_negotiated_not_panic red on the panic message; green after the typed error. Integration test double_post_offer_returns_409_conflict_not_panic red on 400; green after routes.rs is updated.
25 lines
330 B
Plaintext
25 lines
330 B
Plaintext
# Rust
|
|
/target
|
|
**/target
|
|
**/*.rs.bk
|
|
*.pdb
|
|
|
|
# Cargo.lock is committed (this is an application workspace, not a library)
|
|
|
|
# Env / secrets
|
|
.env
|
|
.env.*
|
|
*.pem
|
|
*.key
|
|
|
|
# Editor / OS
|
|
.DS_Store
|
|
*.swp
|
|
.idea/
|
|
.vscode/
|
|
|
|
# Local worktrees (per using-git-worktrees skill; isolation, not content)
|
|
.worktrees/
|
|
worktrees/
|
|
docs/reviews/.*.kate-swp
|