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)
|
void WCHNET_HandleSockInt(uint8_t socketid, uint8_t intstat)
|
||||||
{
|
{
|
||||||
|
#if NET_SSC_ENABLE
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
|
|
||||||
// Route JSON protocol socket events (same socket handles listen + data)
|
// Route JSON protocol socket events (both TCP + TCP_LISTEN internal)
|
||||||
if (socketid == g_json_socket_listen) {
|
if (socketid == g_json_socket_listen || socketid == (g_json_socket_listen + 1)) {
|
||||||
tcp_json_handle_sock_int(socketid, intstat);
|
tcp_json_handle_sock_int(socketid, intstat);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if NET_SSC_ENABLE
|
|
||||||
g_net_state.intstat = intstat;
|
g_net_state.intstat = intstat;
|
||||||
|
|
||||||
if (intstat & SINT_STAT_RECV) //receive data
|
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;
|
g_net_state.flag = 1;
|
||||||
// WCHNET_CreateTcpSocket();
|
// 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) {
|
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 ===
|
// === CONNECT: client connected — configure recv buffer, init auth state ===
|
||||||
if (intstat & SINT_STAT_CONNECT) {
|
if (intstat & SINT_STAT_CONNECT) {
|
||||||
WCHNET_ModifyRecvBuf(socketid, (uint32_t)g_json_wchnet_buf, RECE_BUF_LEN);
|
WCHNET_ModifyRecvBuf(socketid, (uint32_t)g_json_wchnet_buf, RECE_BUF_LEN);
|
||||||
|
|||||||
Reference in New Issue
Block a user