diff --git a/fairmq/FairMQChannel.cxx b/fairmq/FairMQChannel.cxx index 391cae41..82f3b2ec 100644 --- a/fairmq/FairMQChannel.cxx +++ b/fairmq/FairMQChannel.cxx @@ -133,26 +133,31 @@ FairMQChannel::FairMQChannel(const FairMQChannel& chan, const string& newName) FairMQChannel& FairMQChannel::operator=(const FairMQChannel& chan) { - fTransportFactory = nullptr; - fTransportType = chan.fTransportType; - fSocket = nullptr; - fName = chan.fName; - fType = chan.fType; - fMethod = chan.fMethod; - fAddress = chan.fAddress; - fSndBufSize = chan.fSndBufSize; - fRcvBufSize = chan.fRcvBufSize; - fSndKernelSize = chan.fSndKernelSize; - fRcvKernelSize = chan.fRcvKernelSize; - fLinger = chan.fLinger; - fRateLogging = chan.fRateLogging; - fPortRangeMin = chan.fPortRangeMin; - fPortRangeMax = chan.fPortRangeMax; - fAutoBind = chan.fAutoBind; - fIsValid = false; - fMultipart = chan.fMultipart; - fModified = chan.fModified; - fReset = false; + { + lock_guard lock1(fMtx); + lock_guard lock2(chan.fMtx); + + fTransportFactory = nullptr; + fTransportType = chan.fTransportType; + fSocket = nullptr; + fName = chan.fName; + fType = chan.fType; + fMethod = chan.fMethod; + fAddress = chan.fAddress; + fSndBufSize = chan.fSndBufSize; + fRcvBufSize = chan.fRcvBufSize; + fSndKernelSize = chan.fSndKernelSize; + fRcvKernelSize = chan.fRcvKernelSize; + fLinger = chan.fLinger; + fRateLogging = chan.fRateLogging; + fPortRangeMin = chan.fPortRangeMin; + fPortRangeMax = chan.fPortRangeMax; + fAutoBind = chan.fAutoBind; + fIsValid = false; + fMultipart = chan.fMultipart; + fModified = chan.fModified; + fReset = false; + } return *this; }