Ticket #8526: mainserver_slave_disconnect_deadlock.patch
| File mainserver_slave_disconnect_deadlock.patch, 1.7 KB (added by , 16 years ago) |
|---|
-
programs/mythbackend/mainserver.cpp
5132 5132 } 5133 5133 else if (sock == socket) 5134 5134 { 5135 list<uint> disconnectedSlaves; 5136 bool needsReschedule = false; 5137 5135 5138 if (ismaster && pbs->isSlaveBackend()) 5136 5139 { 5137 5140 VERBOSE(VB_IMPORTANT,QString("Slave backend: %1 no longer connected") … … 5148 5151 isFallingAsleep = false; 5149 5152 5150 5153 elink->SetSocket(NULL); 5151 if (m_sched) 5152 m_sched->SlaveDisconnected(elink->GetCardID()); 5154 if (m_sched) disconnectedSlaves.push_back(elink->GetCardID()); 5153 5155 } 5154 5156 } 5155 5157 if (m_sched && !isFallingAsleep) 5156 m_sched->Reschedule(0);5158 needsReschedule = true; 5157 5159 5158 5160 QString message = QString("LOCAL_SLAVE_BACKEND_OFFLINE %1") 5159 5161 .arg(pbs->getHostname()); … … 5207 5209 VERBOSE(VB_IMPORTANT, "Playback sock still exists?"); 5208 5210 5209 5211 sockListLock.unlock(); 5212 for (list<uint>::iterator p = disconnectedSlaves.begin() ; 5213 p != disconnectedSlaves.end() ; p++) { 5214 if (m_sched) m_sched->SlaveDisconnected(*p); 5215 } 5210 5216 5217 if (m_sched && needsReschedule) 5218 m_sched->Reschedule(0); 5219 5211 5220 pbs->DownRef(); 5212 5221 return; 5213 5222 }
