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
This commit is contained in:
@@ -803,6 +803,18 @@ void tcp_json_restart(void) {
|
|||||||
g_json_socket_listen = 0xFF;
|
g_json_socket_listen = 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 1.5 WCHNET 资源回收 — SocketClose 是异步的, 需跑一轮 MainTask */
|
||||||
|
{
|
||||||
|
uint8_t _retry;
|
||||||
|
for (_retry = 0; _retry < 5; _retry++) {
|
||||||
|
WCHNET_MainTask();
|
||||||
|
if (WCHNET_QueryGlobalInt()) {
|
||||||
|
WCHNET_HandleGlobalInt();
|
||||||
|
}
|
||||||
|
Delay_Ms(10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* 2. 重置状态 */
|
/* 2. 重置状态 */
|
||||||
g_json_auth_state = JSON_STATE_WAIT_AUTH;
|
g_json_auth_state = JSON_STATE_WAIT_AUTH;
|
||||||
g_json_pwd_retry = 0;
|
g_json_pwd_retry = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user