Ticket #11238: Added-SafeConnectToMasterServer.diff

File Added-SafeConnectToMasterServer.diff, 2.1 KB (added by peper03@…, 11 years ago)

2nd, alternative bugfix

  • mythtv/libs/libmythbase/mythcorecontext.cpp

    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, 
    286286    return true;
    287287}
    288288
     289// Connects to master server safely (i.e. by taking m_sockLock)
     290bool 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
    289300// Assumes that either m_sockLock is held, or the app is still single
    290301// threaded (i.e. during startup).
    291302bool MythCoreContext::ConnectToMasterServer(bool blockingClient,
  • mythtv/libs/libmythbase/mythcorecontext.h

    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 
    5959    void SetEventSocket(MythSocket *eventSock);
    6060    void SetScheduler(MythScheduler *sched);
    6161
     62    bool SafeConnectToMasterServer(bool openEventSocket = true);
    6263    bool ConnectToMasterServer(bool blockingClient = true,
    6364                               bool openEventSocket = true);
    6465
  • mythtv/programs/mythfrontend/backendconnectionmanager.cpp

    diff --git a/mythtv/programs/mythfrontend/backendconnectionmanager.cpp b/mythtv/programs/mythfrontend/backendconnectionmanager.cpp
    index 5843e48..8545912 100644
    a b class Reconnect : public QRunnable 
    2525
    2626    virtual void run(void)
    2727    {
    28         if (gCoreContext->GetMasterHostPrefix().isEmpty())
     28        if (gCoreContext->SafeConnectToMasterServer())
    2929            gCoreContext->dispatch(MythEvent(QString("RECONNECT_FAILURE")));
    3030        else
    3131            gCoreContext->dispatch(MythEvent(QString("RECONNECT_SUCCESS")));