mirror of
https://projects.vdr-developer.org/git/vdr-plugin-streamdev.git
synced 2023-10-10 17:16:51 +00:00
writer must not spend too much time waiting in select() without checking
if the thread has been cancelled. Delayed the streamdev main thread for up to 3 seconds. As the command timeou of VTP connections is 1.5 seconds, one hanging connection could have caused VTP connections to die.
This commit is contained in:
@@ -45,6 +45,7 @@ void cStreamdevWriter::Action(void)
|
||||
int max = 0;
|
||||
uchar *block = NULL;
|
||||
int count, offset = 0;
|
||||
int timeout = 0;
|
||||
|
||||
#if APIVERSNUM >= 10705
|
||||
SetPriority(-3);
|
||||
@@ -58,10 +59,13 @@ void cStreamdevWriter::Action(void)
|
||||
}
|
||||
|
||||
if (block != NULL) {
|
||||
if (sel.Select(15000) == -1) {
|
||||
if (sel.Select(600) == -1) {
|
||||
if (errno == ETIMEDOUT && timeout++ < 20)
|
||||
continue; // still Running()?
|
||||
esyslog("ERROR: streamdev-server: couldn't send data: %m");
|
||||
break;
|
||||
}
|
||||
timeout = 0;
|
||||
|
||||
if (sel.CanWrite(*m_Socket)) {
|
||||
int written;
|
||||
|
Reference in New Issue
Block a user