Ejemplo n.º 1
0
void ChooserDlg::slotReadPipe()
{
	int id;
	QString nam, sts;

	int cmd = GRecvInt();
	switch (cmd) {
	case G_Ch_AddHost:
	case G_Ch_ChangeHost:
		id = GRecvInt();
		nam = recvStr();
		sts = recvStr();
		GRecvInt(); /* swallow willing for now */
		if (cmd == G_Ch_AddHost)
			host_view->insertItem(
				new ChooserListViewItem( host_view, id, nam, sts ) );
		else {
			QListViewItem *itm = findItem( id );
			itm->setText( 0, nam );
			itm->setText( 1, sts );
		}
		break;
	case G_Ch_RemoveHost:
		delete findItem( GRecvInt() );
		break;
	case G_Ch_BadHost:
		KFMsgBox::box( this, QMessageBox::Warning, i18n("Unknown host %1").arg( recvStr() ) );
		break;
	case G_Ch_Exit:
		done( ex_exit );
		break;
	default: /* XXX huuh ...? */
		break;
	}
}
Ejemplo n.º 2
0
Archivo: client.cpp Proyecto: Try/game
int Client::reciever(void *){
  std::vector<char> buffer;
  int recieved;

  while( connected ){
    recieved = recvStr( data->serverSocket, buffer );

    if (recieved == 0){
      onError("Server closed");
      break;
      }else
    if (recieved == -1){
      onError("Recieve error");
      break;
      }

    onRecv(buffer);
    buffer.clear();
    }

#ifdef _WIN32
  closesocket(data->serverSocket);
#else
  close(data->serverSocket);
#endif

  //removeConsoleListener(sender);
  connected = false;
  startClient();
  return 0;
  }
Ejemplo n.º 3
0
bool Connection::receiveArgs()
{
    // Get argc
    recvMsg(&m_argc);
    const uint32_t ARG_MAX = 1024;
    if (m_argc > 0 && m_argc < ARG_MAX)
    {
        // Reserve memory for argv
        m_argv = new const char * [m_argc];
        if (!m_argv)
        {
            Logger::logError("Connection: reserving memory for argv");
            return false;
        }

        // Get argv
        for (uint i = 0; i < m_argc; i++)
        {
            m_argv[i] = recvStr();
            if (!m_argv[i])
            {
                Logger::logError("Connection: receiving argv[%i]", i);
                return false;
            }
        }
    }
    else
    {
        Logger::logError("Connection: invalid number of parameters %d", m_argc);
        return false;
    }

    return true;
}
Ejemplo n.º 4
0
bool Connection::receiveLandscapeSplash()
{
    const char* filename = recvStr();
    if (!filename)
        return false;

    m_landscapeSplashFileName = filename;
    delete [] filename;
    return true;
}
Ejemplo n.º 5
0
bool Connection::receiveExec()
{
    const char* filename = recvStr();
    if (!filename)
        return false;

    m_fileName = filename;
    delete [] filename;
    return true;
}
Ejemplo n.º 6
0
bool Connection::receiveEnv()
{
    // Have some "reasonable" limit for environment variables to protect from
    // malicious data
    const uint32_t MAX_VARS = 1024;

    // Get number of environment variables.
    uint32_t n_vars = 0;
    recvMsg(&n_vars);
    if (n_vars > 0 && n_vars < MAX_VARS)
    {
        // Get environment variables
        for (uint32_t i = 0; i < n_vars; i++)
        {
            const char * var = recvStr();
            if (var == NULL)
            {
                Logger::logError("Connection: receiving environ[%i]", i);
                return false;
            }

            // In case of error, just warn and try to continue, as the other side is
            // going to keep sending the reset of the message.
            // String pointed to by var shall become part of the environment, so altering
            // the string shall change the environment, don't free it
            if (putenv_sanitize(var))
            {
                if (putenv_wrapper(const_cast<char *>(var)) != 0)
                {
                    Logger::logWarning("Connection: putenv failed");
                }
            }
            else
            {
                delete [] var;
                var = NULL;
                Logger::logWarning("Connection: invalid environment data");
            }
        }
    }
    else
    {
        Logger::logError("Connection: invalid environment variable count %d", n_vars);
        return false;
    }

    return true;
}
Ejemplo n.º 7
0
string Connection::receiveAppName()
{
    uint32_t msg = 0;

    // Get the action.
    recvMsg(&msg);
    if (msg != INVOKER_MSG_NAME)
    {
        Logger::logError("Connection: receiving invalid action (%08x)", msg);
        return string();
    }

    const char* name = recvStr();
    if (!name)
    {
        Logger::logError("Connection: receiving application name");
        return string();
    }

    string appName(name);
    delete [] name;
    return appName;
}