summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorphintuka <phintuka>2006-12-07 15:18:46 +0000
committerphintuka <phintuka>2006-12-07 15:18:46 +0000
commitdc8ee131ed9b2c0332417ae8e4b43f50d3302014 (patch)
treeccb601c62673c500b9cc1e7969b489ec877f4e1f
parentb3dbfccc911a0d1a9faf7f4a3affd7b7d55fcf49 (diff)
downloadxineliboutput-dc8ee131ed9b2c0332417ae8e4b43f50d3302014.tar.gz
xineliboutput-dc8ee131ed9b2c0332417ae8e4b43f50d3302014.tar.bz2
Fixed control channel disconnection detection
-rw-r--r--frontend_svr.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/frontend_svr.c b/frontend_svr.c
index b9412c19..6561eed8 100644
--- a/frontend_svr.c
+++ b/frontend_svr.c
@@ -4,7 +4,7 @@
* See the main source file 'xineliboutput.c' for copyright information and
* how to reach the author.
*
- * $Id: frontend_svr.c,v 1.27 2006-11-03 20:23:14 phintuka Exp $
+ * $Id: frontend_svr.c,v 1.28 2006-12-07 15:18:46 phintuka Exp $
*
*/
@@ -1242,7 +1242,8 @@ void cXinelibServer::Handle_Control(int cli, const char *cmd)
void cXinelibServer::Read_Control(int cli)
{
- while(read(fd_control[cli], &m_CtrlBuf[ cli ][ m_CtrlBufPos[cli] ], 1) == 1) {
+ int n;
+ while((n = read(fd_control[cli], &m_CtrlBuf[ cli ][ m_CtrlBufPos[cli] ], 1)) == 1) {
++m_CtrlBufPos[cli];
@@ -1266,6 +1267,10 @@ void cXinelibServer::Read_Control(int cli)
m_CtrlBufPos[cli] = 0;
}
}
+ if (n == 0) {
+ LOGMSG("Client connection %d closed", cli);
+ CloseConnection(cli);
+ }
}
void cXinelibServer::Handle_ClientConnected(int fd)