wangfq
ab3a4cea0a
fix: 出厂默认 topic 使用真实设备序列号 + PRINT 修正
...
- cfig_flash.c: factory_dev_info() 用 gMacAddr 生成真实主题 dld960/{SN}/srv + dld960/{SN}/dev
- net_srv.h: TOPIC_DEFAULT 加注释标明为格式模板
- net_srv.c: 修复上次提交的 PRINT 宏转义异常
2026-07-07 10:57:20 +08:00
wangfq
b707241429
feat: MQTT 双主题同步到 vd960DBN 固件 + DBNMQTTool devlog
...
vd960DBN 固件改动:
- net_srv.h: 默认 topic 改为 dld960/{sn}/srv + dld960/{sn}/dev
- net_srv.c: dg_subscribe_display_topic() 直接用 topic_sub 订阅(不再追加 client_id/sn 后缀)
- net_srv.c: mqtt_deserialize_publish() topic 过滤改用 g_iot_topic.topic_sub(不再硬编码 TOPIC_DEFAULT_SUBSCRIBE)
DBNMQTTool 文档:
- devlog.md: 清理过期 topic 引用语义
2026-07-07 09:46:54 +08:00
wangfq
220f778117
fix(vd960DBN): 删除重复 poll_mqtt 定义 + 加头文件声明
2026-07-06 17:30:28 +08:00
wangfq
c17b67d185
refactor(vd960DBN): MQTT 重构,对标 DBN101GA 参考项目
...
net_srv.c 改动:
- WCHNET_HandleSockInt IoT 分支:SINT_STAT_CONNECT 直接调 mqtt_connect(),
SINT_STAT_RECV 调 mqtt_data_manage() — 复用已有的 SocketId_TCP/mqttBuf/mqttData
- 新增 mqtt_data_manage(): 处理 CONNACK/SUBACK/PUBLISH/PINGRESP
- 新增 poll_mqtt(): 心跳 PINGREQ (~9s)
peripheral_main.c 改动:
- IoT 模式下 poll_mqtt() 替代 iot_mqtt_poll()
对标 DBN101GA 的关键差异:
- net_srv.c 已有完整 mqtt_connect/mqtt_publish/MQTT_Subscribe/MQTT_Pingreq
- SocketId_TCP 由 WCHNET_CreateTcpMqttSocket 创建,不再自建 socket
- SINT_STAT_CONNECT 直接发 MQTT CONNECT,不延迟
2026-07-06 17:21:48 +08:00
wangfq
0c8402d726
fix(vd960DBN): MQTT socket 复用 SocketId_TCP,对标官方 WCHNET MQTT 例程
...
根因分析:iot_connect_broker 自建 socket 与 WCHNET_CreateTcpMqttSocket
创建的 SocketId_TCP 冲突(重复创建),且自建 socket 的 WCHNET_SocketSend
崩溃。官方 MQTT 例程使用统一的 SocketId/SocketId_TCP 模式。
改动:
- peripheral_main.c: 恢复 WCHNET_CreateTcpMqttSocket() 调用
- iot_connect_broker: 不再创建新 socket,直接复用 SocketId_TCP
- 全链路(SocketSend/HandleSockInt/poll)通过 g_iot_socket=SocketId_TCP 统一
2026-07-06 16:09:22 +08:00
wangfq
46091639cd
fix(vd960DBN): iot_connect_broker 加 SourPort + iot_mqtt_send 加 hex dump
...
- SourPort 参考 WCHNET_CreateTcpMqttSocket 设为 port_dev_udp+1
- iot_mqtt_send 打印前64字节 hex 内容
2026-07-06 15:44:22 +08:00
wangfq
88526158d0
fix(vd960DBN): MQTT CONNECT 改为 poll 内延迟发送,避免中断内 WCHNET_SocketSend 崩溃
...
1. 参考 net_srv.c mqtt_connect 模式重写 iot_mqtt_send_connect:
- clientID 用 g_dev_number_str(全局),不用 g_iot_dev_serial
- username/password 直接赋值,不用 strlen 检查
- memset 手动初始化,不用 brace-initializer 赋值
2. SINT_STAT_CONNECT 中断内不再调 iot_mqtt_send_connect,
改为标记 TCP_CONNECTED,由 iot_mqtt_poll 下一轮发送 —
参考 tcp_json_handle_sock_int 不立即发送数据的模式
2026-07-06 15:16:24 +08:00
wangfq
884a622cab
refactor(vd960DBN): 缓冲区 2048→1024,单次交互不超 1KB
...
- IOT_MQTT_RECV_BUF_LEN: 2048 → 1024
- IOT_MQTT_SEND_BUF_LEN: 2048 → 1024
- data_json 改用宏
- iot_handle_publish 的 json[] 改 static 防栈溢出
2026-07-06 13:47:10 +08:00
wangfq
7459c0fa80
fix(vd960DBN): iot_mqtt_publish_sensor 栈溢出 — data_json[2KB] + payload[2KB] = 4KB 远超 2KB 栈
...
每次主循环调 iot_mqtt_publish_sensor 都分配 4KB 栈变量,
直接栈溢出踩烂全局变量(含 g_iot_dev_serial→clientId=空),
最终在 iot_mqtt_send_connect→WCHNET_SocketSend 时 hard fault。
改为 static 彻底消除栈压力。
另加 iot_mqtt_send 调试日志。
2026-07-06 13:40:25 +08:00
wangfq
de3a7c197e
fix(vd960DBN): MQTTPacket_connectData_initializer 不能用于赋值,用临时变量中转
2026-07-06 11:31:12 +08:00
wangfq
dfadc26717
fix(vd960DBN): MQTT buffer 从栈改为 static,防止栈溢出 (栈仅 2KB)
...
iot_mqtt_send_connect: opts(~85B) + buf[256] → static (~340B 省)
iot_mqtt_send_subscribe: buf[256] → static (256B 省)
iot_mqtt_publish: buf[2048] → static (2KB 省)
调用链 WCHNET_HandleGlobalInt → iot_mqtt_handle_sock_int
→ iot_mqtt_send_connect 会叠加 WCHNET 协议栈内部开销,
2048B 栈极易溢出导致 hard fault(现象:乱码+truncated日志+重启)
2026-07-06 11:27:08 +08:00
wangfq
c0220c1d37
fix(vd960DBN): IoT socket 重复创建 + broker IP 解析错误
...
- iot_connect_broker: 删除 memcpy,get_ipstr_to_array 已正确解析 IP
之前 memcpy 把原始 ASCII 字节覆写到 broker_ip,导致 IP 变成 49.50.49.46
- peripheral_main.c: IoT 模式下跳过 WCHNET_CreateTcpMqttSocket,
由 iot_connect_broker() 统一管理 socket 生命周期,避免重复创建
2026-07-06 10:46:51 +08:00
wangfq
e6dbdb5296
fix(vd960DBN): 修复无法设置 IoT 模式的 bug
2026-07-06 10:24:15 +08:00
wangfq
39bda6067f
fix(vd960DBN): add missing closing brace for case PUBLISH block in iot_process_recv
...
case PUBLISH: { ... } was missing its closing }, causing ARMCC to think
iot_send_heartbeat and iot_connect_broker were declared inside a function body.
2026-07-03 18:28:40 +08:00
wangfq
122c36bb9d
fix(vd960DBN): iot_make_topic missing 5th arg for "srv"/"ctrl" topic
2026-07-03 18:18:38 +08:00
wangfq
6f5effae8c
fix(vd960DBN): iot_mqtt_srv compilation errors
...
- Add extern g_report_active (from tcp_json_srv.h)
- Fix iot_make_topic call: 4-arg -> 5-arg (add NULL for 'status' sub)
- Fix SOCK_INF field names: DestPort->DesPort, DestAddr->IPAddr
- Fix struct _WCHNET_IPAddr -> uint8_t broker_ip[4] (type not available)
2026-07-03 18:12:55 +08:00
wangfq
5333fe40de
refactor(vd960DBN): replace compile-time NET_SSC/NET_JSON/NET_IOT macros with runtime g_sub_code_enable.iot_enable
...
- Remove NET_SSC_ENABLE, NET_JSON_ENABLE, NET_IOT_ENABLE from net_config.h
- Socket config always allocates max: 1 UDP + 2 TCP + 1 TCP_LISTEN
- All #if guards in net_srv.c/h and peripheral_main.c replaced with
runtime g_sub_code_enable.iot_enable checks
- iot_enable=0 -> SSC mode (UDP + TCP client + JSON server)
- iot_enable=1 -> IoT MQTT mode (MQTT client via iot_mqtt_srv)
2026-07-03 18:07:32 +08:00
wangfq
9629729dc9
feat: IoT MQTT 客户端实现 — NET_SSC_ENABLE=0 时启用
...
新增文件:
- iot_mqtt_srv.h/c: MQTT 客户端 (TCP→CONNECT→SUBSCRIBE→READY)
支持: dev_info_query, pwd_verify (其他命令框架预留)
上报: loop_data (传感器), heartbeat (心跳 60s)
断线重连: 指数退避 5s~60s
协议: DLD960 IoT MQTT V1.00 (dld960/{sn}/...)
修改:
- net_config.h: 新增 NET_IOT_ENABLE = !NET_SSC_ENABLE,
IoT 模式分配 1 TCP socket (MQTT client)
- net_srv.c: IoT 初始化 + socket 中断路由
- peripheral_main.c: IoT poll + sensor publish 调用
模式:
NET_SSC_ENABLE=1 → SCC + TCP JSON Server (原有行为)
NET_SSC_ENABLE=0 → IoT MQTT Client (新增)
2026-07-03 17:36:22 +08:00
wangfq
a73a9392bd
docs: 补充 V2.8~V3.1 开发日志 (编译修复/车间距/misc_counter/上电抑制)
2026-07-03 17:01:09 +08:00
wangfq
acb999a881
fix: 放弃 close+recreate listen socket, 改为只关数据socket
...
根因: WCHNET ERR_ISCONN(0x1D), listen socket 关闭后端口5960仍被占用,
无法在同端口立即重建. WCHNET_MainTask 循环也未能释放.
新方案: tcp_json_restart 只关数据 socket(N+1) 断开客户端,
listen socket(N) 保持不动, 仅重置应用层状态.
新客户端连接时 CONNECT 事件照常触发.
2026-07-03 16:10:52 +08:00
wangfq
c181839694
fix: SocketCreat 0x1D — close后先跑WCHNET回收资源再creat
...
根因: WCHNET_SocketClose 异步, 资源在 WCHNET_MainTask 中释放.
tcp_json_restart() close后立刻creat, 旧socket未回收→0x1D.
修复: close后循环5次 WCHNET_MainTask+HandleGlobalInt+Delay(10ms)
确保资源释放后再 WCHNET_SocketCreat
2026-07-03 15:51:16 +08:00
wangfq
b97afe22d5
refactor: 去掉 60s Auth timeout, 改为 3次失败即重启
...
- 删除 tcp_json_poll 中的 Auth timeout 60s 超时检查
- Auth 失败逻辑已在 handle_pwd_verify: 3次失败→tcp_json_restart()
- 连接后无交互场景由 5min 空闲检查覆盖
2026-07-03 15:28:00 +08:00
wangfq
fe69855dc9
fix: Auth timeout 耗尽重启限额导致冷却期阻断连接
...
根因: auth timeout(60s) 走 do_restart 计数, 上电后 4 分钟就耗尽 3 次限额,
进入 10min 冷却期, 客户端无法连接.
修复: auth timeout 直接调 tcp_json_restart() 绕开 do_restart,
不消耗重启计数器. 只保留 5min 空闲/无连接作为限额保护目标.
2026-07-03 15:18:54 +08:00
wangfq
1ce2e783ae
fix: Auth timeout 死循环打印 — 改用 do_restart 而非手工 close
...
根因: WCHNET_SocketClose 后 g_json_socket_listen 未归 0xFF,
g_json_auth_timer 未重置, 下次 poll 条件仍满足 → 无限打印.
修复: auth timeout 直接 goto do_restart, 走完整的 close→recreate 流程
2026-07-03 13:49:10 +08:00
wangfq
5966eb8657
feat: TCP Server 自动重启机制 — 3种超时条件
...
触发条件(任一满足即重启):
1. 5分钟无任何连接 (从未连或上次连接后超时)
2. 5分钟无数据交互 (已连接但静默)
3. Auth 密码错误3次
重启流程: 关闭socket→清状态→重新SocketCreat+SocketListen
保护机制: 最多连续重启3次, 超限后进入10分钟冷却期
其他改动:
- tcp_json_srv_init 去掉 _init_done 限制, 支持重新初始化
- 新增 tcp_json_restart() 函数
- 新增 g_json_last_comm_ts / g_json_last_connect_ts 追踪
- CONNECT 时清零 restart_count (正常连接重置计数器)
2026-07-03 11:46:17 +08:00
wangfq
d9059fac92
rename: passtime_ms5 → passtime_ms
2026-07-03 11:08:53 +08:00
wangfq
9bab650c27
feat: 0xC0 时间量根据 car_state 区分通过时间/车间距
...
car_state=0(无车) → passtime_ms5 (通过时间)
car_state=1(有车) → gap_ms5 (车间距)
2026-07-02 17:48:05 +08:00
wangfq
518f79022a
docs: 移动协议文档到 vd_960/docs/
2026-07-02 17:10:36 +08:00
wangfq
42b88de182
docs: 波特率修正为 192000
2026-07-02 16:52:32 +08:00
wangfq
2163b89d28
feat: 协议 V1.04 — 主动上报增加继电器输出次数 (misc_type=3)
...
- loop_uart_proto.h: LUP_CoilSensor.misc 联合体新增 relay_count
- tcp_json_srv.c: format_sensor_json 处理 misc_type=3 → relay_count
- docs: 更新协议文档至 V1.04
2026-07-02 16:50:06 +08:00
wangfq
43d815a4fe
fix: WCHNET_SocketSend 使用数据 socket (listen+1) 而非 listen socket
...
诊断日志确认: g_json_socket_listen=0, 数据中断走 sock=1
WCHNET TCP 模式下 listen=N, 收发数据必须走 socket N+1
修改: json_sensor_callback + tcp_json_push_sensor 两处
2026-07-02 14:40:31 +08:00
wangfq
ff17bbbc88
fix: 回调注册前置到 socket 操作之前 + 入口诊断日志
...
- lup_set_sensor_callback 移到 SocketCreat/SocketListen 之前
避免 socket 失败 return 导致回调漏注册
- json_sensor_callback 入口打印 socket/auth/report 三状态
各检查点分别打印 skip 原因
2026-07-02 14:35:56 +08:00
wangfq
c4a2b50ca5
fix: tcp_json_srv_init 加一次性守卫 + callback NULL 诊断
...
问题: NET_SSC_ENABLE 时 g_net_state.flag 保持 1, net_srv_init 反复调用
tcp_json_srv_init 第二次因 socket 已存在失败 → 过早 return
→ lup_set_sensor_callback 未执行 → 0xC0 回调永远 NULL
修复:
- tcp_json_srv_init: 加 static _init_done 守卫,防止重复执行
- lup_set_sensor_callback: 打印注册/清除日志
- lup_process_frame: 回调为 NULL 时打印诊断信息
2026-07-02 14:29:23 +08:00
wangfq
d559294359
fix: 添加 format_sensor_json 前置声明,修复 implicit declaration 编译错误
2026-07-02 14:21:06 +08:00
wangfq
6acd788d13
fix: 0xC0 帧通过回调直接驱动网络上报
...
loop_uart_proto:
- 新增 lup_sensor_cb_t 回调类型 + lup_set_sensor_callback
- lup_process_frame 收到 0xC0 → 调用注册的回调推送数据
tcp_json_srv:
- json_sensor_callback: 检查 g_report_active → 解析 → TCP 发送
- tcp_json_srv_init: 注册回调
usart_biz:
- uart_srv: 0xC0 由回调直接 TCP 推送,BLE 连接时也转发 BLE
- 移除旧的 _report_flag 轮询路径
数据流: ISR → lup_process_frame(校验) → json_sensor_callback → WCHNET_SocketSend
2026-07-02 14:15:28 +08:00
wangfq
7c2927d836
fix: 0xC0 帧必须经 lup_process_frame 校验后再分流
...
修改前: 0xC0 帧绕过 lup_process_frame,校验未执行
修改后: 所有 0x7F 帧先统一校验,0xC0 由校验后的数据分流处理
流程: ISR→lup_feed_byte→uart_srv→lup_process_frame(校验)→
0xC0→_report_flag→tcp_json_push_sensor→TCP推送
2026-07-02 13:56:45 +08:00
wangfq
8526023e06
feat: 实现 sensor_report 主动上报功能
...
vd960DBN:
- 新增 g_report_active 全局标志控制传感器数据主动上报
- handle_report_config: 解析 active_report JSON 字段,设置/清除标志
- tcp_json_push_sensor: 检查 g_report_active 开关,仅在启用时推送
DBNetClient:
- tcp_json_client.py: 新增 report_config(active_report) 方法
- main.py: 线圈标签页添加"启用主动上报"复选框
- main.py: 注册 sensor_report push 处理器,实时显示推送数据
2026-07-02 13:42:59 +08:00
wangfq
615b369690
fix: 同步协议文档 V1.03 — 0x8A 响应格式 + LEN 计算修正
...
协议变更(V1.02→V1.03):
- 0x8A 响应: Ret(0x10/0x11) + Amount + Amount*(SensIn+SensOut)
- 新增灵敏度响应例程 (7F 80 13 8A 10 04 ...)
- 波特率确认 192000
代码修正:
- lup_build_sensitivity_read: LEN=3 (was 4)
- lup_build_sensitivity_write: LEN=3+Amount*4 (was 2+Amount*2)
- lup_parse_sensitivity_resp: 解析 Ret 字节 + SensIn/SensOut 双值
- lup_build_set_param: LEN=3+5*Amount (was 2+5*Amount)
- tcp_json_srv: JSON 输出含 sens_in/sens_out 字段
2026-07-02 11:55:29 +08:00
wangfq
eb7419b3e8
fix: 修正 lup_append_checksum total_len 计算错误 (CMD 重复计数)
...
Bug: 1 + 3 + LEN + 2 把 CMD 计入两次 (Header(3) 和 Value(LEN) 各含一次)
Fix: 5 + LEN = Magic(1)+Addr(1)+LEN(1)+Value(LEN)+Check(2)
影响: 校验字节偏移1位,导致 XOR 写到错误位置,地感MCU 校验失败无响应
同时修正 lup_build_sensor_ack 的 padding 长度和返回值
2026-07-02 10:55:37 +08:00
wangfq
e9c24ae736
feat: DBNetClient Loop命令完善 + vd960DBN 发送调试打印
...
vd960DBN:
- loop_uart_proto.c: 所有发送函数添加 LUP Tx 调试打印
- tcp_json_srv.c: 新增 loop_version_query/loop_reset/loop_factory_init/
loop_sens_read/loop_sens_write 命令处理器 + 延迟响应解析
- 修复 loop_sens_write 未设置命令状态机和错误使用解析函数的问题
DBNetClient:
- tcp_json_client.py: 新增 full Loop MCU API (6 条命令)
- main.py: 线圈参数标签页增加版本/复位/出厂/灵敏度操作按钮
2026-07-02 10:33:11 +08:00
wangfq
e9b58a660e
fix: 修正 USART2 波特率为 192000 (与 Loop MCU 实际通信速率一致)
2026-07-02 10:09:47 +08:00
wangfq
4fbda96078
feat(vd960DBN): 实现 DLD960Loop 串口通信协议 (0x7F)
...
新增:
- docs/DLD960Loop_串口通信协议.md — 协议文档 V1.02
- loop_uart_proto.h/c — 协议实现: checksum/组包/解析/帧状态机/命令状态机
修改:
- usart_biz.c: 使用 lup_feed_byte() 帧解析器替代 timeout heuristic; 波特率修正为 115200
- tcp_json_srv.c/h: loop_param_set/query 真实实现(0x63/0x64), 0xC0 传感器推流, 延迟响应机制
- peripheral_main.c: 添加 tcp_json_push_sensor() 调用, 帧解析器超时保护
校验验证: 5个协议例程 XOR+SUM 全部通过
2026-07-02 09:26:34 +08:00
wangfq
4e75312a0f
fix: CONNECT 事件到达 TCP_LISTEN socket(1) 而非 TCP socket(0)
...
WCHNET 将 CONNECT 事件投递到 TCP_LISTEN 内部 socket (sock 1),
而非用户创建的 TCP socket (sock 0)。之前的路由只检查
socketid==g_json_socket_listen(0),遗漏了 sock 1。
修复:
- NET_SSC_ENABLE=1 时同时路由 sock N 和 sock N+1 到 JSON handler
- NET_SSC_ENABLE=0 时所有 socket 事件都路由到 JSON handler
- tcp_json_handle_sock_int 移除 socket 限定,处理任意 socket 事件
2026-07-01 14:09:34 +08:00
wangfq
32d613a54f
debug: 在 WCHNET_HandleGlobalInt 中打印 socket 中断信息
...
添加 SockInt: sock=%d stat=0x%02X 日志,用于诊断为何
client 连接成功后 CONNECT 事件未被处理
2026-07-01 14:02:10 +08:00
wangfq
157ff48835
fix: NET_SSC_ENABLE=0 时 g_net_state.flag 卡在 1 导致 tcp_json_srv_init 反复调用
...
WCHNET_CreateUdpSocket 原本会将 flag 推进到 2,被 #if 排除后
net_srv_init 每次主循环都重新执行,tcp_json_srv_init 首次成功后
后续 SocketCreat 都返回 0x1B(socket 已存在)
修复:SSC 禁用时在 tcp_json_srv_init 后手动设 flag=2
2026-07-01 13:47:09 +08:00
wangfq
131d767cc3
fix: mStopIfError/GetMacAddr/get_ipstr_to_array 误被 #if NET_SSC_ENABLE 排除
...
这些共享函数被包裹在 #if NET_SSC_ENABLE 中导致链接失败:
- mStopIfError — net_srv_init 调用
- GetMacAddr — peripheral_main 调用
- get_ipstr_to_array — tcp_json_srv 调用
修复:在 clear_mqtt_buf 后关闭 #if,mStopIfError 后重开;
在 poll_mqtt 后关闭 #if,get_ipstr_to_array 后重开
2026-07-01 13:35:14 +08:00
wangfq
e5c99069a0
refactor: 用 NET_SSC_ENABLE 宏隔离原有 TCP/UDP 代码,默认=0
...
net_config.h:
- 新增 NET_SSC_ENABLE=0, NET_JSON_ENABLE=1 功能开关
- WCHNET_NUM_UDP/TCP 根据开关条件编译
- 默认仅保留 JSON TCP server (1 TCP socket),SSC 全部禁用
net_srv.h:
- SocketId_TCP/UDP extern 放入 #if NET_SSC_ENABLE
- WCHNET_CreateTcpSocket/MqttSocket 原型放入 #if
net_srv.c:
- SSC/MQTT 变量和函数全部置入 #if NET_SSC_ENABLE
- WCHNET_HandleSockInt 中 SSC 处理分支置入 #if
- net_srv_init 中 WCHNET_CreateUdpSocket 和 memset(socket) 置入 #if
- JSON routing 保持无条件编译
peripheral_main.c:
- WCHNET_CreateTcpSocket/MqttSocket 调用置入 #if NET_SSC_ENABLE
tcp_json_srv.h:
- 移除 SocketId_TCP/UDP extern(JSON handler 不再引用)
影响:NET_SSC_ENABLE=0 时设备仅运行 TCP JSON server (port 5960),
原有 SSC UDP/TCP/MQTT 代码不参与编译,零干扰。
2026-07-01 11:33:32 +08:00
wangfq
ba35ea8ae3
refactor: 按 WCH 官方 TCPServer 例程重写 TCP JSON server
...
核心变更:去掉 g_json_socket_client,listen socket 直接承载收发数据。
参考 EVT/EXAM/ETH/TCPServer 例程:
- 创建 PROTO_TYPE_TCP socket → WCHNET_SocketListen
- 同一 socket 处理 CONNECT + RECV + DISCONNECT + TIMEOUT
- 不需要 'accepted socket' 检测
移除的复杂逻辑:
- g_json_socket_client 变量及所有 'newly accepted' 检测代码
- WCHNET_HandleSockInt 第二路由条件(socketid!=listen,!=TCP,!=UDP 那串)
- tcp_json_handle_sock_int 中 listen/client 分离处理
- listen==client overlap 的迂回保护
修改文件:
- tcp_json_srv.h: 移除 g_json_socket_client extern
- tcp_json_srv.c: 移除 g_json_socket_client,handler 简化为 4 个 if
- net_srv.c: 路由简化为仅 socketid==g_json_socket_listen
2026-07-01 11:18:43 +08:00
wangfq
7804d97a45
fix: listen socket CONNECT 不应触发 accepted 客户端逻辑
...
- WCHNET_HandleSockInt 第二路由条件增加 socketid!=g_json_socket_listen
- tcp_json_handle_sock_int 'Newly accepted' 检查增加 socketid!=g_json_socket_listen
- 防止 listen socket 的 CONNECT 事件误触发 WCHNET_ModifyRecvBuf 和 g_json_socket_client 覆写
根因:TCP_LISTEN socket 和 accepted client 是不同 socket ID(1 vs 3),
listen socket 的 CONNECT 不应穿透到 'newly accepted' 分支去配置 recv buffer,
否则会干扰 WCHNET 对 accepted socket 的数据路由
2026-07-01 09:52:28 +08:00
wangfq
be8c48688c
fix: tcp_json_handle_sock_int RECV 被 listen socket 分支拦截导致收不到鉴权数据
...
- RECV 处理移到函数最前面,优先于 listen socket 检查
- listen socket 分支增加 socketid!=g_json_socket_client 保护,
防止 listen 与 accepted client 为同一 socket ID 时
RECV 事件被 listen 分支 return 拦截
- WCHNET 某些版本可能将 TCP_LISTEN 和已 accept 的连接
共用同一 socket ID,此时旧代码在 listen 检查处直接 return
导致后续 client RECV 处理永远不被执行
2026-07-01 09:20:44 +08:00