diff options
| author | 蒙蒙plus <[email protected]> | 2025-11-21 11:21:06 +0800 |
|---|---|---|
| committer | R b b666 <[email protected]> | 2025-11-21 17:23:54 +0800 |
| commit | 6ab057be41c033a127e4982b51981aec858e69f4 (patch) | |
| tree | 99708173b8adb00f40565c7463d59638d68c9b71 /components | |
| parent | 25e98bd3f25b620555a2e4e59eb2ad905df0160a (diff) | |
🐞 fix(at_socket):修复socket 在开启server下的connect连接
修复accept在错误执行过程中返回无效socket问题
Diffstat (limited to 'components')
| -rw-r--r-- | components/net/at/at_socket/at_socket.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/components/net/at/at_socket/at_socket.c b/components/net/at/at_socket/at_socket.c index 4695d3c102..58680e2b34 100644 --- a/components/net/at/at_socket/at_socket.c +++ b/components/net/at/at_socket/at_socket.c @@ -751,7 +751,15 @@ static void at_connect_notice_cb(struct at_socket *sock, at_socket_evt_t event, char *socket_info = RT_NULL; int base_socket = 0; + rt_sscanf(buff, "SOCKET:%d", &base_socket); + LOG_D("ACCEPT BASE SOCKET: %d", base_socket); /* avoid use bottom driver to alloc "socket" */ + new_sock = at_get_base_socket(base_socket); + if (new_sock) + { + new_sock->state = AT_SOCKET_CONNECT; + return; + } new_socket = at_socket(AF_AT, SOCK_STREAM, 0); if (new_socket == -1) { @@ -759,8 +767,6 @@ static void at_connect_notice_cb(struct at_socket *sock, at_socket_evt_t event, } new_sock = at_get_socket(new_socket); new_sock->state = AT_SOCKET_CONNECT; - rt_sscanf(buff, "SOCKET:%d", &base_socket); - LOG_D("ACCEPT BASE SOCKET: %d", base_socket); new_sock->user_data = (void *)base_socket; /* find out the listen socket */ @@ -995,6 +1001,7 @@ __exit: if (result < 0) { at_do_event_changes(sock, AT_EVENT_ERROR, RT_TRUE); + return result; } return new_sock->socket; |
