Add an E_RESOURCE_UNAVAILABLE in IPC
[platform/framework/native/appfw.git] / src / server / io / FIo_IpcServer.cpp
index e2da083..6b5f53c 100644 (file)
@@ -726,8 +726,11 @@ _IpcServer::SendResponse(int client, IPC::Message* pMessage)
                ret = g_io_channel_write_chars(pClientInfo->pReverseChannel, (char*) pData, remain, &written, &pGError);
                if (ret != G_IO_STATUS_NORMAL)
                {
-                       SysLog(NID_IO, "Failed to send a response: %d", ret);
-                       SysTryCatch(NID_IO, ret != G_IO_STATUS_ERROR, , E_SYSTEM, "[E_SYSTEM] Error occurred during writing message to socket.");
+                       SysTryCatch(NID_IO, ret != G_IO_STATUS_AGAIN, , E_RESOURCE_UNAVAILABLE, "[E_RESOURCE_UNAVAILABLE] The socket buffer is full.");
+
+                       SysLogException(NID_IO, E_SYSTEM, "[E_SYSTEM] Failed to send a request: %d, %s", errno, strerror(errno));
+                       delete pMessage;
+                       return E_SYSTEM;
                }
 
                remain -= written;
@@ -773,8 +776,10 @@ _IpcServer::SendResponse(int client, const IPC::Message& message)
                ret = g_io_channel_write_chars(pClientInfo->pReverseChannel, (char*) pData, remain, &written, &pGError);
                if (ret != G_IO_STATUS_NORMAL)
                {
-                       SysLog(NID_IO, "Failed to send a response: %d", ret);
-                       SysTryCatch(NID_IO, ret != G_IO_STATUS_ERROR, , E_SYSTEM, "[E_SYSTEM] Error occurred during writing message to socket.");
+                       SysTryCatch(NID_IO, ret != G_IO_STATUS_AGAIN, , E_RESOURCE_UNAVAILABLE, "[E_RESOURCE_UNAVAILABLE] The socket buffer is full.");
+
+                       SysLogException(NID_IO, E_SYSTEM, "[E_SYSTEM] Failed to send a request: %d, %s", errno, strerror(errno));
+                       return E_SYSTEM;
                }
 
                remain -= written;