From 8745dd03b3b6f9518aa97071751c118ff9073378 Mon Sep 17 00:00:00 2001 From: mrkraimer Date: Fri, 5 Oct 2018 15:59:59 -0400 Subject: [PATCH] with multithreads callback can occur before create completes --- src/pvaClientChannel.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pvaClientChannel.cpp b/src/pvaClientChannel.cpp index 929c876..16338a2 100644 --- a/src/pvaClientChannel.cpp +++ b/src/pvaClientChannel.cpp @@ -170,6 +170,7 @@ void PvaClientChannel::channelCreated(const Status& status, Channel::shared_poin << endl; } Lock xx(mutex); + this->channel = channel; if(connectState==connected) return; if(connectState!=connectActive) { string message("PvaClientChannel::channelCreated"); @@ -201,11 +202,14 @@ void PvaClientChannel::channelStateChange( bool waitingForConnect = false; if(connectState==connectActive) waitingForConnect = true; if(connectionState!=Channel::CONNECTED) { + Lock xx(mutex); string mess(channelName + " connection state " + Channel::ConnectionStateNames[connectionState]); message(mess,errorMessage); connectState = notConnected; } else { + Lock xx(mutex); + this->channel = channel; connectState = connected; } if(waitingForConnect) {