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 | 4b793ded6b50960ceab7f6904db84b404f160624 (patch) | |
tree | fc7a92c2f3ca24c21891ec54f1ebb5785fc56487 /server/server.c | |
parent | ef3ea13d1ff0a531d66d9314949fe850bd73ae5a (diff) | |
parent | 87de8aeff6a3d600e7c1d9ed910bc40b98ab969e (diff) | |
download | vdr-plugin-streamdev-4b793ded6b50960ceab7f6904db84b404f160624.tar.gz vdr-plugin-streamdev-4b793ded6b50960ceab7f6904db84b404f160624.tar.bz2 |
Merge branch 'master' of projects.vdr-developer.org:vdr-plugin-streamdevdead
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(); +} |