summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
author蒙蒙plus <[email protected]>2025-11-21 11:21:06 +0800
committerR b b666 <[email protected]>2025-11-21 17:23:54 +0800
commit6ab057be41c033a127e4982b51981aec858e69f4 (patch)
tree99708173b8adb00f40565c7463d59638d68c9b71 /components
parent25e98bd3f25b620555a2e4e59eb2ad905df0160a (diff)
🐞 fix(at_socket):修复socket 在开启server下的connect连接
修复accept在错误执行过程中返回无效socket问题
Diffstat (limited to 'components')
-rw-r--r--components/net/at/at_socket/at_socket.c11
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;