diff --git a/mythtv/libs/libmythbase/mythcorecontext.cpp b/mythtv/libs/libmythbase/mythcorecontext.cpp
index bb2cf66..423f8a2 100644
a
|
b
|
bool MythCoreContext::SetupCommandSocket(MythSocket *serverSock, |
293 | 293 | return true; |
294 | 294 | } |
295 | 295 | |
| 296 | // Connects to master server safely (i.e. by taking m_sockLock) |
| 297 | bool MythCoreContext::SafeConnectToMasterServer(bool openEventSocket) |
| 298 | { |
| 299 | QMutexLocker locker(&d->m_sockLock); |
| 300 | bool success = true; |
| 301 | |
| 302 | if (!d->m_serverSock) |
| 303 | { |
| 304 | bool blockingClient = GetNumSetting("idleTimeoutSecs",0) > 0; |
| 305 | success = ConnectToMasterServer(blockingClient, openEventSocket); |
| 306 | } |
| 307 | |
| 308 | return success; |
| 309 | } |
| 310 | |
296 | 311 | // Assumes that either m_sockLock is held, or the app is still single |
297 | 312 | // threaded (i.e. during startup). |
298 | 313 | bool MythCoreContext::ConnectToMasterServer(bool blockingClient, |
diff --git a/mythtv/libs/libmythbase/mythcorecontext.h b/mythtv/libs/libmythbase/mythcorecontext.h
index 76e8eeb..7317783 100644
a
|
b
|
class MBASE_PUBLIC MythCoreContext : public QObject, public MythObservable, publ |
60 | 60 | void SetEventSocket(MythSocket *eventSock); |
61 | 61 | void SetScheduler(MythScheduler *sched); |
62 | 62 | |
| 63 | bool SafeConnectToMasterServer(bool openEventSocket = true); |
63 | 64 | bool ConnectToMasterServer(bool blockingClient = true, |
64 | 65 | bool openEventSocket = true); |
65 | 66 | |
diff --git a/mythtv/programs/mythfrontend/backendconnectionmanager.cpp b/mythtv/programs/mythfrontend/backendconnectionmanager.cpp
index 17f908a..957dc86 100644
a
|
b
|
class Reconnect : public QRunnable |
25 | 25 | |
26 | 26 | virtual void run(void) |
27 | 27 | { |
28 | | // Note: GetMasterHostPrefix() implicitly reconnects the sockets |
29 | | if (gCoreContext->GetMasterHostPrefix().isEmpty()) |
| 28 | if (!gCoreContext->SafeConnectToMasterServer()) |
30 | 29 | gCoreContext->dispatch(MythEvent(QString("RECONNECT_FAILURE"))); |
31 | 30 | else |
32 | 31 | gCoreContext->dispatch(MythEvent(QString("RECONNECT_SUCCESS"))); |