SysTryCatch(NID_IO, ret == 0, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Failed to change permission of a socket(%d, %s): %s", serverSocket,
socketName.c_str(), strerror(errno));
- ret = listen(serverSocket, 15);
+ ret = listen(serverSocket, 128);
SysTryCatch(NID_IO, ret == 0, r = E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Failed to listen a socket(%d, %s): %s", serverSocket,
socketName.c_str(), strerror(errno));
struct HelloMessage
{
int pid;
- bool reverse; // true if the connection is for reverse message
+ int reverse; // if the connection is for reverse message
};
gboolean
_ChannelInfo* pChannelInfo = null;
GSource* pGSource = null;
GIOChannel* pChannel = null;
+ ssize_t readBytes = 0;
int server = -1;
int client = -1;
client = accept(server, (struct sockaddr*) &clientAddress, &clientLen);
SysTryCatch(NID_IO, client != -1, , E_SYSTEM, "[E_SYSTEM] Accept failed.");
- read(client, &helloMessage, sizeof(helloMessage));
+ readBytes = read(client, &helloMessage, sizeof(helloMessage));
+ SysTryCatch(NID_IO, readBytes >= 0, , E_SYSTEM, "[E_SYSTEM] Failed to receive hello message (%d, %s).",
+ errno, strerror(errno));
pChannel = g_io_channel_unix_new(client);
SysTryCatch(NID_IO, pChannel != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Not enough memory.");
pIpcServer->__pCurrentClientInfo = null;
}
- if (helloMessage.reverse)
+ if (helloMessage.reverse != 0)
{
pClientInfo->pReverseChannel = pChannel;
}
// empty statement;
}
+ delete msg;
+
return true;
}
char* pData = null;
GError* pGError = null;
_ClientInfo* pClientInfo = null;
+ int ret = 0;
SysTryReturn(NID_IO, client >= 0 && pMessage != null, false, E_INVALID_ARG,
"[E_INVALID_ARG] pMessage(0x%x) is null or clinet(%d) < 0", pMessage,
while (remain > 0)
{
pGError = NULL;
- g_io_channel_write_chars(pClientInfo->pReverseChannel, (char*) pData, remain, &written, &pGError);
- SysTryCatch(NID_IO, pGError == null, , E_SYSTEM, "[E_SYSTEM] Error occurred during writing message to socket.");
+ 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.");
+ }
remain -= written;
pData += written;
char* pData = null;
GError* pGError = null;
_ClientInfo* pClientInfo = null;
+ int ret = 0;
SysTryReturn(NID_IO, client >= 0, false, E_INVALID_ARG, "[E_INVALID_ARG] clinet(%d) < 0", client);
SysTryCatch(NID_IO, !message.is_sync(), r = E_INVALID_ARG, E_INVALID_ARG, "[E_INVALID_ARG] Can't send sync. messagee.");
while (remain > 0)
{
pGError = NULL;
- g_io_channel_write_chars(pClientInfo->pReverseChannel, (char*) pData, remain, &written, &pGError);
- SysTryCatch(NID_IO, pGError == null, , E_SYSTEM, "[E_SYSTEM] Error occurred during writing message to socket.");
+ 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.");
+ }
remain -= written;
pData += written;