Skip to content

Commit

Permalink
Fix some unsafe usage of ConnectToMasterServer(). Fixes #11364
Browse files Browse the repository at this point in the history
  • Loading branch information
stuartm committed Jan 20, 2013
1 parent a9246e9 commit 3d35924
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 8 deletions.
8 changes: 3 additions & 5 deletions mythtv/libs/libmythbase/mythcorecontext.cpp
Expand Up @@ -294,16 +294,14 @@ bool MythCoreContext::SetupCommandSocket(MythSocket *serverSock,
}

// Connects to master server safely (i.e. by taking m_sockLock)
bool MythCoreContext::SafeConnectToMasterServer(bool openEventSocket)
bool MythCoreContext::SafeConnectToMasterServer(bool blockingClient,
bool openEventSocket)
{
QMutexLocker locker(&d->m_sockLock);
bool success = true;

if (!d->m_serverSock)
{
bool blockingClient = GetNumSetting("idleTimeoutSecs",0) > 0;
if (!d->m_serverSock || !d->m_serverSock->IsConnected())
success = ConnectToMasterServer(blockingClient, openEventSocket);
}

return success;
}
Expand Down
3 changes: 2 additions & 1 deletion mythtv/libs/libmythbase/mythcorecontext.h
Expand Up @@ -60,7 +60,8 @@ class MBASE_PUBLIC MythCoreContext : public QObject, public MythObservable, publ
void SetEventSocket(MythSocket *eventSock);
void SetScheduler(MythScheduler *sched);

bool SafeConnectToMasterServer(bool openEventSocket = true);
bool SafeConnectToMasterServer(bool blockingClient = true,
bool openEventSocket = true);
bool ConnectToMasterServer(bool blockingClient = true,
bool openEventSocket = true);

Expand Down
2 changes: 1 addition & 1 deletion mythtv/programs/mythfrontend/idlescreen.cpp
Expand Up @@ -77,7 +77,7 @@ bool IdleScreen::CheckConnectionToServer(void)
bRes = true;
else
{
if (gCoreContext->ConnectToMasterServer(false))
if (gCoreContext->SafeConnectToMasterServer(false))
bRes = true;
}

Expand Down
2 changes: 1 addition & 1 deletion mythtv/programs/mythwelcome/welcomedialog.cpp
Expand Up @@ -573,7 +573,7 @@ bool WelcomeDialog::checkConnectionToServer(void)
bRes = true;
else
{
if (gCoreContext->ConnectToMasterServer(false))
if (gCoreContext->SafeConnectToMasterServer(false))
{
bRes = true;
updateAll();
Expand Down

0 comments on commit 3d35924

Please sign in to comment.