void SslServerConnection::slotStartRead()
{
    //
    // Read the block until the complete block is avaiable
    //

    Debug::log (QLatin1String("Start reading"));

    this->blockSize = 0;
    QDataStream in(socket);
    in.setVersion(QDataStream::Qt_4_6);

    if (blockSize == 0) {
        if ((quint32) socket->bytesAvailable() < sizeof(qint64)) {
            return;
        }
        in >> blockSize;
    }

    if (socket->bytesAvailable() < blockSize) {
        return;
    }

    QString command("");
    QString params("");

    in >> command;
    in >> params;


    //
    // Ab hier kann man munter drauf los mit den Daten ;)
    //

    // Den Befehl auswerten
    if (command.isEmpty()) {
        // Kein Befehl keine Aktion
        return;
    }

    //
    Debug::log(QLatin1String("Command: ") + command);
    Debug::log(QLatin1String("Params: ") + params);
    //

    command = command.trimmed().toUpper();
    if (command == QLatin1String("OPEN")) {
        //
        // Öffnet eine Verbindung
        //

        // Hat die Parameterliste die richtige Länge
        QStringList fields (params.split(";"));
        if (fields.size() == 4) {
            // 0: ID; 1: Config Path; 2: Interact
            // Ist der Eintrag schon in der Liste
            int configId (fields.at(0).toInt());
            OpenVpn *item = this->foundItemInList(configId);
            Q_ASSERT(item);

            if (!item) {
                Debug::log(QLatin1String("Open: No valid item. Build new one"));
            } else {
                // Objekt ist schon in der Liste, nicht gut = Fehler
                this->removeItemFromList(fields.at(0).toInt());
                Debug::error(QLatin1String("Open: Object is already in list. Id: ") + fields.at(0));
                //SrvCLI::instance()->send(fields.at(0) + QLatin1String(";") + QLatin1String("Object is already in list."), QLatin1String("ERROR"));
                Debug::log(QLatin1String("Remove item from list: Id: ") + fields.at(0));
                Sleep(150);
            }

            // Alls ok, wir bauen us ein neues Objekt
            OpenVpn *sslVpn = new OpenVpn ();
            // Nun die Parameter setzen
            QString configPath = fields.at(1).left(fields.at(1).lastIndexOf("/"));
            QString configName = fields.at(1).right(fields.at(1).size() - fields.at(1).lastIndexOf("/") - 1);
            configName = configName.left(configName.size() - 5);
            sslVpn->setConfigPath(configPath);
            sslVpn->setConfigName(configName);            
            sslVpn->setUseInteract(fields.at(2));
            sslVpn->setProxyString(fields.at(3));
            sslVpn->setId(configId);

            QObject::connect(sslVpn, SIGNAL(foobar(int)), this, SLOT(recDig(int)));

            // Noch ein paar Signale binden
            //
            // Das Objekt hat sich zum löschen markiert
            QObject::connect(sslVpn, SIGNAL(removeItemFromList(int)), this, SLOT(removeItemFromList(int)));
            //
            // Nachrichten aus dem Objekt senden
            QObject::connect(sslVpn, SIGNAL(sendMessage(QString,QString)), SrvCLI::instance(), SLOT(send(QString,QString)));

            Debug::log(QLatin1String("Add item to list"));
            // Nun das Objekt an die Liste anfügen
            vpnList.append(qMakePair(configId, sslVpn));
            //
            // Nun das OpenVpn verbinden
            Debug::log(QLatin1String("Start connection"));

            SrvCLI::instance()->send(QString("%2;Try to start OpenVPN connection %1").arg(configName).arg(configId), QLatin1String("LOG"));
            // Ohne Verzögerung den connect aufrufen
            sslVpn->connectToVpn();
            //
        }