diff options
author | Frank Schmirler <vdr@schmirler.de> | 2011-03-07 23:06:27 +0100 |
---|---|---|
committer | Frank Schmirler <vdr@schmirler.de> | 2011-03-07 23:06:27 +0100 |
commit | 87de8aeff6a3d600e7c1d9ed910bc40b98ab969e (patch) | |
tree | 3331bcd0608de5e0903cde00cfb23064e27b380f /server/server.c | |
parent | 79fe54e476fcdb7a770bffe6d4754f246db289d3 (diff) | |
parent | 74ce99971c59d960babf163c191d6014a2a32c81 (diff) | |
download | vdr-plugin-streamdev-87de8aeff6a3d600e7c1d9ed910bc40b98ab969e.tar.gz vdr-plugin-streamdev-87de8aeff6a3d600e7c1d9ed910bc40b98ab969e.tar.bz2 |
Merge branch 'switch_livetv'
Conflicts:
HISTORY
server/connection.c
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(); +} |