Advertisement
Guest User

Added-SafeConnectToMasterServer2.diff

a guest
Jan 20th, 2013
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 2.29 KB | None | 0 0
  1. diff --git a/mythtv/libs/libmythbase/mythcorecontext.cpp b/mythtv/libs/libmythbase/mythcorecontext.cpp
  2. index bb2cf66..423f8a2 100644
  3. --- a/mythtv/libs/libmythbase/mythcorecontext.cpp
  4. +++ b/mythtv/libs/libmythbase/mythcorecontext.cpp
  5. @@ -293,6 +293,21 @@ bool MythCoreContext::SetupCommandSocket(MythSocket *serverSock,
  6.      return true;
  7.  }
  8.  
  9. +// Connects to master server safely (i.e. by taking m_sockLock)
  10. +bool MythCoreContext::SafeConnectToMasterServer(bool openEventSocket)
  11. +{
  12. +    QMutexLocker locker(&d->m_sockLock);
  13. +    bool success = true;
  14. +
  15. +    if (!d->m_serverSock)
  16. +    {
  17. +        bool blockingClient = GetNumSetting("idleTimeoutSecs",0) > 0;
  18. +        success = ConnectToMasterServer(blockingClient, openEventSocket);
  19. +    }
  20. +
  21. +    return success;
  22. +}
  23. +
  24.  // Assumes that either m_sockLock is held, or the app is still single
  25.  // threaded (i.e. during startup).
  26.  bool MythCoreContext::ConnectToMasterServer(bool blockingClient,
  27. diff --git a/mythtv/libs/libmythbase/mythcorecontext.h b/mythtv/libs/libmythbase/mythcorecontext.h
  28. index 76e8eeb..7317783 100644
  29. --- a/mythtv/libs/libmythbase/mythcorecontext.h
  30. +++ b/mythtv/libs/libmythbase/mythcorecontext.h
  31. @@ -60,6 +60,7 @@ class MBASE_PUBLIC MythCoreContext : public QObject, public MythObservable, publ
  32.      void SetEventSocket(MythSocket *eventSock);
  33.      void SetScheduler(MythScheduler *sched);
  34.  
  35. +    bool SafeConnectToMasterServer(bool openEventSocket = true);
  36.      bool ConnectToMasterServer(bool blockingClient = true,
  37.                                 bool openEventSocket = true);
  38.  
  39. diff --git a/mythtv/programs/mythfrontend/backendconnectionmanager.cpp b/mythtv/programs/mythfrontend/backendconnectionmanager.cpp
  40. index 17f908a..957dc86 100644
  41. --- a/mythtv/programs/mythfrontend/backendconnectionmanager.cpp
  42. +++ b/mythtv/programs/mythfrontend/backendconnectionmanager.cpp
  43. @@ -25,8 +25,7 @@ class Reconnect : public QRunnable
  44.  
  45.      virtual void run(void)
  46.      {
  47. -        // Note: GetMasterHostPrefix() implicitly reconnects the sockets
  48. -        if (gCoreContext->GetMasterHostPrefix().isEmpty())
  49. +        if (!gCoreContext->SafeConnectToMasterServer())
  50.              gCoreContext->dispatch(MythEvent(QString("RECONNECT_FAILURE")));
  51.          else
  52.              gCoreContext->dispatch(MythEvent(QString("RECONNECT_SUCCESS")));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement