Files
MemRelay/projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 依赖库行为核对结论(审核开发成果时用).md
T
memrelay 06a5c1c208 create: NixMsg 依赖库行为核对结论(审核开发成果时用)
MemRelay-Operation: memory-save:nixmsg-20260930-0500-exp-libs
MemRelay-Resource: 27e87e23-608c-4cae-8346-98e4fb300717
2026-09-30 04:28:59 +08:00

2.5 KiB
Raw Blame History

title, type, permalink, stable_id, scope, memory_type, project_id, usage_profile_id, status, revision, request_id, created_at, updated_at, tags
title type permalink stable_id scope memory_type project_id usage_profile_id status revision request_id created_at updated_at tags
NixMsg 依赖库行为核对结论(审核开发成果时用) experience main/projects/25464650-ed5d-440e-b362-190f2852d451/nix-msg-依赖库行为核对结论审核开发成果时用 27e87e23-608c-4cae-8346-98e4fb300717 project experience 25464650-ed5d-440e-b362-190f2852d451 0c9feb46-d06e-43cd-9ef0-c5813c84a998 active 1 nixmsg-20260930-0500-exp-libs 2026-09-29T20:28:55.863385+00:00 2026-09-29T20:28:55.863385+00:00
nixmsg
mochi-mqtt
websocket
review

2026-09-30 对照主分支源码核对,已写入 DEVELOPMENT.md 0.2,审核开发组代码时重点检查:

  • mochi-mqtt/server v2:OnConnect 返回 error 时不回 CONNACK 直接断开;OnConnectAuthenticate 返回 false 一律回 0x86(用户名或密码错误),SDK 会停止重连,所以数据库故障等内部错误必须在 OnConnect 里返回 error。心跳可在 OnConnect 里改 cl.State.Keepalive 并设 cl.State.ServerKeepalive=true。OnPublish 返回 packets.CodeSuccessIgnore 时 QoS1 照样回 PUBACK 且不转发;ErrRejectPacket 不回 PUBACK。下行包超过客户端 CONNECT 声明的 Maximum Packet Size 时在 WriteLoop 里静默丢弃(只有 debug 日志);inflight 达到 MaximumInflight 时新的 QoS1 下行也静默丢弃;OnPublishDropped 只在发送队列满时触发。会话接管先发 0x8E 再换连接,旧连接的 OnDisconnect 可能晚于新连接建立。EstablishConnection 会阻塞到连接结束。ReadPacket 当前为每个包复制新切片。
  • coder/websocket:Accept 默认做同源校验,浏览器跨域会 403,库文档建议用 InsecureSkipVerify 而不是 OriginPatterns=*;客户端不带子协议时 Accept 不拒绝,要自己查 c.Subprotocol();NetConn 会把读限制设为不限,RemoteAddr 是 TCP 对端。
  • autopaho:CleanStartOnInitialConnection 只管首次连接,要用 ConnectPacketBuilder 每次设 Clean Start;ConnectTimeout 默认 10 秒。
  • Go crypto/tls:服务端设了 NextProtos 而客户端声明的 ALPN 没有交集时会拒绝握手(例如 ALPN=mqtt 的设备)。
  • modernc sqlite 支持 _pragma=name(value) 和 _txlock=deferred|immediate|exclusive。
  • gopkg.in/yaml.v3 已于 2025 年 4 月停止维护;YAML 官方的 go.yaml.in/yaml/v3 冻结只收安全修复,v4 在 2026-09 仍是 rc。
  • OWASP argon2id 最低配置:19 MiB、t=2、p=1(或 46 MiB、t=1)。