Skip to content

Commit 35fd0fe

Browse files
committed
Merge branch 'fix/simple_http_server_ctrl_sock_address_len' into 'master'
fix(http_server): Simple http server socket len fix See merge request espressif/esp-idf!36665
2 parents ece4ee3 + ef92597 commit 35fd0fe

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

components/esp_http_server/src/util/ctrl_sock.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* SPDX-FileCopyrightText: 2018-2024 Espressif Systems (Shanghai) CO LTD
2+
* SPDX-FileCopyrightText: 2018-2025 Espressif Systems (Shanghai) CO LTD
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*/
@@ -41,18 +41,21 @@ int cs_create_ctrl_sock(int port)
4141

4242
int ret;
4343
struct sockaddr_storage addr = {};
44+
socklen_t addr_len = 0;
4445
#if IPV4_ENABLED
4546
struct sockaddr_in *addr4 = (struct sockaddr_in *)&addr;
4647
addr4->sin_family = AF_INET;
4748
addr4->sin_port = htons(port);
4849
inet_aton("127.0.0.1", &addr4->sin_addr);
50+
addr_len = sizeof(struct sockaddr_in);
4951
#else
5052
struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&addr;
5153
addr6->sin6_family = AF_INET6;
5254
addr6->sin6_port = htons(port);
5355
inet6_aton("::1", &addr6->sin6_addr);
56+
addr_len = sizeof(struct sockaddr_in6);
5457
#endif
55-
ret = bind(fd, (struct sockaddr *)&addr, sizeof(addr));
58+
ret = bind(fd, (struct sockaddr *)&addr, addr_len);
5659
if (ret < 0) {
5760
close(fd);
5861
return -1;
@@ -69,18 +72,21 @@ int cs_send_to_ctrl_sock(int send_fd, int port, void *data, unsigned int data_le
6972
{
7073
int ret;
7174
struct sockaddr_storage to_addr = {};
75+
socklen_t addr_len = 0;
7276
#if IPV4_ENABLED
7377
struct sockaddr_in *addr4 = (struct sockaddr_in *)&to_addr;
7478
addr4->sin_family = AF_INET;
7579
addr4->sin_port = htons(port);
7680
inet_aton("127.0.0.1", &addr4->sin_addr);
81+
addr_len = sizeof(struct sockaddr_in);
7782
#else
7883
struct sockaddr_in6 *addr6 = (struct sockaddr_in6 *)&to_addr;
7984
addr6->sin6_family = AF_INET6;
8085
addr6->sin6_port = htons(port);
8186
inet6_aton("::1", &addr6->sin6_addr);
87+
addr_len = sizeof(struct sockaddr_in6);
8288
#endif
83-
ret = sendto(send_fd, data, data_len, 0, (struct sockaddr *)&to_addr, sizeof(to_addr));
89+
ret = sendto(send_fd, data, data_len, 0, (struct sockaddr *)&to_addr, addr_len);
8490

8591
if (ret < 0) {
8692
return -1;

0 commit comments

Comments
 (0)