diff --git a/mythtv/libs/libmythbase/mythcorecontext.cpp b/mythtv/libs/libmythbase/mythcorecontext.cpp
index f267853..873db89 100644
a
|
b
|
bool MythCoreContext::SetupCommandSocket(MythSocket *serverSock, |
286 | 286 | return true; |
287 | 287 | } |
288 | 288 | |
| 289 | // Connects to master server safely (i.e. by taking m_sockLock) |
| 290 | bool MythCoreContext::SafeConnectToMasterServer(bool openEventSocket) |
| 291 | { |
| 292 | QMutexLocker locker(&d->m_sockLock); |
| 293 | if (!d->m_serverSock) |
| 294 | { |
| 295 | bool blockingClient = GetNumSetting("idleTimeoutSecs",0) > 0; |
| 296 | ConnectToMasterServer(blockingClient, openEventSocket); |
| 297 | } |
| 298 | } |
| 299 | |
289 | 300 | // Assumes that either m_sockLock is held, or the app is still single |
290 | 301 | // threaded (i.e. during startup). |
291 | 302 | bool MythCoreContext::ConnectToMasterServer(bool blockingClient, |
diff --git a/mythtv/libs/libmythbase/mythcorecontext.h b/mythtv/libs/libmythbase/mythcorecontext.h
index af3401a..0bd98ce 100644
a
|
b
|
class MBASE_PUBLIC MythCoreContext : public QObject, public MythObservable, publ |
59 | 59 | void SetEventSocket(MythSocket *eventSock); |
60 | 60 | void SetScheduler(MythScheduler *sched); |
61 | 61 | |
| 62 | bool SafeConnectToMasterServer(bool openEventSocket = true); |
62 | 63 | bool ConnectToMasterServer(bool blockingClient = true, |
63 | 64 | bool openEventSocket = true); |
64 | 65 | |
diff --git a/mythtv/programs/mythfrontend/backendconnectionmanager.cpp b/mythtv/programs/mythfrontend/backendconnectionmanager.cpp
index 5843e48..8545912 100644
a
|
b
|
class Reconnect : public QRunnable |
25 | 25 | |
26 | 26 | virtual void run(void) |
27 | 27 | { |
28 | | if (gCoreContext->GetMasterHostPrefix().isEmpty()) |
| 28 | if (gCoreContext->SafeConnectToMasterServer()) |
29 | 29 | gCoreContext->dispatch(MythEvent(QString("RECONNECT_FAILURE"))); |
30 | 30 | else |
31 | 31 | gCoreContext->dispatch(MythEvent(QString("RECONNECT_SUCCESS"))); |