summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorschmirl <schmirl>2006-11-10 11:52:41 +0000
committerschmirl <schmirl>2006-11-10 11:52:41 +0000
commit11f4a0c6e1dc6d47c2867b0e29dd66588e45b232 (patch)
treee9d2e41e17d2779ed996ba46a5d61615a19cf079 /server
parent83dd64f68a77bd01d550ad79d14ea03a8af91f16 (diff)
downloadvdr-plugin-streamdev-11f4a0c6e1dc6d47c2867b0e29dd66588e45b232.tar.gz
vdr-plugin-streamdev-11f4a0c6e1dc6d47c2867b0e29dd66588e45b232.tar.bz2
Use select with timeout and check if streamdev-server has to shutdown
(#135). Thanks to Urig@vdrportal
Diffstat (limited to 'server')
-rw-r--r--server/server.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/server/server.c b/server/server.c
index 6c54451..b00f70d 100644
--- a/server/server.c
+++ b/server/server.c
@@ -1,5 +1,5 @@
/*
- * $Id: server.c,v 1.3 2005/05/09 20:22:29 lordjaxom Exp $
+ * $Id: server.c,v 1.4 2006/11/10 11:52:41 schmirl Exp $
*/
#include "server/server.h"
@@ -91,7 +91,12 @@ void cStreamdevServer::Action(void)
select.Add(s->Socket(), true);
}
- if (select.Select() < 0) {
+ int result;
+ while ((result = select.Select(100)) < 0 && errno == ETIMEDOUT) {
+ if (!m_Active) break;
+ }
+
+ if (result < 0) {
if (m_Active) // no exit was requested while polling
esyslog("fatal error, server exiting: %m");
break;