jolly has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmo-netif/+/36124?usp=email )
Change subject: stream_{client,server} example: Cleanup on exit ......................................................................
stream_{client,server} example: Cleanup on exit
In order to detect memory leaks while debugging, stream server/client and keyboard is closed on exit.
Related: OS#5753 Change-Id: I9dbb7f46b2a798e88ad4df8ff73c6ee40c07b843 --- M examples/stream-client.c M examples/stream-server.c 2 files changed, 36 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-netif refs/changes/24/36124/1
diff --git a/examples/stream-client.c b/examples/stream-client.c index 97aaa1c..d57dc12 100644 --- a/examples/stream-client.c +++ b/examples/stream-client.c @@ -32,9 +32,12 @@
static struct osmo_stream_cli *conn;
+static bool quit = false; + void sighandler(int foo) { LOGP(DSTREAMTEST, LOGL_NOTICE, "closing stream.\n"); + quit = true; exit(EXIT_SUCCESS); }
@@ -162,9 +165,17 @@ exit(EXIT_FAILURE); }
+ signal(SIGINT, sighandler); + LOGP(DSTREAMTEST, LOGL_NOTICE, "Entering main loop\n");
- while(1) { + while(!quit) { osmo_select_main(0); } + + signal(SIGINT, SIG_DFL); + + osmo_fd_unregister(kbd_ofd); + + osmo_stream_cli_destroy(conn); } diff --git a/examples/stream-server.c b/examples/stream-server.c index d0647b7..49d52a7 100644 --- a/examples/stream-server.c +++ b/examples/stream-server.c @@ -35,11 +35,12 @@ static struct osmo_stream_srv_link *srv; static struct osmo_stream_srv *conn;
+bool quit = false;
void sighandler(int foo) { LOGP(DSTREAMTEST, LOGL_NOTICE, "closing STREAMSERVER.\n"); - exit(EXIT_SUCCESS); + quit = true; }
int read_cb(struct osmo_stream_srv *conn, struct msgb *msg) @@ -181,9 +182,17 @@ osmo_fd_setup(kbd_ofd, STDIN_FILENO, OSMO_FD_READ, kbd_cb, srv, 0); osmo_fd_register(kbd_ofd);
+ signal(SIGINT, sighandler); + LOGP(DSTREAMTEST, LOGL_NOTICE, "Entering main loop on %s\n", osmo_stream_srv_link_get_sockname(srv));
- while(1) { + while(!quit) { osmo_select_main(0); } + + signal(SIGINT, SIG_DFL); + + osmo_fd_unregister(kbd_ofd); + + osmo_stream_srv_link_destroy(srv); }