From 4e996a57263f556f143eaa89996abd2130f0d109 Mon Sep 17 00:00:00 2001 From: rjongbloed Date: Thu, 29 Mar 2007 07:07:23 +0000 Subject: [PATCH] Fixed deadlock in UDP multi-interface connect algorithm, and getting a SIP retry before completion. --- src/opal/transports.cxx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/opal/transports.cxx b/src/opal/transports.cxx index 6c3af5f9..3210fb1f 100644 --- a/src/opal/transports.cxx +++ b/src/opal/transports.cxx @@ -29,6 +29,9 @@ * http://www.jfcom.mil/about/abt_j9.htm * * $Log$ + * Revision 2.75 2007/03/29 07:07:23 rjongbloed + * Fixed deadlock in UDP multi-interface connect algorithm, and getting a SIP retry before completion. + * * Revision 2.74 2007/02/19 08:35:02 csoutheren * Add better way to fliter interfaces * @@ -1961,10 +1964,6 @@ void OpalTransportUDP::EndConnect(const OpalTransportAddress & theLocalAddress) BOOL OpalTransportUDP::SetLocalAddress(const OpalTransportAddress & newLocalAddress) { - PReadWaitAndSignal m(channelPointerMutex); - if (connectSockets.IsEmpty()) - return OpalTransportIP::SetLocalAddress(newLocalAddress); - if (!IsCompatibleTransport(newLocalAddress)) return FALSE; @@ -1972,6 +1971,9 @@ BOOL OpalTransportUDP::SetLocalAddress(const OpalTransportAddress & newLocalAddr return FALSE; PWaitAndSignal lock(connectSocketsMutex); + if (connectSockets.IsEmpty()) + return OpalTransportIP::SetLocalAddress(newLocalAddress); + for (PINDEX i = 0; i < connectSockets.GetSize(); i++) { PUDPSocket * socket = (PUDPSocket *)connectSockets.GetAt(i); PIPSocket::Address ip; -- 2.11.4.GIT