Skip to content

fix(runtime): UDP 不回退 TCP-only 且 dial 失败短期排除#27

Open
milangree wants to merge 1 commit into
MiChongs:mainfrom
milangree:pr/route-udp-and-dial-dead
Open

fix(runtime): UDP 不回退 TCP-only 且 dial 失败短期排除#27
milangree wants to merge 1 commit into
MiChongs:mainfrom
milangree:pr/route-udp-and-dial-dead

Conversation

@milangree

Copy link
Copy Markdown
Contributor

背景

UDP 选路在过滤无 UDP 能力节点后仍回退任意成员;dial 失败后 Manual/粘性策略会反复撞同一坏节点;chain 会静默单跳。

实现

  • UDP 选路不再 or_else 回退 TCP-only
  • dial 失败后短期 mark_dead 并参与选点过滤
  • 运行时 pick_chain 返回 None

安全与兼容边界

  • 不改控制面 API 与配置编译(见独立 PR)
  • 不改 SSRF 策略(见独立 PR)

验证

  • cargo test -p core-runtime
  • 全 VLESS 组 UDP 选路为 BLOCK
  • dial 失败后下一轮不重复同一节点

- pick_in_group 对 UDP 仅保留具备 UDP 能力的成员
- dial 失败 mark_temp_dead,选点跳过坏节点
- chain 运行时返回空选择,避免静默单跳
@MiChongs

Copy link
Copy Markdown
Owner

@copilot resolve the merge conflicts in this pull request

1 similar comment
@MiChongs

Copy link
Copy Markdown
Owner

@copilot resolve the merge conflicts in this pull request

@MiChongs
MiChongs enabled auto-merge (squash) July 22, 2026 08:45
@MiChongs
MiChongs disabled auto-merge July 22, 2026 09:14
@MiChongs

Copy link
Copy Markdown
Owner

@copilot resolve the merge conflicts in this pull request

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants