# v0.26.34

> v0.26.34 更新内容

---

LLMS 索引： [llms.txt](/llms.txt)

---

- 新增：
  - `nps -server` 管理脚本欢迎语显示当前版本号,更新版本时比对版本，已是最新则直接退出，避免无谓覆盖 [#328](https://github.com/yisier/nps/issues/328)
  - `npc` 管理脚本欢迎语显示当前版本号，新增 `[5] 更新客户端` 选项，更新并替换 npc 二进制
  - 客户端新增到期时间字段，创建/修改客户端时可选填写，到期后自动暂停客户端 [#322](https://github.com/yisier/nps/issues/322)
- 修复：
  - Dashboard IO 速率采集阻塞请求 500ms，改为后台采集缓存，消除 Sleep 等待
  - ServerStatus 切片并发读写不安全，添加 RWMutex 保护
  - flowSession goroutine 泄漏，改为仅在 StartNewServer 启动一次
  - GetTunnel 双重遍历 sync.Map 性能问题，合并为单次 Range
  - Bridge Client 字段并发读写不安全，添加 Mutex 保护
  - TLS ClientHello recordLen 无上限，添加 16KB 限制防止内存耗尽
  - SOCKS5 地址解析未检查 Read 返回值，改用 io.ReadFull
  - 文件存储 panic 改为错误日志，defer 清理临时文件防止泄漏
  - GenerateServerPort 可能无限循环，限制 1000 次重试
  - P2P UDP 无超时永久阻塞，添加 30s ReadDeadline
  - P2P goroutine 退出控制改用 context，修复潜在泄漏
  - 客户端 UDP ReadFrom 错误后未退出，修复无效数据继续处理
  - [#324](https://github.com/yisier/nps/issues/324) 隧道/域名解析/UDP 流量始终为 0
  - muxPackager buffer pool 泄漏：UnPack() 错误路径未归还 windowBuff 导致内存持续增长
  - bridge 客户端重连时旧 WORK_CHAN/WORK_FILE mux 未关闭，底层连接和 goroutine 永不释放
  - pmux 连接超时泄漏：process() channel 发送超时后连接未关闭，且 ACCEPT_TIME_OUT 单位错误（10ns 应为 10s）
  - pmux 关闭流程 panic：加 done channel + WaitGroup 保证 Close() 等所有 process() 退出后再 close conn channel；process() 入口设 ReadDeadline 防止阻塞读导致 wg.Wait() 死锁；PortListener 加 done channel 唤醒 Accept()
- 优化：ioutil.WriteFile → os.WriteFile、rand.Seed → rand.New 本地随机源

---

反链：

- [更新日志](/changelog/)
