void* createClientNodeThread(void *pArg) { int sent = 0; ClientNodeArgument *pNodeArg = (ClientNodeArgument *)pArg; char logFileName[LOG_FILE_NAME_LENGTH]; char dirPath[LOG_FILE_NAME_LENGTH]; memset(dirPath, 0, LOG_FILE_NAME_LENGTH); sprintf(dirPath, "%s/%s", (char *)LOCK_DIR, pNodeArg->clientName); memset(logFileName, 0, LOG_FILE_NAME_LENGTH); // Send IP string sent = NodeNetwork::sendToSocket(pNodeArg->sock, pNodeArg->clientName, NODE_NAME_LENGTH); if (sent <= 0) { delete pNodeArg; return NULL; } // Receive Private IP_Public IP int tempLength = NODE_NAME_LENGTH + 1 + strlen(NBUS_PACKET_START_CODE); char tempBuffer[tempLength]; sent = NodeNetwork::receiveFromSocket(pNodeArg->sock, tempBuffer, tempLength-1); if (strncmp(NBUS_PACKET_START_CODE, tempBuffer, strlen(NBUS_PACKET_START_CODE))) { LOGE("Invalid Client Accepted"); delete pNodeArg; return NULL; } //sent = NodeNetwork::receiveFromSocket(pNodeArg->sock, pNodeArg->clientName, NODE_NAME_LENGTH); if (sent <= 0) { delete pNodeArg; return NULL; } strncpy(pNodeArg->clientName, tempBuffer + strlen(NBUS_PACKET_START_CODE), NODE_NAME_LENGTH); snprintf(logFileName, NODE_NAME_LENGTH, "%s", pNodeArg->clientName); LOGI("New Client Node Accepted: %s", pNodeArg->clientName); ClientNode* pClientNode; pClientNode = new ClientNode(pNodeArg->sock, pNodeArg->clientName, pNodeArg->pOwner); if (pClientNode->getGID() == 0) { pClientNode->setGID(pNodeArg->gid); } pClientNode->prepare(logFileName); unlink(dirPath); delete pNodeArg; return NULL; }