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 事件
This commit is contained in:
@@ -484,15 +484,15 @@ void WCHNET_DataManage(uint8_t id)
|
||||
*/
|
||||
void WCHNET_HandleSockInt(uint8_t socketid, uint8_t intstat)
|
||||
{
|
||||
#if NET_SSC_ENABLE
|
||||
uint8_t i;
|
||||
|
||||
// Route JSON protocol socket events (same socket handles listen + data)
|
||||
if (socketid == g_json_socket_listen) {
|
||||
// Route JSON protocol socket events (both TCP + TCP_LISTEN internal)
|
||||
if (socketid == g_json_socket_listen || socketid == (g_json_socket_listen + 1)) {
|
||||
tcp_json_handle_sock_int(socketid, intstat);
|
||||
return;
|
||||
}
|
||||
|
||||
#if NET_SSC_ENABLE
|
||||
g_net_state.intstat = intstat;
|
||||
|
||||
if (intstat & SINT_STAT_RECV) //receive data
|
||||
@@ -539,7 +539,9 @@ void WCHNET_HandleSockInt(uint8_t socketid, uint8_t intstat)
|
||||
g_net_state.flag = 1;
|
||||
// WCHNET_CreateTcpSocket();
|
||||
}
|
||||
#endif /* NET_SSC_ENABLE */
|
||||
#else /* !NET_SSC_ENABLE — all sockets belong to JSON handler */
|
||||
tcp_json_handle_sock_int(socketid, intstat);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -623,9 +623,6 @@ void tcp_json_srv_init(void) {
|
||||
}
|
||||
|
||||
void tcp_json_handle_sock_int(uint8_t socketid, uint8_t intstat) {
|
||||
// Only process events on our TCP listen/data socket
|
||||
if (socketid != g_json_socket_listen) return;
|
||||
|
||||
// === CONNECT: client connected — configure recv buffer, init auth state ===
|
||||
if (intstat & SINT_STAT_CONNECT) {
|
||||
WCHNET_ModifyRecvBuf(socketid, (uint32_t)g_json_wchnet_buf, RECE_BUF_LEN);
|
||||
|
||||
Reference in New Issue
Block a user