You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by je...@apache.org on 2022/09/27 07:59:53 UTC
[mynewt-core] branch master updated: apps/iptest: Make app more user friendly
This is an automated email from the ASF dual-hosted git repository.
jerzy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
The following commit(s) were added to refs/heads/master by this push:
new bd30bb180 apps/iptest: Make app more user friendly
bd30bb180 is described below
commit bd30bb180922ab650a5bf97d6bed3f4cb9d78bbf
Author: Jerzy Kasenberg <je...@codecoup.pl>
AuthorDate: Sun Sep 18 10:33:27 2022 +0200
apps/iptest: Make app more user friendly
net_test_socket could be created twice leading to memory leak
now whenever 'socket' command is executed it closes previous
socket first.
bind/listen/connect check if socket is created first and
print message if it is not.
---
apps/iptest/src/main.c | 46 +++++++++++++++++++++++++++++++++++-----------
1 file changed, 35 insertions(+), 11 deletions(-)
diff --git a/apps/iptest/src/main.c b/apps/iptest/src/main.c
index f606e068e..c0ca241bd 100644
--- a/apps/iptest/src/main.c
+++ b/apps/iptest/src/main.c
@@ -90,6 +90,23 @@ static const union mn_socket_cb net_listen_cbs = {
.listen.newconn = net_test_newconn,
};
+static void
+net_cli_close_socket(void)
+{
+ int rc;
+
+ if (net_test_socket) {
+ rc = mn_close(net_test_socket);
+ console_printf("mn_close() = %d\n", rc);
+ net_test_socket = NULL;
+ }
+ if (net_test_socket2) {
+ rc = mn_close(net_test_socket2);
+ console_printf("mn_close() = %d\n", rc);
+ net_test_socket2 = NULL;
+ }
+}
+
static int
net_cli(int argc, char **argv)
{
@@ -105,13 +122,15 @@ net_cli(int argc, char **argv)
return 0;
}
if (!strcmp(argv[1], "udp")) {
+ net_cli_close_socket();
rc = mn_socket(&net_test_socket, MN_PF_INET, MN_SOCK_DGRAM, 0);
console_printf("mn_socket(UDP) = %d %x\n", rc,
- (int)net_test_socket);
+ (int)net_test_socket);
} else if (!strcmp(argv[1], "tcp")) {
+ net_cli_close_socket();
rc = mn_socket(&net_test_socket, MN_PF_INET, MN_SOCK_STREAM, 0);
console_printf("mn_socket(TCP) = %d %x\n", rc,
- (int)net_test_socket);
+ (int)net_test_socket);
} else if (!strcmp(argv[1], "connect") || !strcmp(argv[1], "bind")) {
if (argc < 4) {
return 0;
@@ -137,27 +156,32 @@ net_cli(int argc, char **argv)
sin.msin_addr.s_addr = addr;
if (!strcmp(argv[1], "connect")) {
+ if (NULL == net_test_socket) {
+ console_printf("No socket, use 'socket tcp' first\n");
+ return 0;
+ }
mn_socket_set_cbs(net_test_socket, NULL, &net_test_cbs);
rc = mn_connect(net_test_socket, (struct mn_sockaddr *)&sin);
console_printf("mn_connect() = %d\n", rc);
} else {
+ if (NULL == net_test_socket) {
+ console_printf("No socket, use 'socket <usb|tcp>' first\n");
+ return 0;
+ }
mn_socket_set_cbs(net_test_socket, NULL, &net_test_cbs);
rc = mn_bind(net_test_socket, (struct mn_sockaddr *)&sin);
console_printf("mn_bind() = %d\n", rc);
}
} else if (!strcmp(argv[1], "listen")) {
- mn_socket_set_cbs(net_test_socket, NULL, &net_listen_cbs);
+ if (NULL == net_test_socket) {
+ console_printf("No socket, use 'socket tcp' 'socket listen' first\n");
+ return 0;
+ }
+ mn_socket_set_cbs(net_test_socket, NULL, &net_listen_cbs);
rc = mn_listen(net_test_socket, 2);
console_printf("mn_listen() = %d\n", rc);
} else if (!strcmp(argv[1], "close")) {
- rc = mn_close(net_test_socket);
- console_printf("mn_close() = %d\n", rc);
- net_test_socket = NULL;
- if (net_test_socket2) {
- rc = mn_close(net_test_socket2);
- console_printf("mn_close() = %d\n", rc);
- net_test_socket2 = NULL;
- }
+ net_cli_close_socket();
} else if (!strcmp(argv[1], "send")) {
if (argc < 3) {
return 0;