summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY2
-rw-r--r--tools/socket.c4
3 files changed, 7 insertions, 0 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index e648c3b..263d3e7 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -112,6 +112,7 @@ Jori Hamalainen
owagner
for pointing out a problem with the encrypted channel switching fix
+ for suggesting use of SO_KEEPALIVE socket option to detect dead sockets
Joachim König-Baltes
for fixing Min/MaxPriority parsing
diff --git a/HISTORY b/HISTORY
index 7ba4418..e022f79 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,6 +1,8 @@
VDR Plugin 'streamdev' Revision History
---------------------------------------
+- use SO_KEEPALIVE option on all sockets do detect dead sockets (thanks to
+ owagner)
- enable PatFilter for externremux, so VLC can be used as remuxer or client
- fixed insecure format strings in LSTX handlers (thanks to Anssi Hannula)
- updated Finish translation (thanks to Rolf Ahrenberg)
diff --git a/tools/socket.c b/tools/socket.c
index 3523c29..5dde45a 100644
--- a/tools/socket.c
+++ b/tools/socket.c
@@ -124,6 +124,10 @@ bool cTBSocket::Accept(const cTBSocket &Listener) {
if (::getsockname(socket, (struct sockaddr*)&m_LocalAddr, &addrlen) == -1)
return false;
+ int sol=1;
+ // Ignore possible errors here, proceed as usual
+ ::setsockopt(socket, SOL_SOCKET, SO_KEEPALIVE, &sol, sizeof(sol));
+
if (!cTBSource::Open(socket))
return false;