Skip to content

Commit 3632693

Browse files
authored
Merge pull request #1759 from Lawlieta/chenyong
[net][sal] Fix accept create new socket failed issue.
2 parents 90d05a2 + 39f3f93 commit 3632693

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

components/net/sal_socket/socket/net_sockets.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ int accept(int s, struct sockaddr *addr, socklen_t *addrlen)
4747
if (fd < 0)
4848
{
4949
rt_set_errno(-ENOMEM);
50-
sal_closesocket(socket);
51-
50+
sal_closesocket(new_socket);
5251
return -1;
5352
}
5453

@@ -74,6 +73,8 @@ int accept(int s, struct sockaddr *addr, socklen_t *addrlen)
7473
return fd;
7574
}
7675

76+
rt_set_errno(-ENOMEM);
77+
sal_closesocket(new_socket);
7778
return -1;
7879
}
7980

components/net/sal_socket/src/sal_socket.c

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -411,28 +411,31 @@ int sal_accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
411411
if (new_socket != -1)
412412
{
413413
int retval;
414-
int new_socket;
414+
int new_sal_socket;
415415
struct sal_socket *new_sock;
416416

417417
/* allocate a new socket structure and registered socket options */
418-
new_socket = socket_new();
419-
if (new_socket < 0)
418+
new_sal_socket = socket_new();
419+
if (new_sal_socket < 0)
420420
{
421+
sock->ops->closesocket(new_socket);
421422
return -1;
422423
}
423-
new_sock = sal_get_socket(new_socket);
424+
new_sock = sal_get_socket(new_sal_socket);
424425

425426
retval = socket_init(sock->domain, sock->type, sock->protocol, &new_sock);
426427
if (retval < 0)
427428
{
429+
sock->ops->closesocket(new_socket);
430+
rt_memset(new_sock, 0x00, sizeof(struct sal_socket));
428431
LOG_E("New socket registered failed, return error %d.", retval);
429432
return -1;
430433
}
431434

432435
/* socket struct user_data used to store the acquired new socket */
433436
new_sock->user_data = (void *) new_socket;
434437

435-
return new_sock->socket;
438+
return new_sal_socket;
436439
}
437440

438441
return -1;

0 commit comments

Comments
 (0)