diff -ru xineliboutput-1.0.0pre6-orig/frontend_svr.c xineliboutput-1.0.0pre6/frontend_svr.c
--- xineliboutput-1.0.0pre6-orig/frontend_svr.c	2006-12-03 15:43:32.601759070 +0100
+++ xineliboutput-1.0.0pre6/frontend_svr.c	2006-12-03 15:45:25.524741697 +0100
@@ -1240,7 +1240,8 @@
 
 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];
 
@@ -1264,6 +1265,10 @@
       m_CtrlBufPos[cli] = 0;
     }
   }
+  if (n == 0) {
+    LOGMSG("Client connection %d closed", cli);
+    CloseConnection(cli);
+  }
 }
 
 void cXinelibServer::Handle_ClientConnected(int fd)
