re-init tcp server when encounter EBADF
authorulion <ulion2002@gmail.com>
Mon, 28 Jan 2013 15:43:22 +0000 (23:43 +0800)
committerulion <ulion2002@gmail.com>
Mon, 28 Jan 2013 15:43:22 +0000 (23:43 +0800)
xbmc/network/AirPlayServer.cpp
xbmc/network/TCPServer.cpp

index fd7f755..9ca61f3 100644 (file)
@@ -253,7 +253,15 @@ void CAirPlayServer::Process()
         newconnection.m_socket = accept(m_ServerSocket, &newconnection.m_cliaddr, &newconnection.m_addrlen);
 
         if (newconnection.m_socket == INVALID_SOCKET)
-          CLog::Log(LOGERROR, "AIRPLAY Server: Accept of new connection failed");
+        {
+          CLog::Log(LOGERROR, "AIRPLAY Server: Accept of new connection failed: %d", errno);
+          if (EBADF == errno)
+          {
+            Sleep(1000);
+            Initialize();
+            break;
+          }
+        }
         else
         {
           CLog::Log(LOGINFO, "AIRPLAY Server: New connection added");
index 1a2ab65..7ee73b1 100644 (file)
@@ -182,7 +182,15 @@ void CTCPServer::Process()
           newconnection->m_socket = accept(*it, (sockaddr*)&newconnection->m_cliaddr, &newconnection->m_addrlen);
 
           if (newconnection->m_socket == INVALID_SOCKET)
-            CLog::Log(LOGERROR, "JSONRPC Server: Accept of new connection failed");
+          {
+            CLog::Log(LOGERROR, "JSONRPC Server: Accept of new connection failed: %d", errno);
+            if (EBADF == errno)
+            {
+              Sleep(1000);
+              Initialize();
+              break;
+            }
+          }
           else
           {
             CLog::Log(LOGINFO, "JSONRPC Server: New connection added");