summaryrefslogtreecommitdiff
path: root/server/streamer.c
diff options
context:
space:
mode:
authorschmirl <schmirl>2007-04-02 10:32:34 +0000
committerschmirl <schmirl>2007-04-02 10:32:34 +0000
commit525574f9b01275aaff3e1c923cc91404365d501e (patch)
tree0533e2aaecdd3e7a1fe26176d12895f9bd054bc0 /server/streamer.c
parentcd7d4e3588af2cc36c8366fc8d65d0627a372c32 (diff)
downloadvdr-plugin-streamdev-525574f9b01275aaff3e1c923cc91404365d501e.tar.gz
vdr-plugin-streamdev-525574f9b01275aaff3e1c923cc91404365d501e.tar.bz2
Close connection when client is gone. Fixes high CPU load problem (#201)
Modified Files: server/connection.h server/connectionHTTP.h server/connectionVTP.h server/server.c server/streamer.c server/streamer.h tools/select.c tools/select.h tools/source.c
Diffstat (limited to 'server/streamer.c')
-rw-r--r--server/streamer.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/server/streamer.c b/server/streamer.c
index 582fc6a..63d2f60 100644
--- a/server/streamer.c
+++ b/server/streamer.c
@@ -1,5 +1,5 @@
/*
- * $Id: streamer.c,v 1.14 2005/05/09 20:22:29 lordjaxom Exp $
+ * $Id: streamer.c,v 1.15 2007/04/02 10:32:34 schmirl Exp $
*/
#include <vdr/ringbuffer.h>
@@ -40,6 +40,9 @@ void cStreamdevWriter::Action(void)
uchar *block = NULL;
int count, offset = 0;
m_Active = true;
+
+ sel.Clear();
+ sel.Add(*m_Socket, true);
while (m_Active) {
if (block == NULL) {
block = m_Streamer->Get(count);
@@ -47,9 +50,7 @@ void cStreamdevWriter::Action(void)
}
if (block != NULL) {
- sel.Clear();
- sel.Add(*m_Socket, true);
- if (sel.Select(500) == -1) {
+ if (sel.Select(15000) == -1) {
esyslog("ERROR: streamdev-server: couldn't send data: %m");
break;
}