From b8fde4d3fe81b8af291de75f12f08be3f308d139 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 26 Mar 2025 10:48:25 -0400 Subject: [PATCH] MT#62181 udp_trsp: break out of blocking recv() On shutdown, call shutdown() in the socket, so that a thread blocked in recv() wakes up and gets a chance to exit cleanly. Change-Id: I24b1b7c608ec1307019b424becef31e8db02e7bb --- core/sip/udp_trsp.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/sip/udp_trsp.cpp b/core/sip/udp_trsp.cpp index d6bd241c..cd057ac2 100644 --- a/core/sip/udp_trsp.cpp +++ b/core/sip/udp_trsp.cpp @@ -282,7 +282,7 @@ void udp_trsp::run() INFO("Started SIP server UDP transport on %s:%i\n", sock->get_ip(),sock->get_port()); - while(true){ + while (!stop_requested()){ //DBG("before recvmsg (%s:%i)\n",sock->get_ip(),sock->get_port()); @@ -360,7 +360,9 @@ void udp_trsp::run() /** @see AmThread */ void udp_trsp::on_stop() { - + // wake up thread blocked in recv() + if (sock->get_sd() != -1) + shutdown(sock->get_sd(), SHUT_RD); }