diff options
author | Frank Schmirler <vdr@schmirler.de> | 2011-03-18 15:56:34 +0100 |
---|---|---|
committer | Frank Schmirler <vdr@schmirler.de> | 2011-03-18 15:56:34 +0100 |
commit | 17bb6390f9883a1f029ffe4caaa4cc130fcb8b7a (patch) | |
tree | fc7a92c2f3ca24c21891ec54f1ebb5785fc56487 /server/server.c | |
parent | 58a4f3dbe5888d6da81b401154a8b4c778ff228a (diff) | |
parent | 1a933d6cc9344bd7e7ded82eb775cc0c61ed0ae3 (diff) | |
download | vdr-plugin-streamdev-17bb6390f9883a1f029ffe4caaa4cc130fcb8b7a.tar.gz vdr-plugin-streamdev-17bb6390f9883a1f029ffe4caaa4cc130fcb8b7a.tar.bz2 |
Merge branch 'master' of projects.vdr-developer.org:vdr-plugin-streamdev
Conflicts:
HISTORY
Diffstat (limited to 'server/server.c')
-rw-r--r-- | server/server.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/server/server.c b/server/server.c index 1bdb20a..c7fa96f 100644 --- a/server/server.c +++ b/server/server.c @@ -121,7 +121,9 @@ void cStreamdevServer::Action(void) cServerConnection *client = c->Accept(); if (!client) continue; + Lock(); m_Clients.Add(client); + Unlock(); if (m_Clients.Count() > StreamdevServerSetup.MaxClients) { esyslog("streamdev: too many clients, rejecting %s:%d", @@ -153,17 +155,21 @@ void cStreamdevServer::Action(void) isyslog("streamdev: closing streamdev connection to %s:%d", s->RemoteIp().c_str(), s->RemotePort()); s->Close(); + Lock(); m_Clients.Del(s); + Unlock(); } s = next; } } + Lock(); while (m_Clients.Count() > 0) { cServerConnection *s = m_Clients.First(); s->Close(); m_Clients.Del(s); } + Unlock(); while (m_Servers.Count() > 0) { cServerComponent *c = m_Servers.First(); @@ -171,3 +177,10 @@ void cStreamdevServer::Action(void) m_Servers.Del(c); } } + +void cStreamdevServer::MainThreadHook(void) +{ + cThreadLock lock(m_Instance); + for (cServerConnection *s = m_Clients.First(); s; s = m_Clients.Next(s)) + s->MainThreadHook(); +} |