ソースを参照

fix compiler errors

Kolja Strohm 3 年 前
コミット
18fdd1a727
6 ファイル変更855 行追加872 行削除
  1. BIN
      ChatServer/ChatServer
  2. 245 245
      ChatServer/ChatServer.cpp
  3. 6 4
      ChatServer/ChatServer.vcxproj
  4. 526 541
      ChatServer/Datenbank.cpp
  5. 46 50
      ChatServer/Datenbank.h
  6. 32 32
      ChatServer/main.cpp

BIN
ChatServer/ChatServer


+ 245 - 245
ChatServer/ChatServer.cpp

@@ -19,7 +19,7 @@ ChatServer::ChatServer( InitDatei *zIni )
     empfangen = 0;
     gesendet = 0;
     fehler = new Text();
-    ini = zIni->getThis();
+    ini = dynamic_cast<InitDatei *>( zIni->getThis() );
     id = *zIni->zWert( "ServerId" );
     server = new Server();
     aServer = new SSLServer();
@@ -66,13 +66,13 @@ void ChatServer::runn()
         if( end && klient )
         {
             klient->trenne();
-            klient = klient->release();
+            klient = (SSLSKlient *)klient->release();
             Sleep( 1000 );
             return;
         }
         if( !klient )
             continue;
-        CSAKlient * clHandle = new CSAKlient( klient, (ChatServer *)getThis() );
+        CSAKlient *clHandle = new CSAKlient( klient, dynamic_cast<ChatServer *>( getThis() ) );
         clHandle->start();
     }
 }
@@ -86,7 +86,7 @@ void ChatServer::thread()
         if( !klient )
             continue;
         Framework::getThreadRegister()->cleanUpClosedThreads();
-        CSKlient * clHandle = new CSKlient( klient, (ChatServer *)getThis() );
+        CSKlient *clHandle = new CSKlient( klient, dynamic_cast<ChatServer *>( getThis() ) );
         cs.lock();
         klients->set( clHandle, klientAnzahl );
         klientAnzahl++;
@@ -105,13 +105,13 @@ void ChatServer::close()
     cs.lock();
     for( int i = 0; i < klientAnzahl; i++ )
         klients->z( i )->absturz();
-    klients = klients->release();
+    klients = ( RCArray<CSKlient> * )klients->release();
     klientAnzahl = 0;
     cs.unlock();
     ende();
     run = 0;
     end = 1;
-    Klient * klient = new Klient();
+    Klient *klient = new Klient();
     klient->verbinde( aServer->getPort(), "127.0.0.1" );
     Sleep( 500 );
     aServer->trenne();
@@ -261,7 +261,7 @@ bool ChatServer::removeKlient( int klientId )
     return gefunden;
 }
 
-bool ChatServer::removeKlient( CSKlient * zKlient )
+bool ChatServer::removeKlient( CSKlient *zKlient )
 {
     bool gefunden = 0;
     cs.lock();
@@ -290,7 +290,7 @@ void ChatServer::addEmpfangen( int bytes )
     empfangen += bytes;
 }
 
-int ChatServer::getKlientStatus( int klientNummer, CSKlient * zKlient )
+int ChatServer::getKlientStatus( int klientNummer, CSKlient *zKlient )
 {
     bool empf = 0;
     bool send = 0;
@@ -313,7 +313,7 @@ int ChatServer::getKlientStatus( int klientNummer, CSKlient * zKlient )
     return 2;
 }
 
-CSKlient * ChatServer::zSendeKlient( int accountId )
+CSKlient *ChatServer::zSendeKlient( int accountId )
 {
     CSKlient *ret = 0;
     cs.lock();
@@ -363,7 +363,7 @@ char *ChatServer::getLetzterFehler() const
 
 // Inhalt der CSAKlient Klasse aus ChatServer.h
 // Konstruktor 
-CSAKlient::CSAKlient( SSLSKlient * klient, ChatServer * cs )
+CSAKlient::CSAKlient( SSLSKlient *klient, ChatServer *cs )
     : Thread()
 {
     this->klient = klient;
@@ -401,13 +401,13 @@ void CSAKlient::thread()
                 {
                     klient->sende( "\1", 1 );
                     unsigned char nLen = 0;
-                    klient->getNachricht( (char *)& nLen, 1 );
+                    klient->getNachricht( (char *)&nLen, 1 );
                     char *n = new char[ nLen + 1 ];
                     n[ (int)nLen ] = 0;
                     if( nLen )
                         klient->getNachricht( n, nLen );
                     unsigned char pLen = 0;
-                    klient->getNachricht( (char *)& pLen, 1 );
+                    klient->getNachricht( (char *)&pLen, 1 );
                     char *p = new char[ pLen + 1 ];
                     p[ (int)pLen ] = 0;
                     if( pLen )
@@ -503,7 +503,7 @@ void CSAKlient::thread()
                     }
                     else
                         ok = 1;
-                    if( ok &&cs->hatClients() )
+                    if( ok && cs->hatClients() )
                     {
                         errorZuKlient( "Es sind noch Klients Online. Bitte versuche es später erneut." );
                         break;
@@ -599,7 +599,7 @@ void CSAKlient::thread()
                 {
                     klient->sende( "\1", 1 );
                     int maxC = 0;
-                    klient->getNachricht( (char *)& maxC, 4 );
+                    klient->getNachricht( (char *)&maxC, 4 );
                     if( cs->zDB()->adminHatRecht( adminId, Admin_Recht::CSMCChange ) )
                     {
                         if( cs->setMaxKlients( maxC ) )
@@ -621,8 +621,8 @@ void CSAKlient::thread()
                 {
                     klient->sende( "\1", 1 );
                     int klientId = 0;
-                    klient->getNachricht( (char *)& klientId, 4 );
-                    if( klientId &&cs->absturzKlient( klientId ) )
+                    klient->getNachricht( (char *)&klientId, 4 );
+                    if( klientId && cs->absturzKlient( klientId ) )
                         klient->sende( "\1", 1 );
                     else
                         klient->sende( "\0", 1 );
@@ -654,7 +654,7 @@ void CSAKlient::errorZuKlient( const char *nachricht ) const // sendet eine Fehl
 
 // Inhalt der CSKlient aus ChatServer.h
 // Konstruktor 
-CSKlient::CSKlient( SKlient * klient, ChatServer * cs )
+CSKlient::CSKlient( SKlient *klient, ChatServer *cs )
     : Thread()
 {
     this->klient = klient;
@@ -699,7 +699,7 @@ void CSKlient::absturz()
     if( empfangen )
     {
         cs->zDB()->unregisterKlient( klientNummer, cs->getId() );
-        MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+        MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
         weiter->accountOffline( accountId );
         delete weiter;
     }
@@ -719,7 +719,7 @@ void CSKlient::thread()
             switch( c )
             {
             case 1: // Klient identifikation
-                klient->getNachrichtEncrypted( (char *)& klientNummer, 4 );
+                klient->getNachrichtEncrypted( (char *)&klientNummer, 4 );
                 if( !cs->zDB()->proveKlient( klientNummer, cs->getId() ) )
                 {
                     klientNummer = 0;
@@ -756,7 +756,7 @@ void CSKlient::thread()
                                 if( status == 1 )
                                 {
                                     empfangen = 0;
-                                    MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                                    MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                                     weiter->accountOnline( accountId );
                                     delete weiter;
                                     br = 1;
@@ -777,8 +777,8 @@ void CSKlient::thread()
                         if( 1 )
                         {
                             int klientId = 0;
-                            klient->getNachrichtEncrypted( (char *)& klientId, 4 );
-                            if( klientId &&cs->absturzKlient( klientId ) )
+                            klient->getNachrichtEncrypted( (char *)&klientId, 4 );
+                            if( klientId && cs->absturzKlient( klientId ) )
                                 klient->sendeEncrypted( "\1", 1 );
                             else
                                 klient->sendeEncrypted( "\0", 1 );
@@ -824,7 +824,7 @@ void CSKlient::thread()
                         {
                             klient->sendeEncrypted( "\1", 1 );
                             int id = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& id, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&id, 4 ) );
                             CSKlient *c = cs->zSendeKlient( id );
                             if( c )
                             {
@@ -840,8 +840,8 @@ void CSKlient::thread()
                             klient->sendeEncrypted( "\1", 1 );
                             int accId = 0;
                             int freundId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& freundId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&freundId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( freundId );
                             if( klient )
                                 res = (char)( res & (char)klient->freundOnline( accId ) );
@@ -855,8 +855,8 @@ void CSKlient::thread()
                             klient->sendeEncrypted( "\1", 1 );
                             int accId = 0;
                             int freundId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& freundId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&freundId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( freundId );
                             if( klient )
                                 res = (char)( res & (char)klient->freundOffline( accId ) );
@@ -872,9 +872,9 @@ void CSKlient::thread()
                             int zuAcc = 0;
                             unsigned char len = 0;
                             char *nachricht = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& vonAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& len, 1 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&vonAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&len, 1 ) );
                             if( len )
                             {
                                 nachricht = new char[ len + 1 ];
@@ -896,9 +896,9 @@ void CSKlient::thread()
                             int vonAcc = 0;
                             int zuAcc = 0;
                             int gruppeId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& vonAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& gruppeId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&vonAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&gruppeId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->gruppeEinladung( vonAcc, gruppeId ) );
@@ -914,9 +914,9 @@ void CSKlient::thread()
                             int freundId = 0;
                             unsigned char len = 0;
                             char *status = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& freundId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& len, 1 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&freundId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&len, 1 ) );
                             if( len )
                             {
                                 status = new char[ len + 1 ];
@@ -939,9 +939,9 @@ void CSKlient::thread()
                             int freundId = 0;
                             unsigned char len = 0;
                             char *name = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& freundId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& len, 1 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&freundId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&len, 1 ) );
                             if( len )
                             {
                                 name = new char[ len + 1 ];
@@ -962,8 +962,8 @@ void CSKlient::thread()
                             klient->sendeEncrypted( "\1", 1 );
                             int accId = 0;
                             int freundId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& freundId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&freundId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( freundId );
                             if( klient )
                                 res = (char)( res & (char)klient->keinFreundMehr( accId ) );
@@ -977,8 +977,8 @@ void CSKlient::thread()
                             klient->sendeEncrypted( "\1", 1 );
                             int accId = 0;
                             int freundId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& freundId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&freundId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( freundId );
                             if( klient )
                                 res = (char)( res & (char)klient->freundesAnfrage( accId ) );
@@ -992,8 +992,8 @@ void CSKlient::thread()
                             klient->sendeEncrypted( "\1", 1 );
                             int accId = 0;
                             int freundId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& freundId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&freundId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( freundId );
                             if( klient )
                                 res = (char)( res & (char)klient->neuerFreund( accountId ) );
@@ -1008,9 +1008,9 @@ void CSKlient::thread()
                             int vonAcc = 0;
                             int zuAcc = 0;
                             int chatroomId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& vonAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& chatroomId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&vonAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&chatroomId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->einladungZumChatroom( vonAcc, chatroomId ) );
@@ -1025,9 +1025,9 @@ void CSKlient::thread()
                             int accId = 0;
                             int zuAcc = 0;
                             int chatroomId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& chatroomId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&chatroomId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->spielerBetrittChatroom( chatroomId, accId ) );
@@ -1044,10 +1044,10 @@ void CSKlient::thread()
                             int chatroomId = 0;
                             unsigned char len = 0;
                             char *nachricht = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& vonAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& chatroomId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& len, 1 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&vonAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&chatroomId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&len, 1 ) );
                             if( len )
                             {
                                 nachricht = new char[ len + 1 ];
@@ -1069,9 +1069,9 @@ void CSKlient::thread()
                             int accId = 0;
                             int zuAcc = 0;
                             int chatroomId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& chatroomId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&chatroomId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->spielerLeavesChatroom( chatroomId, accId ) );
@@ -1085,8 +1085,8 @@ void CSKlient::thread()
                             klient->sendeEncrypted( "\1", 1 );
                             int accId = 0;
                             int freundId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& freundId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&freundId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( freundId );
                             if( klient )
                                 res = (char)( res & (char)klient->freundesAnfrageAbgelehnt( accId ) );
@@ -1101,9 +1101,9 @@ void CSKlient::thread()
                             int accId = 0;
                             int zuAcc = 0;
                             int chatroomId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& chatroomId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&chatroomId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->einladungZumChatroomAbgelehnt( accId, chatroomId ) );
@@ -1118,8 +1118,8 @@ void CSKlient::thread()
                             int zuAcc = 0;
                             unsigned char len = 0;
                             char *nachricht = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& len, 1 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&len, 1 ) );
                             if( len )
                             {
                                 nachricht = new char[ len + 1 ];
@@ -1140,8 +1140,8 @@ void CSKlient::thread()
                             klient->sendeEncrypted( "\1", 1 );
                             int zuAcc = 0;
                             int chatroomId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& chatroomId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&chatroomId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->chatroomAdmin( chatroomId ) );
@@ -1155,8 +1155,8 @@ void CSKlient::thread()
                             klient->sendeEncrypted( "\1", 1 );
                             int zuAcc = 0;
                             int chatroomId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& chatroomId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&chatroomId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->chatroomKick( chatroomId ) );
@@ -1171,9 +1171,9 @@ void CSKlient::thread()
                             int zuAcc = 0;
                             int accountId = 0;
                             int gruppeId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accountId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& gruppeId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accountId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&gruppeId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->spielerBertittGruppe( accountId, gruppeId ) );
@@ -1188,9 +1188,9 @@ void CSKlient::thread()
                             int zuAcc = 0;
                             int accountId = 0;
                             int gruppeId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accountId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& gruppeId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accountId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&gruppeId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->spielerLeavesGruppe( accountId, gruppeId ) );
@@ -1204,8 +1204,8 @@ void CSKlient::thread()
                             klient->sendeEncrypted( "\1", 1 );
                             int zuAcc = 0;
                             int gruppeId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& gruppeId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&gruppeId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->kickAusGruppe( gruppeId ) );
@@ -1219,8 +1219,8 @@ void CSKlient::thread()
                             klient->sendeEncrypted( "\1", 1 );
                             int zuAcc = 0;
                             int gruppeId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& gruppeId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&gruppeId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->gruppeAnmelden( gruppeId ) );
@@ -1234,8 +1234,8 @@ void CSKlient::thread()
                             klient->sendeEncrypted( "\1", 1 );
                             int zuAcc = 0;
                             int gruppeId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& gruppeId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&gruppeId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->gruppeAbmelden( gruppeId ) );
@@ -1250,14 +1250,14 @@ void CSKlient::thread()
                             int zuAcc = 0;
                             int gruppeId = 0;
                             unsigned char len;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& gruppeId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& len, 1 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&gruppeId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&len, 1 ) );
                             char *nachricht = new char[ len + 1 ];
                             nachricht[ (int)len ] = 0;
                             if( len )
                                 res = (char)( res & (char)klient->getNachrichtEncrypted( nachricht, len ) );
-                            CSKlient * klient = cs->zSendeKlient( zuAcc );
+                            CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->gruppeNachricht( gruppeId, nachricht ) );
                             else
@@ -1272,8 +1272,8 @@ void CSKlient::thread()
                             int zuAcc = 0;
                             int gruppeId = 0;
                             char starten;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& gruppeId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&gruppeId, 4 ) );
                             res = (char)( res & (char)klient->getNachrichtEncrypted( &starten, 1 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
@@ -1289,9 +1289,9 @@ void CSKlient::thread()
                             int zuAcc = 0;
                             int adminId = 0;
                             int gruppeId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& adminId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& gruppeId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&adminId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&gruppeId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->setGruppeAdmin( gruppeId, adminId ) );
@@ -1306,9 +1306,9 @@ void CSKlient::thread()
                             int zuAcc = 0;
                             int accountId = 0;
                             int gruppeId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accountId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& gruppeId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accountId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&gruppeId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->gruppeEinladungAbgelehnt( gruppeId, accountId ) );
@@ -1323,8 +1323,8 @@ void CSKlient::thread()
                             int zuAcc = 0;
                             unsigned short port;
                             unsigned char *ip = new unsigned char[ 4 ];
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& port, 2 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&port, 2 ) );
                             res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)ip, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
@@ -1341,9 +1341,9 @@ void CSKlient::thread()
                             int zuAcc = 0;
                             int gruppeId = 0;
                             int accountId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& gruppeId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accountId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&gruppeId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accountId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->gruppeEinladungAbgebrochen( gruppeId, accountId ) );
@@ -1358,9 +1358,9 @@ void CSKlient::thread()
                             int zuAcc = 0;
                             int gruppeId = 0;
                             int accountId = 0;
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& zuAcc, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& gruppeId, 4 ) );
-                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)& accountId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&zuAcc, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&gruppeId, 4 ) );
+                            res = (char)( res & (char)klient->getNachrichtEncrypted( (char *)&accountId, 4 ) );
                             CSKlient *klient = cs->zSendeKlient( zuAcc );
                             if( klient )
                                 res = (char)( res & (char)klient->gruppeEinladungNeu( gruppeId, accountId ) );
@@ -1390,14 +1390,14 @@ void CSKlient::thread()
                     int zuAccount = 0;
                     unsigned char len = 0;
                     char *nachricht = 0;
-                    klient->getNachrichtEncrypted( (char *)& zuAccount, 4 );
-                    klient->getNachrichtEncrypted( (char *)& len, 1 );
+                    klient->getNachrichtEncrypted( (char *)&zuAccount, 4 );
+                    klient->getNachrichtEncrypted( (char *)&len, 1 );
                     if( len )
                     {
                         nachricht = new char[ len + 1 ];
                         nachricht[ (int)len ] = 0;
                         klient->getNachrichtEncrypted( nachricht, len );
-                        MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                        MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                         if( !weiter->chatNachricht( accountId, zuAccount, nachricht ) )
                         {
                             cs->zDB()->speicherChatNachricht( accountId, zuAccount, nachricht );
@@ -1424,7 +1424,7 @@ void CSKlient::thread()
                     klient->sendeEncrypted( "\1", 1 );
                     unsigned char len;
                     char *name;
-                    klient->getNachrichtEncrypted( (char *)& len, 1 );
+                    klient->getNachrichtEncrypted( (char *)&len, 1 );
                     if( len )
                     {
                         name = new char[ len + 1 ];
@@ -1433,7 +1433,7 @@ void CSKlient::thread()
                         if( cs->zDB()->accountNameChange( accountId, name ) )
                         {
                             klient->sendeEncrypted( "\1", 1 );
-                            MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                            MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                             weiter->accountNameChange( accountId, name );
                             delete weiter;
                         }
@@ -1461,11 +1461,11 @@ void CSKlient::thread()
                     }
                     klient->sendeEncrypted( "\1", 1 );
                     int freundId = 0;
-                    klient->getNachrichtEncrypted( (char *)& freundId, 4 );
+                    klient->getNachrichtEncrypted( (char *)&freundId, 4 );
                     if( cs->zDB()->beendeFreundschaft( accountId, freundId ) )
                     {
                         klient->sendeEncrypted( "\1", 1 );
-                        MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                        MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                         weiter->accountKeinFreundMehr( accountId, freundId );
                         weiter->accountKeinFreundMehr( freundId, accountId );
                         delete weiter;
@@ -1492,10 +1492,10 @@ void CSKlient::thread()
                     }
                     klient->sendeEncrypted( "\1", 1 );
                     int freundId = 0;
-                    klient->getNachrichtEncrypted( (char *)& freundId, 4 );
+                    klient->getNachrichtEncrypted( (char *)&freundId, 4 );
                     if( cs->zDB()->proveFreundschaftsAnfrage( accountId, freundId ) )
                     {
-                        MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                        MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                         if( !weiter->freundesAnfrage( accountId, freundId ) )
                             cs->zDB()->saveFreundschaftsAnfrage( accountId, freundId );
                         klient->sendeEncrypted( "\1", 1 );
@@ -1524,9 +1524,9 @@ void CSKlient::thread()
                     klient->sendeEncrypted( "\1", 1 );
                     int zuAccount = 0;
                     char ok = 0;
-                    klient->getNachrichtEncrypted( (char *)& zuAccount, 4 );
+                    klient->getNachrichtEncrypted( (char *)&zuAccount, 4 );
                     klient->getNachrichtEncrypted( &ok, 1 );
-                    MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                    MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                     if( !ok )
                     {
                         weiter->freundEinladungAbgelehnt( accountId, zuAccount );
@@ -1571,7 +1571,7 @@ void CSKlient::thread()
                     klient->sendeEncrypted( "\1", 1 );
                     unsigned char nLen = 0;
                     char *name = 0;
-                    klient->getNachrichtEncrypted( (char *)& nLen, 1 );
+                    klient->getNachrichtEncrypted( (char *)&nLen, 1 );
                     if( nLen )
                     {
                         name = new char[ nLen + 1 ];
@@ -1589,7 +1589,7 @@ void CSKlient::thread()
                     {
                         klient->sendeEncrypted( "\1", 1 );
                         int id = cs->zDB()->chatroomErstellen( accountId, name );
-                        klient->sendeEncrypted( (char *)& id, 4 );
+                        klient->sendeEncrypted( (char *)&id, 4 );
                         if( !id )
                         {
                             CSKlient *c = cs->zSendeKlient( accountId );
@@ -1623,11 +1623,11 @@ void CSKlient::thread()
                     klient->sendeEncrypted( "\1", 1 );
                     int zuAccountId = 0;
                     int chatroomId = 0;
-                    klient->getNachrichtEncrypted( (char *)& zuAccountId, 4 );
-                    klient->getNachrichtEncrypted( (char *)& chatroomId, 4 );
+                    klient->getNachrichtEncrypted( (char *)&zuAccountId, 4 );
+                    klient->getNachrichtEncrypted( (char *)&chatroomId, 4 );
                     if( cs->zDB()->proveChatroomEinladung( accountId, zuAccountId, chatroomId ) )
                     {
-                        MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                        MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                         if( weiter->einladungZumChatroom( accountId, zuAccountId, chatroomId ) )
                             klient->sendeEncrypted( "\1", 1 );
                         else
@@ -1665,9 +1665,9 @@ void CSKlient::thread()
                     klient->sendeEncrypted( "\1", 1 );
                     int zuAccountId = 0;
                     int chatroomId = 0;
-                    klient->getNachrichtEncrypted( (char *)& zuAccountId, 4 );
-                    klient->getNachrichtEncrypted( (char *)& chatroomId, 4 );
-                    MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                    klient->getNachrichtEncrypted( (char *)&zuAccountId, 4 );
+                    klient->getNachrichtEncrypted( (char *)&chatroomId, 4 );
+                    MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                     weiter->chatroomEinladungAbgelehnt( accountId, chatroomId, zuAccountId );
                     delete weiter;
                     klient->sendeEncrypted( "\1", 1 );
@@ -1686,10 +1686,10 @@ void CSKlient::thread()
                     }
                     klient->sendeEncrypted( "\1", 1 );
                     int chatroomId = 0;
-                    klient->getNachrichtEncrypted( (char *)& chatroomId, 4 );
+                    klient->getNachrichtEncrypted( (char *)&chatroomId, 4 );
                     if( cs->zDB()->chatroomBeitreten( accountId, chatroomId ) )
                     {
-                        MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                        MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                         weiter->spielerBetrittChatroom( accountId, chatroomId );
                         delete weiter;
                         klient->sendeEncrypted( "\1", 1 );
@@ -1722,8 +1722,8 @@ void CSKlient::thread()
                     int chatroomId = 0;
                     unsigned char len = 0;
                     char *nachricht = 0;
-                    klient->getNachrichtEncrypted( (char *)& chatroomId, 4 );
-                    klient->getNachrichtEncrypted( (char *)& len, 1 );
+                    klient->getNachrichtEncrypted( (char *)&chatroomId, 4 );
+                    klient->getNachrichtEncrypted( (char *)&len, 1 );
                     if( len )
                     {
                         nachricht = new char[ len + 1 ];
@@ -1732,7 +1732,7 @@ void CSKlient::thread()
                         Text *message = cs->zDB()->getAccountRufName( accountId );
                         message->append( ": " );
                         message->append( nachricht );
-                        MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                        MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                         if( weiter->chatroomNachricht( accountId, message->getText(), chatroomId ) )
                             klient->sendeEncrypted( "\1", 1 );
                         else
@@ -1766,7 +1766,7 @@ void CSKlient::thread()
                     }
                     klient->sendeEncrypted( "\1", 1 );
                     int chatroomId = 0;
-                    klient->getNachrichtEncrypted( (char *)& chatroomId, 4 );
+                    klient->getNachrichtEncrypted( (char *)&chatroomId, 4 );
                     int aktion = cs->zDB()->chatroomVerlassen( accountId, chatroomId );
                     if( !aktion )
                         klient->sendeEncrypted( "\0", 1 );
@@ -1774,13 +1774,13 @@ void CSKlient::thread()
                     {
                         if( aktion == 3 )
                         {
-                            MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                            MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                             weiter->chatroomAdmin( chatroomId, cs->zDB()->getChatroomAdmin( chatroomId ) );
                             delete weiter;
                         }
                         if( aktion != 2 )
                         {
-                            MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                            MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                             weiter->spielerLeavestChatroom( accountId, chatroomId );
                             delete weiter;
                         }
@@ -1802,8 +1802,8 @@ void CSKlient::thread()
                     klient->sendeEncrypted( "\1", 1 );
                     int chatroomId = 0;
                     int accountId = 0;
-                    klient->getNachrichtEncrypted( (char *)& chatroomId, 4 );
-                    klient->getNachrichtEncrypted( (char *)& accountId, 4 );
+                    klient->getNachrichtEncrypted( (char *)&chatroomId, 4 );
+                    klient->getNachrichtEncrypted( (char *)&accountId, 4 );
                     if( accountId == (int)this->accountId )
                     {
                         klient->sendeEncrypted( "\0", 1 );
@@ -1816,7 +1816,7 @@ void CSKlient::thread()
                     {
                         if( cs->zDB()->chatroomVerlassen( accountId, chatroomId ) )
                         {
-                            MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                            MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                             weiter->chatroomKick( chatroomId, accountId );
                             weiter->spielerLeavestChatroom( accountId, chatroomId );
                             delete weiter;
@@ -1917,7 +1917,7 @@ void CSKlient::thread()
         {
             if( accountId )
             {
-                MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+                MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
                 weiter->accountOffline( accountId );
                 delete weiter;
             }
@@ -1936,7 +1936,7 @@ bool CSKlient::kick()
         klient->trenne();
         warteAufThread( 100 );
         ende();
-        MSGWeiterleitung *weiter = new MSGWeiterleitung( (ChatServer *)cs->getThis() );
+        MSGWeiterleitung *weiter = new MSGWeiterleitung( dynamic_cast<ChatServer *>( cs->getThis() ) );
         weiter->accountOffline( accountId );
         delete weiter;
     }
@@ -1959,7 +1959,7 @@ bool CSKlient::nachricht( int vonAccount, const char *txt )
     {
         lock();
         klient->sendeEncrypted( "\4", 1 );
-        klient->sendeEncrypted( (char *)& vonAccount, 4 );
+        klient->sendeEncrypted( (char *)&vonAccount, 4 );
         klient->sendeEncrypted( &len, 1 );
         klient->sendeEncrypted( txt, len );
         unlock();
@@ -1975,8 +1975,8 @@ bool CSKlient::gruppeEinladung( int vonAccount, int gruppeId )
         return 0;
     lock();
     klient->sendeEncrypted( "\5", 1 );
-    klient->sendeEncrypted( (char *)& vonAccount, 4 );
-    klient->sendeEncrypted( (char *)& gruppeId, 4 );
+    klient->sendeEncrypted( (char *)&vonAccount, 4 );
+    klient->sendeEncrypted( (char *)&gruppeId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -1992,7 +1992,7 @@ bool CSKlient::accountStatusChange( int account, const char *status )
     {
         lock();
         klient->sendeEncrypted( "\6", 1 );
-        klient->sendeEncrypted( (char *)& account, 4 );
+        klient->sendeEncrypted( (char *)&account, 4 );
         klient->sendeEncrypted( &len, 1 );
         klient->sendeEncrypted( status, len );
         unlock();
@@ -2011,7 +2011,7 @@ bool CSKlient::accountNameChange( int account, const char *name )
     {
         lock();
         klient->sendeEncrypted( "\7", 1 );
-        klient->sendeEncrypted( (char *)& account, 4 );
+        klient->sendeEncrypted( (char *)&account, 4 );
         klient->sendeEncrypted( &len, 1 );
         klient->sendeEncrypted( name, len );
         unlock();
@@ -2027,7 +2027,7 @@ bool CSKlient::keinFreundMehr( int account )
         return 0;
     lock();
     klient->sendeEncrypted( "\x8", 1 );
-    klient->sendeEncrypted( (char *)& account, 4 );
+    klient->sendeEncrypted( (char *)&account, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2040,7 +2040,7 @@ bool CSKlient::freundesAnfrage( int vonAccount )
         return 0;
     lock();
     klient->sendeEncrypted( "\x9", 1 );
-    klient->sendeEncrypted( (char *)& vonAccount, 4 );
+    klient->sendeEncrypted( (char *)&vonAccount, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2053,7 +2053,7 @@ bool CSKlient::neuerFreund( int account )
         return 0;
     lock();
     klient->sendeEncrypted( "\xA", 1 );
-    klient->sendeEncrypted( (char *)& account, 4 );
+    klient->sendeEncrypted( (char *)&account, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2066,7 +2066,7 @@ bool CSKlient::freundesAnfrageAbgelehnt( int account )
         return 0;
     lock();
     klient->sendeEncrypted( "\xB", 1 );
-    klient->sendeEncrypted( (char *)& account, 4 );
+    klient->sendeEncrypted( (char *)&account, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2079,8 +2079,8 @@ bool CSKlient::einladungZumChatroom( int vonAccount, int chatroomId )
         return 0;
     lock();
     klient->sendeEncrypted( "\xC", 1 );
-    klient->sendeEncrypted( (char *)& vonAccount, 4 );
-    klient->sendeEncrypted( (char *)& chatroomId, 4 );
+    klient->sendeEncrypted( (char *)&vonAccount, 4 );
+    klient->sendeEncrypted( (char *)&chatroomId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2093,8 +2093,8 @@ bool CSKlient::einladungZumChatroomAbgelehnt( int account, int chatroomId )
         return 0;
     lock();
     klient->sendeEncrypted( "\xD", 1 );
-    klient->sendeEncrypted( (char *)& account, 4 );
-    klient->sendeEncrypted( (char *)& chatroomId, 4 );
+    klient->sendeEncrypted( (char *)&account, 4 );
+    klient->sendeEncrypted( (char *)&chatroomId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2107,8 +2107,8 @@ bool CSKlient::spielerBetrittChatroom( int chatroomId, int account )
         return 0;
     lock();
     klient->sendeEncrypted( "\xE", 1 );
-    klient->sendeEncrypted( (char *)& chatroomId, 4 );
-    klient->sendeEncrypted( (char *)& account, 4 );
+    klient->sendeEncrypted( (char *)&chatroomId, 4 );
+    klient->sendeEncrypted( (char *)&account, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2124,8 +2124,8 @@ bool CSKlient::chatroomNachricht( int chatroomId, int vonAccount, const char *na
     {
         lock();
         klient->sendeEncrypted( "\xF", 1 );
-        klient->sendeEncrypted( (char *)& chatroomId, 4 );
-        klient->sendeEncrypted( (char *)& vonAccount, 4 );
+        klient->sendeEncrypted( (char *)&chatroomId, 4 );
+        klient->sendeEncrypted( (char *)&vonAccount, 4 );
         klient->sendeEncrypted( &len, 1 );
         klient->sendeEncrypted( nachricht, len );
         unlock();
@@ -2141,15 +2141,15 @@ bool CSKlient::spielerLeavesChatroom( int chatroomId, int accountId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x10", 1 );
-    klient->sendeEncrypted( (char *)& chatroomId, 4 );
-    klient->sendeEncrypted( (char *)& accountId, 4 );
+    klient->sendeEncrypted( (char *)&chatroomId, 4 );
+    klient->sendeEncrypted( (char *)&accountId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
     return 1;
 }
 
-bool CSKlient::freunde( char anzahl, Array< int > * zAccountId )
+bool CSKlient::freunde( char anzahl, Array< int > *zAccountId )
 {
     if( empfangen )
         return 0;
@@ -2159,7 +2159,7 @@ bool CSKlient::freunde( char anzahl, Array< int > * zAccountId )
     for( int i = 0; i < anzahl; i++ )
     {
         int accId = zAccountId->get( i );
-        klient->sendeEncrypted( (char *)& accId, 4 );
+        klient->sendeEncrypted( (char *)&accId, 4 );
     }
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
@@ -2167,18 +2167,18 @@ bool CSKlient::freunde( char anzahl, Array< int > * zAccountId )
     return 1;
 }
 
-bool CSKlient::spielerImChatroom( int chatroomId, char anzahl, Array< int > * zAccountId )
+bool CSKlient::spielerImChatroom( int chatroomId, char anzahl, Array< int > *zAccountId )
 {
     if( empfangen )
         return 0;
     lock();
     klient->sendeEncrypted( "\x12", 1 );
-    klient->sendeEncrypted( (char *)& chatroomId, 4 );
+    klient->sendeEncrypted( (char *)&chatroomId, 4 );
     klient->sendeEncrypted( &anzahl, 1 );
     for( int i = 0; i < anzahl; i++ )
     {
         int accId = zAccountId->get( i );
-        klient->sendeEncrypted( (char *)& accId, 4 );
+        klient->sendeEncrypted( (char *)&accId, 4 );
     }
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
@@ -2192,7 +2192,7 @@ bool CSKlient::freundOnline( int accountId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x13", 1 );
-    klient->sendeEncrypted( (char *)& accountId, 4 );
+    klient->sendeEncrypted( (char *)&accountId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2205,7 +2205,7 @@ bool CSKlient::freundOffline( int accountId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x14", 1 );
-    klient->sendeEncrypted( (char *)& accountId, 4 );
+    klient->sendeEncrypted( (char *)&accountId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2218,7 +2218,7 @@ bool CSKlient::chatroomAdmin( int chatroomId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x15", 1 );
-    klient->sendeEncrypted( (char *)& chatroomId, 4 );
+    klient->sendeEncrypted( (char *)&chatroomId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2231,7 +2231,7 @@ bool CSKlient::chatroomKick( int chatroomId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x16", 1 );
-    klient->sendeEncrypted( (char *)& chatroomId, 4 );
+    klient->sendeEncrypted( (char *)&chatroomId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2244,8 +2244,8 @@ bool CSKlient::spielerBertittGruppe( int accountId, int gruppeId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x17", 1 );
-    klient->sendeEncrypted( (char *)& accountId, 4 );
-    klient->sendeEncrypted( (char *)& gruppeId, 4 );
+    klient->sendeEncrypted( (char *)&accountId, 4 );
+    klient->sendeEncrypted( (char *)&gruppeId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2258,8 +2258,8 @@ bool CSKlient::spielerLeavesGruppe( int accountId, int gruppeId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x18", 1 );
-    klient->sendeEncrypted( (char *)& accountId, 4 );
-    klient->sendeEncrypted( (char *)& gruppeId, 4 );
+    klient->sendeEncrypted( (char *)&accountId, 4 );
+    klient->sendeEncrypted( (char *)&gruppeId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2275,7 +2275,7 @@ bool CSKlient::gruppeNachricht( int gruppeId, char *nachricht )
         return 1;
     lock();
     klient->sendeEncrypted( "\x19", 1 );
-    klient->sendeEncrypted( (char *)& gruppeId, 4 );
+    klient->sendeEncrypted( (char *)&gruppeId, 4 );
     klient->sendeEncrypted( &len, 1 );
     klient->sendeEncrypted( nachricht, len );
     unlock();
@@ -2290,7 +2290,7 @@ bool CSKlient::gruppeAnmelden( int gruppeId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x1A", 1 );
-    klient->sendeEncrypted( (char *)& gruppeId, 4 );
+    klient->sendeEncrypted( (char *)&gruppeId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2303,7 +2303,7 @@ bool CSKlient::gruppeAbmelden( int gruppeId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x1B", 1 );
-    klient->sendeEncrypted( (char *)& gruppeId, 4 );
+    klient->sendeEncrypted( (char *)&gruppeId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2316,7 +2316,7 @@ bool CSKlient::gruppeSpielStarten( int gruppeId, bool starten )
         return 0;
     lock();
     klient->sendeEncrypted( "\x1C", 1 );
-    klient->sendeEncrypted( (char *)& gruppeId, 4 );
+    klient->sendeEncrypted( (char *)&gruppeId, 4 );
     if( starten )
         klient->sendeEncrypted( "\1", 1 );
     else
@@ -2333,8 +2333,8 @@ bool CSKlient::setGruppeAdmin( int gruppeId, int adminId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x1E", 1 );
-    klient->sendeEncrypted( (char *)& gruppeId, 4 );
-    klient->sendeEncrypted( (char *)& adminId, 4 );
+    klient->sendeEncrypted( (char *)&gruppeId, 4 );
+    klient->sendeEncrypted( (char *)&adminId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2347,7 +2347,7 @@ bool CSKlient::kickAusGruppe( int gruppeId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x1D", 1 );
-    klient->sendeEncrypted( (char *)& gruppeId, 4 );
+    klient->sendeEncrypted( (char *)&gruppeId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2360,8 +2360,8 @@ bool CSKlient::gruppeEinladungAbgelehnt( int gruppeId, int accountId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x1F", 1 );
-    klient->sendeEncrypted( (char *)& gruppeId, 4 );
-    klient->sendeEncrypted( (char *)& accountId, 4 );
+    klient->sendeEncrypted( (char *)&gruppeId, 4 );
+    klient->sendeEncrypted( (char *)&accountId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2374,7 +2374,7 @@ bool CSKlient::spielServerVerbindungsAnfrage( unsigned short port, unsigned char
         return 0;
     lock();
     klient->sendeEncrypted( "\x20", 1 );
-    klient->sendeEncrypted( (char *)& port, 2 );
+    klient->sendeEncrypted( (char *)&port, 2 );
     klient->sendeEncrypted( (char *)ip, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
@@ -2388,8 +2388,8 @@ bool CSKlient::gruppeEinladungAbgebrochen( int gruppeId, int accountId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x21", 1 );
-    klient->sendeEncrypted( (char *)& gruppeId, 4 );
-    klient->sendeEncrypted( (char *)& accountId, 4 );
+    klient->sendeEncrypted( (char *)&gruppeId, 4 );
+    klient->sendeEncrypted( (char *)&accountId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2402,8 +2402,8 @@ bool CSKlient::gruppeEinladungNeu( int gruppeId, int accountId )
         return 0;
     lock();
     klient->sendeEncrypted( "\x22", 1 );
-    klient->sendeEncrypted( (char *)& gruppeId, 4 );
-    klient->sendeEncrypted( (char *)& accountId, 4 );
+    klient->sendeEncrypted( (char *)&gruppeId, 4 );
+    klient->sendeEncrypted( (char *)&accountId, 4 );
     unlock();
     cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
     cs->addGesendet( klient->getUploadBytes( 1 ) );
@@ -2460,7 +2460,7 @@ bool CSKlient::istEmpfang() const
 
 // Inhalt der MSGWeiterleitung Klasse aus ChatServer.h
 // Konstruktor
-MSGWeiterleitung::MSGWeiterleitung( ChatServer * cs )
+MSGWeiterleitung::MSGWeiterleitung( ChatServer *cs )
 {
     klient = 0;
     this->cs = cs;
@@ -2511,14 +2511,14 @@ bool MSGWeiterleitung::kickKlient( int accountId )
             ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             if( res )
             {
-                ret = ret & klient->sendeEncrypted( (char *)& accountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&accountId, 4 );
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             }
             ret = (char)ret & res;
             cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
             cs->addGesendet( klient->getUploadBytes( 1 ) );
             klient->trenne();
-            klient = klient->release();
+            klient = (Klient *)klient->release();
         }
         delete[]ip;
     }
@@ -2561,15 +2561,15 @@ bool MSGWeiterleitung::accountOnline( int accountId )
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
                 if( res )
                 {
-                    ret = ret & klient->sendeEncrypted( (char *)& accountId, 4 );
-                    ret = ret & klient->sendeEncrypted( (char *)& account, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&accountId, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&account, 4 );
                     ret = ret & klient->getNachrichtEncrypted( &res, 1 );
                 }
                 ret = (char)ret & res;
                 cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
                 cs->addGesendet( klient->getUploadBytes( 1 ) );
                 klient->trenne();
-                klient = klient->release();
+                klient = (Klient*)klient->release();
             }
             delete[]ip;
         }
@@ -2614,15 +2614,15 @@ bool MSGWeiterleitung::accountOffline( int accountId )
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
                 if( res )
                 {
-                    ret = ret & klient->sendeEncrypted( (char *)& accountId, 4 );
-                    ret = ret & klient->sendeEncrypted( (char *)& account, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&accountId, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&account, 4 );
                     ret = ret & klient->getNachrichtEncrypted( &res, 1 );
                 }
                 ret = (char)ret & res;
                 cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
                 cs->addGesendet( klient->getUploadBytes( 1 ) );
                 klient->trenne();
-                klient = klient->release();
+                klient = (Klient*)klient->release();
             }
             delete[]ip;
         }
@@ -2662,20 +2662,20 @@ bool MSGWeiterleitung::chatNachricht( int vonAccount, int zuAccount, const char
             ret = ret & klient->verbinde( port, ip );
             ret = ret & klient->sendeEncrypted( "\5\4", 2 );
             char res = 0;
-            ret = ret & klient->getNachrichtEncrypted( (char *)& res, 1 );
+            ret = ret & klient->getNachrichtEncrypted( (char *)&res, 1 );
             if( res )
             {
-                ret = ret & klient->sendeEncrypted( (char *)& vonAccount, 4 );
-                ret = ret & klient->sendeEncrypted( (char *)& zuAccount, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&vonAccount, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&zuAccount, 4 );
                 ret = ret & klient->sendeEncrypted( &len, 1 );
                 ret = ret & klient->sendeEncrypted( (char *)nachricht, len );
-                ret = ret & klient->getNachrichtEncrypted( (char *)& res, 1 );
+                ret = ret & klient->getNachrichtEncrypted( (char *)&res, 1 );
             }
             ret = (char)ret & res;
             cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
             cs->addGesendet( klient->getUploadBytes( 1 ) );
             klient->trenne();
-            klient = klient->release();
+            klient = (Klient*)klient->release();
         }
         delete[]ip;
     }
@@ -2690,7 +2690,7 @@ bool MSGWeiterleitung::accountStatusChange( int accountId, const char *status )
     char len = (char)textLength( status );
     if( !len )
         return 1;
-    Array< int > * accId = new Array< int >();
+    Array< int > *accId = new Array< int >();
     int anzahl = cs->zDB()->getAccountOnlineFreunde( accountId, accId );
     for( int i = 0; i < anzahl; i++ )
     {
@@ -2721,9 +2721,9 @@ bool MSGWeiterleitung::accountStatusChange( int accountId, const char *status )
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
                 if( res )
                 {
-                    ret = ret & klient->sendeEncrypted( (char *)& accountId, 4 );
-                    ret = ret & klient->sendeEncrypted( (char *)& account, 4 );
-                    ret = ret & klient->sendeEncrypted( (char *)& len, 1 );
+                    ret = ret & klient->sendeEncrypted( (char *)&accountId, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&account, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&len, 1 );
                     ret = ret & klient->sendeEncrypted( (char *)status, len );
                     ret = ret & klient->getNachrichtEncrypted( &res, 1 );
                 }
@@ -2731,7 +2731,7 @@ bool MSGWeiterleitung::accountStatusChange( int accountId, const char *status )
                 cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
                 cs->addGesendet( klient->getUploadBytes( 1 ) );
                 klient->trenne();
-                klient = klient->release();
+                klient = (Klient*)klient->release();
             }
             delete[]ip;
         }
@@ -2748,7 +2748,7 @@ bool MSGWeiterleitung::accountNameChange( int accountId, const char *name )
     char len = (char)textLength( name );
     if( !name )
         return 1;
-    Array< int > * accId = new Array< int >();
+    Array< int > *accId = new Array< int >();
     int anzahl = cs->zDB()->getAccountOnlineFreunde( accountId, accId );
     for( int i = 0; i < anzahl; i++ )
     {
@@ -2779,9 +2779,9 @@ bool MSGWeiterleitung::accountNameChange( int accountId, const char *name )
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
                 if( res )
                 {
-                    ret = ret & klient->sendeEncrypted( (char *)& accountId, 4 );
-                    ret = ret & klient->sendeEncrypted( (char *)& account, 4 );
-                    ret = ret & klient->sendeEncrypted( (char *)& len, 1 );
+                    ret = ret & klient->sendeEncrypted( (char *)&accountId, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&account, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&len, 1 );
                     ret = ret & klient->sendeEncrypted( (char *)name, len );
                     ret = ret & klient->getNachrichtEncrypted( &res, 1 );
                 }
@@ -2789,7 +2789,7 @@ bool MSGWeiterleitung::accountNameChange( int accountId, const char *name )
                 cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
                 cs->addGesendet( klient->getUploadBytes( 1 ) );
                 klient->trenne();
-                klient = klient->release();
+                klient = (Klient*)klient->release();
             }
             delete[]ip;
         }
@@ -2829,15 +2829,15 @@ bool MSGWeiterleitung::accountKeinFreundMehr( int accountId, int zielAccountId )
             ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             if( res )
             {
-                ret = ret & klient->sendeEncrypted( (char *)& accountId, 4 );
-                ret = ret & klient->sendeEncrypted( (char *)& zielAccountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&accountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&zielAccountId, 4 );
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             }
             ret = (char)ret & res;
             cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
             cs->addGesendet( klient->getUploadBytes( 1 ) );
             klient->trenne();
-            klient = klient->release();
+            klient = (Klient*)klient->release();
         }
         delete[]ip;
     }
@@ -2875,15 +2875,15 @@ bool MSGWeiterleitung::freundesAnfrage( int vonAccountId, int zuAccountId )
             ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             if( res )
             {
-                ret = ret & klient->sendeEncrypted( (char *)& vonAccountId, 4 );
-                ret = ret & klient->sendeEncrypted( (char *)& zuAccountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&vonAccountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&zuAccountId, 4 );
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             }
             ret = (char)ret & res;
             cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
             cs->addGesendet( klient->getUploadBytes( 1 ) );
             klient->trenne();
-            klient = klient->release();
+            klient = (Klient*)klient->release();
         }
         delete[]ip;
     }
@@ -2921,15 +2921,15 @@ bool MSGWeiterleitung::neuerFreund( int accountId, int zuAccountId )
             ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             if( res )
             {
-                ret = ret & klient->sendeEncrypted( (char *)& accountId, 4 );
-                ret = ret & klient->sendeEncrypted( (char *)& zuAccountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&accountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&zuAccountId, 4 );
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             }
             ret = (char)ret & res;
             cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
             cs->addGesendet( klient->getUploadBytes( 1 ) );
             klient->trenne();
-            klient = klient->release();
+            klient = (Klient*)klient->release();
         }
         delete[]ip;
     }
@@ -2967,16 +2967,16 @@ bool MSGWeiterleitung::einladungZumChatroom( int vonAccountId, int zuAccountId,
             ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             if( res )
             {
-                ret = ret & klient->sendeEncrypted( (char *)& vonAccountId, 4 );
-                ret = ret & klient->sendeEncrypted( (char *)& zuAccountId, 4 );
-                ret = ret & klient->sendeEncrypted( (char *)& chatroomId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&vonAccountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&zuAccountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&chatroomId, 4 );
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             }
             ret = (char)ret & res;
             cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
             cs->addGesendet( klient->getUploadBytes( 1 ) );
             klient->trenne();
-            klient = klient->release();
+            klient = (Klient*)klient->release();
         }
         delete[]ip;
     }
@@ -3021,16 +3021,16 @@ bool MSGWeiterleitung::spielerBetrittChatroom( int accountId, int chatroomId )
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
                 if( res )
                 {
-                    ret = ret & klient->sendeEncrypted( (char *)& accountId, 4 );
-                    ret = ret & klient->sendeEncrypted( (char *)& account, 4 );
-                    ret = ret & klient->sendeEncrypted( (char *)& chatroomId, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&accountId, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&account, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&chatroomId, 4 );
                     ret = ret & klient->getNachrichtEncrypted( &res, 1 );
                 }
                 ret = (char)ret & res;
                 cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
                 cs->addGesendet( klient->getUploadBytes( 1 ) );
                 klient->trenne();
-                klient = klient->release();
+                klient = (Klient*)klient->release();
             }
             delete[]ip;
         }
@@ -3047,7 +3047,7 @@ bool MSGWeiterleitung::chatroomNachricht( int vonAccount, const char *nachricht,
     char len = (char)textLength( nachricht );
     if( !len )
         return 1;
-    Array< int > * accId = new Array< int >();
+    Array< int > *accId = new Array< int >();
     int anzahl = cs->zDB()->getChatroomAccount( chatroomId, accId );
     for( int i = 0; i < anzahl; i++ )
     {
@@ -3078,9 +3078,9 @@ bool MSGWeiterleitung::chatroomNachricht( int vonAccount, const char *nachricht,
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
                 if( res )
                 {
-                    ret = ret & klient->sendeEncrypted( (char *)& vonAccount, 4 );
-                    ret = ret & klient->sendeEncrypted( (char *)& account, 4 );
-                    ret = ret & klient->sendeEncrypted( (char *)& chatroomId, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&vonAccount, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&account, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&chatroomId, 4 );
                     ret = ret & klient->sendeEncrypted( &len, 1 );
                     ret = ret & klient->sendeEncrypted( (char *)nachricht, len );
                     ret = ret & klient->getNachrichtEncrypted( &res, 1 );
@@ -3089,7 +3089,7 @@ bool MSGWeiterleitung::chatroomNachricht( int vonAccount, const char *nachricht,
                 cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
                 cs->addGesendet( klient->getUploadBytes( 1 ) );
                 klient->trenne();
-                klient = klient->release();
+                klient = (Klient*)klient->release();
             }
             delete[]ip;
         }
@@ -3134,16 +3134,16 @@ bool MSGWeiterleitung::spielerLeavestChatroom( int accountId, int chatroomId )
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
                 if( res )
                 {
-                    ret = ret & klient->sendeEncrypted( (char *)& accountId, 4 );
-                    ret = ret & klient->sendeEncrypted( (char *)& account, 4 );
-                    ret = ret & klient->sendeEncrypted( (char *)& chatroomId, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&accountId, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&account, 4 );
+                    ret = ret & klient->sendeEncrypted( (char *)&chatroomId, 4 );
                     ret = ret & klient->getNachrichtEncrypted( &res, 1 );
                 }
                 ret = (char)ret & res;
                 cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
                 cs->addGesendet( klient->getUploadBytes( 1 ) );
                 klient->trenne();
-                klient = klient->release();
+                klient = (Klient*)klient->release();
             }
             delete[]ip;
         }
@@ -3183,15 +3183,15 @@ bool MSGWeiterleitung::freundEinladungAbgelehnt( int accountId, int zuAccountId
             ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             if( res )
             {
-                ret = ret & klient->sendeEncrypted( (char *)& accountId, 4 );
-                ret = ret & klient->sendeEncrypted( (char *)& zuAccountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&accountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&zuAccountId, 4 );
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             }
             ret = (char)ret & res;
             cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
             cs->addGesendet( klient->getUploadBytes( 1 ) );
             klient->trenne();
-            klient = klient->release();
+            klient = (Klient*)klient->release();
         }
         delete[]ip;
     }
@@ -3229,16 +3229,16 @@ bool MSGWeiterleitung::chatroomEinladungAbgelehnt( int accountId, int chatroomId
             ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             if( res )
             {
-                ret = ret & klient->sendeEncrypted( (char *)& accountId, 4 );
-                ret = ret & klient->sendeEncrypted( (char *)& zuAccountId, 4 );
-                ret = ret & klient->sendeEncrypted( (char *)& chatroomId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&accountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&zuAccountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&chatroomId, 4 );
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             }
             ret = (char)ret & res;
             cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
             cs->addGesendet( klient->getUploadBytes( 1 ) );
             klient->trenne();
-            klient = klient->release();
+            klient = (Klient*)klient->release();
         }
         delete[]ip;
     }
@@ -3279,16 +3279,16 @@ bool MSGWeiterleitung::fehler( int zuAccountId, const char *fehler )
             ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             if( res )
             {
-                ret = ret & klient->sendeEncrypted( (char *)& zuAccountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&zuAccountId, 4 );
                 ret = ret & klient->sendeEncrypted( &len, 1 );
-                ret = ret & klient->sendeEncrypted( (char *)& fehler, len );
+                ret = ret & klient->sendeEncrypted( (char *)&fehler, len );
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             }
             ret = (char)ret & res;
             cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
             cs->addGesendet( klient->getUploadBytes( 1 ) );
             klient->trenne();
-            klient = klient->release();
+            klient = (Klient*)klient->release();
         }
         delete[]ip;
     }
@@ -3326,15 +3326,15 @@ bool MSGWeiterleitung::chatroomAdmin( int chatroomId, int zuAccountId )
             ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             if( res )
             {
-                ret = ret & klient->sendeEncrypted( (char *)& zuAccountId, 4 );
-                ret = ret & klient->sendeEncrypted( (char *)& chatroomId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&zuAccountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&chatroomId, 4 );
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             }
             ret = (char)ret & res;
             cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
             cs->addGesendet( klient->getUploadBytes( 1 ) );
             klient->trenne();
-            klient = klient->release();
+            klient = (Klient*)klient->release();
         }
         delete[]ip;
     }
@@ -3372,15 +3372,15 @@ bool MSGWeiterleitung::chatroomKick( int chatroomId, int accountId )
             ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             if( res )
             {
-                ret = ret & klient->sendeEncrypted( (char *)& accountId, 4 );
-                ret = ret & klient->sendeEncrypted( (char *)& chatroomId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&accountId, 4 );
+                ret = ret & klient->sendeEncrypted( (char *)&chatroomId, 4 );
                 ret = ret & klient->getNachrichtEncrypted( &res, 1 );
             }
             ret = (char)ret & res;
             cs->addEmpfangen( klient->getDownloadBytes( 1 ) );
             cs->addGesendet( klient->getUploadBytes( 1 ) );
             klient->trenne();
-            klient = klient->release();
+            klient = (Klient*)klient->release();
         }
         delete[]ip;
     }

+ 6 - 4
ChatServer/ChatServer.vcxproj

@@ -64,7 +64,7 @@
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <RemoteProjectDir>$(RemoteRootDir)/Server/$(ProjectName)/debug</RemoteProjectDir>
-    <IncludePath>..\..\..\..\Allgemein\Framework;..\..\..\..\Allgemein\Network\Network;..\..\..\..\Allgemein\sql\sql;../../../Framework/debug;../../../Network/debug;../../../sql/debug;$(IncludePath)</IncludePath>
+    <IncludePath>..\..\..\..\Allgemein\Framework;..\..\..\..\Allgemein\Network\Network;..\..\..\..\Allgemein\sql\sql;../../../Framework/debug;../../../Network/debug/Network;../../../sql/debug/sql;$(IncludePath)</IncludePath>
     <TargetExt />
     <OutDir>$(RemoteRootDir)/Server/$(ProjectName)/debug/</OutDir>
     <IntDir>$(RemoteRootDir)/Server/$(ProjectName)/debug/</IntDir>
@@ -72,7 +72,7 @@
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <RemoteProjectDir>$(RemoteRootDir)/Server/$(ProjectName)/release</RemoteProjectDir>
-    <IncludePath>..\..\..\..\Allgemein\Framework;..\..\..\..\Allgemein\Network\Network;..\..\..\..\Allgemein\sql\sql;../../../Framework/release;../../../Network/release;../../../sql/release;$(IncludePath)</IncludePath>
+    <IncludePath>..\..\..\..\Allgemein\Framework;..\..\..\..\Allgemein\Network\Network;..\..\..\..\Allgemein\sql\sql;../../../Framework/release;../../../Network/release/Network;../../../sql/release/sql;$(IncludePath)</IncludePath>
     <TargetExt />
     <OutDir>$(RemoteRootDir)/Server/$(ProjectName)/release/</OutDir>
     <IntDir>$(RemoteRootDir)/Server/$(ProjectName)/release/</IntDir>
@@ -89,9 +89,10 @@
   </ItemGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
     <Link>
-      <LibraryDependencies>dbgFramework;dbgNetwork;dbgSQL;pq;pthread</LibraryDependencies>
+      <LibraryDependencies>dbgFramework;dbgNetwork;dbgSQL;pq;pthread;ssl</LibraryDependencies>
       <AdditionalLibraryDirectories>$(RemoteRootDir)/sql/debug;$(RemoteRootDir)/Network/debug;$(RemoteRootDir)/Framework/debug;/usr/lib/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>-Wl,-rpath,../lib %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(RemoteProjectDir)/$(TargetName)$(TargetExt)</OutputFile>
     </Link>
     <ClCompile>
       <AdditionalOptions>-Wl,-rpath,../lib %(AdditionalOptions)</AdditionalOptions>
@@ -100,9 +101,10 @@
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
     <Link>
-      <LibraryDependencies>Framework;Network;SQL;pq;pthread</LibraryDependencies>
+      <LibraryDependencies>Framework;Network;SQL;pq;pthread;ssl</LibraryDependencies>
       <AdditionalLibraryDirectories>$(RemoteRootDir)/sql/release;$(RemoteRootDir)/Network/release;$(RemoteRootDir)/Framework/release;/usr/lib/;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>-Wl,-rpath,../lib %(AdditionalOptions)</AdditionalOptions>
+      <OutputFile>$(RemoteProjectDir)/$(TargetName)$(TargetExt)</OutputFile>
     </Link>
     <ClCompile>
       <AdditionalOptions>-Wl,-rpath,../lib %(AdditionalOptions)</AdditionalOptions>

+ 526 - 541
ChatServer/Datenbank.cpp

@@ -4,16 +4,16 @@
 // Inhalt der CSDatenbank Klasse aus Datenbank.h
 // Konstruktor
 CSDatenbank::CSDatenbank( InitDatei *zIni )
+    : ReferenceCounter()
 {
-	datenbank = new Datenbank( zIni->zWert( "DBBenutzer" )->getText(), zIni->zWert( "DBPasswort" )->getText(),
-							   zIni->zWert( "DBName" )->getText(), zIni->zWert( "DBIP" )->getText(),
-							   (unsigned short)TextZuInt( zIni->zWert( "DBPort" )->getText(), 10 ) );
+    datenbank = new Datenbank( zIni->zWert( "DBBenutzer" )->getText(), zIni->zWert( "DBPasswort" )->getText(),
+                               zIni->zWert( "DBName" )->getText(), zIni->zWert( "DBIP" )->getText(),
+                               (unsigned short)TextZuInt( zIni->zWert( "DBPort" )->getText(), 10 ) );
     if( !datenbank->istOk() )
     {
         std::cout << "CS: Die Verbindung zur Datenbank konnte nicht hergestellt werden.\nDas Programm wird beendet.";
         exit( 1 );
     }
-	ref = 1;
     Text befehl = "SELECT port, admin_port  FROM server WHERE id = ";
     befehl += zIni->zWert( "ServerId" )->getText();
     lock();
@@ -31,7 +31,7 @@ CSDatenbank::CSDatenbank( InitDatei *zIni )
 // Destruktor
 CSDatenbank::~CSDatenbank()
 {
-	datenbank->release();
+    datenbank->release();
 }
 
 // nicht constant
@@ -47,661 +47,646 @@ void CSDatenbank::unlock()
 
 int CSDatenbank::istAdministrator( const char *name, const char *passwort )
 {
-	Text *befehl = new Text( "SELECT id FROM benutzer WHERE name = '" );
-	Text n( name );
-	n.ersetzen( "'", "''" );
-	befehl->append( (char*)n );
-	befehl->append( "' AND passwort = md5('" );
-	Text p( passwort );
-	p.ersetzen( "'", "''" );
-	befehl->append( (char*)p );
-	befehl->append( "')" );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	int ret = 0;
-	if( res.zeilenAnzahl > 0 )
-		ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-	res.destroy();
-	return ret;
+    Text *befehl = new Text( "SELECT id FROM benutzer WHERE name = '" );
+    Text n( name );
+    n.ersetzen( "'", "''" );
+    befehl->append( (char *)n );
+    befehl->append( "' AND passwort = md5('" );
+    Text p( passwort );
+    p.ersetzen( "'", "''" );
+    befehl->append( (char *)p );
+    befehl->append( "')" );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    int ret = 0;
+    if( res.zeilenAnzahl > 0 )
+        ret = TextZuInt( res.values[ 0 ].getText(), 10 );
+    res.destroy();
+    return ret;
 }
 
 bool CSDatenbank::adminHatRecht( int id, int recht )
 {
-	Text *befehl = new Text( "SELECT * FROM benutzer_rechte WHERE benutzer_id = " );
-	befehl->append( id );
-	befehl->append( " AND rechte_id = " );
-	befehl->append( recht );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	int ret = datenbank->getZeilenAnzahl();
-	unlock();
-	befehl->release();
-	return ret != 0;
+    Text *befehl = new Text( "SELECT * FROM benutzer_rechte WHERE benutzer_id = " );
+    befehl->append( id );
+    befehl->append( " AND rechte_id = " );
+    befehl->append( recht );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    int ret = datenbank->getZeilenAnzahl();
+    unlock();
+    befehl->release();
+    return ret != 0;
 }
 
 bool CSDatenbank::proveKlient( int num, int sNum )
 {
-	Text *befehl = new Text( "SELECT * FROM server_client WHERE server_id = " );
-	befehl->append( sNum );
-	befehl->append( " AND client_id = " );
-	befehl->append( num );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	bool ret = 0;
-	if( res.zeilenAnzahl == 1 )
-		ret = 1;
-	res.destroy();
-	return ret;
+    Text *befehl = new Text( "SELECT * FROM server_client WHERE server_id = " );
+    befehl->append( sNum );
+    befehl->append( " AND client_id = " );
+    befehl->append( num );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    bool ret = 0;
+    if( res.zeilenAnzahl == 1 )
+        ret = 1;
+    res.destroy();
+    return ret;
 }
 
 Text *CSDatenbank::getKlientKey( int cId )
 {
-	lock();
-	if( !datenbank->befehl( Text( "SELECT schluessel FROM client WHERE id = " ) += cId ) )
-	{
-		unlock();
-		return 0;
-	}
-	Result res = datenbank->getResult();
-	unlock();
-	if( !res.zeilenAnzahl )
-	{
-		res.destroy();
-		return 0;
-	}
-	Text *ret = new Text( res.values[ 0 ].getText() );
-	res.destroy();
-	return ret;
+    lock();
+    if( !datenbank->befehl( Text( "SELECT schluessel FROM client WHERE id = " ) += cId ) )
+    {
+        unlock();
+        return 0;
+    }
+    Result res = datenbank->getResult();
+    unlock();
+    if( !res.zeilenAnzahl )
+    {
+        res.destroy();
+        return 0;
+    }
+    Text *ret = new Text( res.values[ 0 ].getText() );
+    res.destroy();
+    return ret;
 }
 
 void CSDatenbank::unregisterKlient( int num, int sNum )
 {
-	Text *befehl = new Text( "DELETE FROM server_client WHERE client_id = " );
-	befehl->append( num );
-	befehl->append( " AND server_id = " );
-	befehl->append( sNum );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	int za = datenbank->getZeilenAnzahl();
-	unlock();
-	if( za == 1 )
-	{
-		befehl->setText( "UPDATE server SET tasks = tasks - 1 WHERE id = " );
-		befehl->append( sNum );
-		lock();
-		datenbank->befehl( befehl->getText() );
-		unlock();
-	}
-	befehl->release();
+    Text *befehl = new Text( "DELETE FROM server_client WHERE client_id = " );
+    befehl->append( num );
+    befehl->append( " AND server_id = " );
+    befehl->append( sNum );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    int za = datenbank->getZeilenAnzahl();
+    unlock();
+    if( za == 1 )
+    {
+        befehl->setText( "UPDATE server SET tasks = tasks - 1 WHERE id = " );
+        befehl->append( sNum );
+        lock();
+        datenbank->befehl( befehl->getText() );
+        unlock();
+    }
+    befehl->release();
 }
 
 bool CSDatenbank::setServerStatus( int id, int status )
 {
-	Text *befehl = new Text( "UPDATE server SET server_status_id = " );
-	*befehl += status;
-	*befehl += "WHERE id = ";
-	*befehl += id;
-	lock();
-	if( !datenbank->befehl( befehl->getText() ) )
-	{
-		unlock();
-		befehl->release();
-		return 0;
-	}
-	bool ret = datenbank->getZeilenAnzahl() != 0;
-	unlock();
-	befehl->release();
-	return ret;
+    Text *befehl = new Text( "UPDATE server SET server_status_id = " );
+    *befehl += status;
+    *befehl += "WHERE id = ";
+    *befehl += id;
+    lock();
+    if( !datenbank->befehl( befehl->getText() ) )
+    {
+        unlock();
+        befehl->release();
+        return 0;
+    }
+    bool ret = datenbank->getZeilenAnzahl() != 0;
+    unlock();
+    befehl->release();
+    return ret;
 }
 
 bool CSDatenbank::setMaxClients( int id, int maxC )
 {
-	Text *befehl = new Text( "UPDATE server SET max_tasks = " );
-	befehl->append( maxC );
-	befehl->append( " WHERE id = " );
-	befehl->append( id );
-	lock();
-	if( !datenbank->befehl( befehl->getText() ) )
-	{
-		unlock();
-		befehl->release();
-		return 0;
-	}
-	bool ret = datenbank->getZeilenAnzahl() > 0;
-	unlock();
-	befehl->release();
-	return ret;
+    Text *befehl = new Text( "UPDATE server SET max_tasks = " );
+    befehl->append( maxC );
+    befehl->append( " WHERE id = " );
+    befehl->append( id );
+    lock();
+    if( !datenbank->befehl( befehl->getText() ) )
+    {
+        unlock();
+        befehl->release();
+        return 0;
+    }
+    bool ret = datenbank->getZeilenAnzahl() > 0;
+    unlock();
+    befehl->release();
+    return ret;
 }
 
 bool CSDatenbank::serverIstNichtPausiert( int id )
 {
-	Text *befehl = new Text( "SELECT server_status_id FROM server WHERE id = " );
-	befehl->append( id );
-	lock();
-	if( !datenbank->befehl( befehl->getText() ) )
-	{
-		unlock();
-		befehl->release();
-		return 0;
-	}
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	if( !res.zeilenAnzahl )
-	{
-		res.destroy();
-		return 0;
-	}
-	bool ret = (int)res.values[ 0 ] == 3;
-	res.destroy();
-	return ret;
+    Text *befehl = new Text( "SELECT server_status_id FROM server WHERE id = " );
+    befehl->append( id );
+    lock();
+    if( !datenbank->befehl( befehl->getText() ) )
+    {
+        unlock();
+        befehl->release();
+        return 0;
+    }
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    if( !res.zeilenAnzahl )
+    {
+        res.destroy();
+        return 0;
+    }
+    bool ret = (int)res.values[ 0 ] == 3;
+    res.destroy();
+    return ret;
 }
 
 int CSDatenbank::getKlientAccountId( int klientId )
 {
-	Text *befehl = new Text( "SELECT account_id FROM account_client WHERE client_id = " );
-	befehl->append( klientId );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	if( res.zeilenAnzahl )
-	{
-		int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-		res.destroy();
-		return ret;
-	}
-	res.destroy();
-	return 0;
+    Text *befehl = new Text( "SELECT account_id FROM account_client WHERE client_id = " );
+    befehl->append( klientId );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    if( res.zeilenAnzahl )
+    {
+        int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
+        res.destroy();
+        return ret;
+    }
+    res.destroy();
+    return 0;
 }
 
 int CSDatenbank::getAccountFreunde( int accountId, Array< int > *fAccountId )
 {
-	Text *befehl = new Text( "SELECT account_id AS freundId FROM freund WHERE freund_account_id = " );
-	befehl->append( accountId );
-	befehl->append( " UNION SELECT freund_account_id AS freundId FROM freund WHERE account_id = " );
-	befehl->append( accountId );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	int anzahl = res.zeilenAnzahl;
-	for( int i = 0; i < anzahl; i++ )
-		fAccountId->add( TextZuInt( res.values[ i ].getText(), 10 ), i );
-	res.destroy();
-	return anzahl;
+    Text *befehl = new Text( "SELECT account_id AS freundId FROM freund WHERE freund_account_id = " );
+    befehl->append( accountId );
+    befehl->append( " UNION SELECT freund_account_id AS freundId FROM freund WHERE account_id = " );
+    befehl->append( accountId );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    int anzahl = res.zeilenAnzahl;
+    for( int i = 0; i < anzahl; i++ )
+        fAccountId->add( TextZuInt( res.values[ i ].getText(), 10 ), i );
+    res.destroy();
+    return anzahl;
 }
 
 int CSDatenbank::getAccountOnlineFreunde( int accountId, Array< int > *fAccountId )
 {
-	Text *befehl = new Text( "SELECT freund.account_id AS freundId FROM freund, account_client WHERE freund.freund_account_id = " );
-	befehl->append( accountId );
-	befehl->append( " AND freund.account_id = account_client.account_id "
-					  "UNION SELECT freund.freund_account_id AS freundId FROM freund, account_client WHERE freund.account_id = " );
-	befehl->append( accountId );
-	befehl->append( " AND freund.freund_account_id = account_client.account_id " );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	int anzahl = res.zeilenAnzahl;
-	for( int i = 0; i < anzahl; i++ )
-		fAccountId->add( TextZuInt( res.values[ i ].getText(), 10 ), i );
-	res.destroy();
-	return anzahl;
+    Text *befehl = new Text( "SELECT freund.account_id AS freundId FROM freund, account_client WHERE freund.freund_account_id = " );
+    befehl->append( accountId );
+    befehl->append( " AND freund.account_id = account_client.account_id "
+                    "UNION SELECT freund.freund_account_id AS freundId FROM freund, account_client WHERE freund.account_id = " );
+    befehl->append( accountId );
+    befehl->append( " AND freund.freund_account_id = account_client.account_id " );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    int anzahl = res.zeilenAnzahl;
+    for( int i = 0; i < anzahl; i++ )
+        fAccountId->add( TextZuInt( res.values[ i ].getText(), 10 ), i );
+    res.destroy();
+    return anzahl;
 }
 
 bool CSDatenbank::accountNameChange( int accountId, const char *name )
 {
-	if( !name )
-		return 1;
-	Text *befehl = new Text( "UPDATE account SET ruf_name = '" );
-	Text n( name );
-	n.ersetzen( "'", "''" );
-	befehl->append( (char*)n );
-	befehl->append( "' WHERE id = " );
-	befehl->append( accountId );
-	bool ret = 0;
-	lock();
-	ret = datenbank->befehl( befehl->getText() );
-	unlock();
-	befehl->release();
-	return ret;
+    if( !name )
+        return 1;
+    Text *befehl = new Text( "UPDATE account SET ruf_name = '" );
+    Text n( name );
+    n.ersetzen( "'", "''" );
+    befehl->append( (char *)n );
+    befehl->append( "' WHERE id = " );
+    befehl->append( accountId );
+    bool ret = 0;
+    lock();
+    ret = datenbank->befehl( befehl->getText() );
+    unlock();
+    befehl->release();
+    return ret;
 }
 
 bool CSDatenbank::beendeFreundschaft( int accountId1, int accountId2 )
 {
-	Text *befehl = new Text( "DELETE FROM freund WHERE ( account_id = " );
-	befehl->append( accountId1 );
-	befehl->append( " AND freund_account_id = " );
-	befehl->append( accountId2 );
-	befehl->append( " ) OR ( freund_account_id = " );
-	befehl->append( accountId1 );
-	befehl->append( " AND account_id = " );
-	befehl->append( accountId2 );
-	befehl->append( " )" );
-	lock();
-	if( !datenbank->befehl( befehl->getText() ) )
-	{
-		unlock();
-		return 0;
-	}
-	unlock();
-	befehl->release();
-	return 1;
+    Text *befehl = new Text( "DELETE FROM freund WHERE ( account_id = " );
+    befehl->append( accountId1 );
+    befehl->append( " AND freund_account_id = " );
+    befehl->append( accountId2 );
+    befehl->append( " ) OR ( freund_account_id = " );
+    befehl->append( accountId1 );
+    befehl->append( " AND account_id = " );
+    befehl->append( accountId2 );
+    befehl->append( " )" );
+    lock();
+    if( !datenbank->befehl( befehl->getText() ) )
+    {
+        unlock();
+        return 0;
+    }
+    unlock();
+    befehl->release();
+    return 1;
 }
 
 bool CSDatenbank::proveFreundschaftsAnfrage( int vonAccountId, int zuAccountId )
 {
-	if( vonAccountId == zuAccountId )
-		return 0;
-	Text *befehl = new Text( "SELECT account_id AS freundId FROM freund WHERE freund_account_id = " );
-	befehl->append( vonAccountId );
-	befehl->append( " AND freund.account_id = " );
-	befehl->append( zuAccountId );
-	befehl->append( "UNION SELECT freund_account_id AS freundId FROM freund WHERE freund_account_id = " );
-	befehl->append( zuAccountId );
-	befehl->append( " AND freund.account_id = " );
-	befehl->append( vonAccountId );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	bool ret = res.zeilenAnzahl == 0;
-	res.destroy();
-	return ret;
+    if( vonAccountId == zuAccountId )
+        return 0;
+    Text *befehl = new Text( "SELECT account_id AS freundId FROM freund WHERE freund_account_id = " );
+    befehl->append( vonAccountId );
+    befehl->append( " AND freund.account_id = " );
+    befehl->append( zuAccountId );
+    befehl->append( "UNION SELECT freund_account_id AS freundId FROM freund WHERE freund_account_id = " );
+    befehl->append( zuAccountId );
+    befehl->append( " AND freund.account_id = " );
+    befehl->append( vonAccountId );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    bool ret = res.zeilenAnzahl == 0;
+    res.destroy();
+    return ret;
 }
 
 bool CSDatenbank::saveFreundschaftsAnfrage( int vonAccountId, int zuAccountId )
 {
-	Text *befehl = new Text( "SELECT account_id FROM freund_anfrage WHERE ( account_id = " );
-	befehl->append( vonAccountId );
-	befehl->append( " AND freund_id = " );
-	befehl->append( zuAccountId );
-	befehl->append( " ) OR ( freund_id = " );
-	befehl->append( vonAccountId );
-	befehl->append( " AND account_id = " );
-	befehl->append( zuAccountId );
-	befehl->append( " )" );
-	lock();
-	if( !datenbank->befehl( befehl->getText() ) )
-	{
-		unlock();
-		befehl->release();
-		return 0;
-	}
-	Result res = datenbank->getResult();
-	unlock();
-	if( res.zeilenAnzahl )
-	{
-		res.destroy();
-		befehl->release();
-		return 1;
-	}
-	res.destroy();
-	befehl->setText( "INSERT INTO freund_anfrage( account_id, freund_id ) VALUES( " );
-	befehl->append( vonAccountId );
-	befehl->append( ", " );
-	befehl->append( zuAccountId );
-	befehl->append( " )" );
-	lock();
-	if( !datenbank->befehl( befehl->getText() ) )
-	{
-		unlock();
-		befehl->release();
-		return 0;
-	}
-	unlock();
-	befehl->release();
-	return 1;
+    Text *befehl = new Text( "SELECT account_id FROM freund_anfrage WHERE ( account_id = " );
+    befehl->append( vonAccountId );
+    befehl->append( " AND freund_id = " );
+    befehl->append( zuAccountId );
+    befehl->append( " ) OR ( freund_id = " );
+    befehl->append( vonAccountId );
+    befehl->append( " AND account_id = " );
+    befehl->append( zuAccountId );
+    befehl->append( " )" );
+    lock();
+    if( !datenbank->befehl( befehl->getText() ) )
+    {
+        unlock();
+        befehl->release();
+        return 0;
+    }
+    Result res = datenbank->getResult();
+    unlock();
+    if( res.zeilenAnzahl )
+    {
+        res.destroy();
+        befehl->release();
+        return 1;
+    }
+    res.destroy();
+    befehl->setText( "INSERT INTO freund_anfrage( account_id, freund_id ) VALUES( " );
+    befehl->append( vonAccountId );
+    befehl->append( ", " );
+    befehl->append( zuAccountId );
+    befehl->append( " )" );
+    lock();
+    if( !datenbank->befehl( befehl->getText() ) )
+    {
+        unlock();
+        befehl->release();
+        return 0;
+    }
+    unlock();
+    befehl->release();
+    return 1;
 }
 
 int CSDatenbank::getFreundschaftsAnfragen( int accountId, Array< int > *vonAccountIds )
 {
-	Text *befehl = new Text( "SELECT account_id FROM freund_anfrage WHERE freund_id = " );
-	befehl->append( accountId );
-	lock();
-	if( !datenbank->befehl( befehl->getText() ) )
-	{
-		unlock();
-		befehl->release();
-		return 0;
-	}
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->setText( "DELETE FROM freund_anfrage WHERE freund_id = " );
-	befehl->append( accountId ); lock();
-	if( !datenbank->befehl( befehl->getText() ) )
-	{
-		unlock();
-		befehl->release();
-		res.destroy();
-		return 0;
-	}
-	unlock();
-	befehl->release();
-	int anzahl = res.zeilenAnzahl;
-	for( int i = 0; i < anzahl; i++ )
-		vonAccountIds->set( res.values[ i ], i );
-	res.destroy();
-	return anzahl;
+    Text *befehl = new Text( "SELECT account_id FROM freund_anfrage WHERE freund_id = " );
+    befehl->append( accountId );
+    lock();
+    if( !datenbank->befehl( befehl->getText() ) )
+    {
+        unlock();
+        befehl->release();
+        return 0;
+    }
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->setText( "DELETE FROM freund_anfrage WHERE freund_id = " );
+    befehl->append( accountId ); lock();
+    if( !datenbank->befehl( befehl->getText() ) )
+    {
+        unlock();
+        befehl->release();
+        res.destroy();
+        return 0;
+    }
+    unlock();
+    befehl->release();
+    int anzahl = res.zeilenAnzahl;
+    for( int i = 0; i < anzahl; i++ )
+        vonAccountIds->set( res.values[ i ], i );
+    res.destroy();
+    return anzahl;
 }
 
 bool CSDatenbank::neueFreundschaft( int accountId1, int accountId2 )
 {
-	Text *befehl = new Text( "INSERT INTO freund VALUES( " );
-	befehl->append( accountId1 );
-	befehl->append( ", " );
-	befehl->append( accountId2 );
-	befehl->append( " )" );
-	lock();
-	bool ret = datenbank->befehl( befehl->getText() );
-	unlock();
-	befehl->release();
-	return ret;
+    Text *befehl = new Text( "INSERT INTO freund VALUES( " );
+    befehl->append( accountId1 );
+    befehl->append( ", " );
+    befehl->append( accountId2 );
+    befehl->append( " )" );
+    lock();
+    bool ret = datenbank->befehl( befehl->getText() );
+    unlock();
+    befehl->release();
+    return ret;
 }
 
 Text *CSDatenbank::getAccountRufName( int accountId )
 {
-	Text *befehl = new Text( "SELECT ruf_name FROM account WHERE id = " );
-	befehl->append( accountId );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	Text *ret = new Text( res.values[ 0 ].getText() );
-	res.destroy();
-	return ret;
+    Text *befehl = new Text( "SELECT ruf_name FROM account WHERE id = " );
+    befehl->append( accountId );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    Text *ret = new Text( res.values[ 0 ].getText() );
+    res.destroy();
+    return ret;
 }
 
 bool CSDatenbank::accountIstOnline( int accountId )
 {
-	Text *befehl = new Text( "SELECT * FROM account_client WHERE account_id = " );
-	befehl->append( accountId );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	int res = datenbank->getZeilenAnzahl();
-	unlock();
-	befehl->release();
-	return res != 0;
+    Text *befehl = new Text( "SELECT * FROM account_client WHERE account_id = " );
+    befehl->append( accountId );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    int res = datenbank->getZeilenAnzahl();
+    unlock();
+    befehl->release();
+    return res != 0;
 }
 
 bool CSDatenbank::accountIstImSpiel( int accountId )
 {
-	Text *befehl = new Text( "SELECT b.id FROM spiel_spieler a, spiel b WHERE b.spiel_status_id = 2 "
-							 "AND a.spiel_spieler_status_id = 5 AND a.spiel_id = b.id AND a.account_id = " );
-	befehl->append( accountId );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	int res = datenbank->getZeilenAnzahl();
-	unlock();
-	befehl->release();
-	return res != 0;
+    Text *befehl = new Text( "SELECT b.id FROM spiel_spieler a, spiel b WHERE b.spiel_status_id = 2 "
+                             "AND a.spiel_spieler_status_id = 5 AND a.spiel_id = b.id AND a.account_id = " );
+    befehl->append( accountId );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    int res = datenbank->getZeilenAnzahl();
+    unlock();
+    befehl->release();
+    return res != 0;
 }
 
 int CSDatenbank::getChatServerId( int accountId )
 {
-	Text *befehl = new Text( "SELECT a.server_id FROM server_client a, account_client b, server c "
-							 "WHERE a.client_id = b.client_id AND a.server_id = c.id AND c.server_typ_name = 'chat' AND b.account_id = " );
-	befehl->append( accountId );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	if( !res.zeilenAnzahl )
-	{
-		res.destroy();
-		return 0;
-	}
-	int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-	res.destroy();
-	return ret;
+    Text *befehl = new Text( "SELECT a.server_id FROM server_client a, account_client b, server c "
+                             "WHERE a.client_id = b.client_id AND a.server_id = c.id AND c.server_typ_name = 'chat' AND b.account_id = " );
+    befehl->append( accountId );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    if( !res.zeilenAnzahl )
+    {
+        res.destroy();
+        return 0;
+    }
+    int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
+    res.destroy();
+    return ret;
 }
 
 bool CSDatenbank::getChatServerIpPort( int serverId, unsigned short *port, char **ip )
 {
-	Text *befehl = new Text( "SELECT port, ip FROM server WHERE id = " );
-	befehl->append( serverId );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	if( !res.zeilenAnzahl )
-	{
-		res.destroy();
-		return 0;
-	}
-	*port = (unsigned short)TextZuInt( res.values[ 0 ].getText(), 10 );
-	int len = res.values[ 1 ].getLength();
-	char *ipTmp = new char[ len + 1 ];
-	ipTmp[ len ] = 0;
-	int i = 0;
-	for( char *c = res.values[ 1 ].getText(); i < len; c++ )
-	{
-		ipTmp[ i ] = *c;
-		i++;
-	}
-	res.destroy();
-	return 1;
+    Text *befehl = new Text( "SELECT port, ip FROM server WHERE id = " );
+    befehl->append( serverId );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    if( !res.zeilenAnzahl )
+    {
+        res.destroy();
+        return 0;
+    }
+    *port = (unsigned short)TextZuInt( res.values[ 0 ].getText(), 10 );
+    int len = res.values[ 1 ].getLength();
+    char *ipTmp = new char[ len + 1 ];
+    ipTmp[ len ] = 0;
+    int i = 0;
+    for( char *c = res.values[ 1 ].getText(); i < len; c++ )
+    {
+        ipTmp[ i ] = *c;
+        i++;
+    }
+    res.destroy();
+    return 1;
 }
 
 int CSDatenbank::getChatNachrichten( int accountId, Array< int > *vonAccount, RCArray< Text > *nachricht )
 {
-	Text *befehl = new Text( "SELECT von_account_id, nachricht FROM chat_nachricht WHERE zu_account_id = " );
-	befehl->append( accountId );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	if( !res.zeilenAnzahl )
-	{
-		befehl->release();
-		res.destroy();
-		return 0;
-	}
-	int ret = res.zeilenAnzahl;
-	for( int i = 0; i < ret; i++ )
-	{
-		vonAccount->add( TextZuInt( res.values[ i * 2 ].getText(), 10 ), i );
-		nachricht->add( new Text( res.values[ i * 2 + 1 ].getText() ), i );
-	}
-	res.destroy();
-	befehl->setText( "DELETE FROM chat_nachricht WHERE zu_account_id = " );
-	befehl->append( accountId );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	unlock();
-	befehl->release();
-	return ret;
+    Text *befehl = new Text( "SELECT von_account_id, nachricht FROM chat_nachricht WHERE zu_account_id = " );
+    befehl->append( accountId );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    if( !res.zeilenAnzahl )
+    {
+        befehl->release();
+        res.destroy();
+        return 0;
+    }
+    int ret = res.zeilenAnzahl;
+    for( int i = 0; i < ret; i++ )
+    {
+        vonAccount->add( TextZuInt( res.values[ i * 2 ].getText(), 10 ), i );
+        nachricht->add( new Text( res.values[ i * 2 + 1 ].getText() ), i );
+    }
+    res.destroy();
+    befehl->setText( "DELETE FROM chat_nachricht WHERE zu_account_id = " );
+    befehl->append( accountId );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    unlock();
+    befehl->release();
+    return ret;
 }
 
 bool CSDatenbank::speicherChatNachricht( int vonAccount, int zuAccount, const char *nachricht )
 {
-	if( !nachricht )
-		return 1;
-	Text *befehl = new Text( "INSERT INTO chat_nachricht VALUES( " );
-	befehl->append( vonAccount );
-	befehl->append( ", " );
-	befehl->append( zuAccount );
-	befehl->append( ", '" );
-	Text n( nachricht );
-	n.ersetzen( "'", "''" );
-	befehl->append( (char*)n );
-	befehl->append( "' )" );
-	lock();
-	bool ret = datenbank->befehl( befehl->getText() );
-	unlock();
-	befehl->release();
-	return ret;
+    if( !nachricht )
+        return 1;
+    Text *befehl = new Text( "INSERT INTO chat_nachricht VALUES( " );
+    befehl->append( vonAccount );
+    befehl->append( ", " );
+    befehl->append( zuAccount );
+    befehl->append( ", '" );
+    Text n( nachricht );
+    n.ersetzen( "'", "''" );
+    befehl->append( (char *)n );
+    befehl->append( "' )" );
+    lock();
+    bool ret = datenbank->befehl( befehl->getText() );
+    unlock();
+    befehl->release();
+    return ret;
 }
 
 int CSDatenbank::getChatroomAccount( int chatroomId, Array< int > *accountId )
 {
-	Text *befehl = new Text( "SELECT account_id FROM chatroom_spieler WHERE chatroom_id = " );
-	befehl->append( chatroomId );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	if( !res.zeilenAnzahl )
-	{
-		res.destroy();
-		return 0;
-	}
-	int ret = res.zeilenAnzahl;
-	for( int i = 0; i < ret; i++ )
-		accountId->add( TextZuInt( res.values[ i ].getText(), 10 ), i );
-	res.destroy();
-	return ret;
+    Text *befehl = new Text( "SELECT account_id FROM chatroom_spieler WHERE chatroom_id = " );
+    befehl->append( chatroomId );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    if( !res.zeilenAnzahl )
+    {
+        res.destroy();
+        return 0;
+    }
+    int ret = res.zeilenAnzahl;
+    for( int i = 0; i < ret; i++ )
+        accountId->add( TextZuInt( res.values[ i ].getText(), 10 ), i );
+    res.destroy();
+    return ret;
 }
 
 int CSDatenbank::chatroomErstellen( int accountId, const char *name )
 {
-	Text *befehl = new Text( "INSERT INTO chatroom( admin_account_id, name ) VALUES( " );
-	befehl->append( accountId );
-	befehl->append( ", '" );
-	Text n( name );
-	n.ersetzen( "'", "''" );
-	befehl->append( (char*)n );
-	befehl->append( "' ) RETURNING id" );
-	lock();
-	if( !datenbank->befehl( befehl->getText() ) )
-	{
-		unlock();
-		befehl->release();
-		return 0;
-	}
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->setText( "INSERT INTO chatroom_spieler VALUES( ( SELECT id FROM chatroom WHERE name = '" );
-	befehl->append( (char*)n );
-	befehl->append( "' ), " );
-	befehl->append( accountId );
-	befehl->append( " )" );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	unlock();
-	befehl->release();
-	if( !res.zeilenAnzahl )
-	{
-		res.destroy();
-		return 0;
-	}
-	int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-	res.destroy();
-	return ret;
+    Text *befehl = new Text( "INSERT INTO chatroom( admin_account_id, name ) VALUES( " );
+    befehl->append( accountId );
+    befehl->append( ", '" );
+    Text n( name );
+    n.ersetzen( "'", "''" );
+    befehl->append( (char *)n );
+    befehl->append( "' ) RETURNING id" );
+    lock();
+    if( !datenbank->befehl( befehl->getText() ) )
+    {
+        unlock();
+        befehl->release();
+        return 0;
+    }
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->setText( "INSERT INTO chatroom_spieler VALUES( ( SELECT id FROM chatroom WHERE name = '" );
+    befehl->append( (char *)n );
+    befehl->append( "' ), " );
+    befehl->append( accountId );
+    befehl->append( " )" );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    unlock();
+    befehl->release();
+    if( !res.zeilenAnzahl )
+    {
+        res.destroy();
+        return 0;
+    }
+    int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
+    res.destroy();
+    return ret;
 }
 
 bool CSDatenbank::proveChatroomEinladung( int vonAccount, int zuAccount, int chatroomId )
 {
-	Text *befehl = new Text( "SELECT pruef_chatroom_einladung( " );
-	befehl->append( chatroomId );
-	befehl->append( ", " );
-	befehl->append( vonAccount );
-	befehl->append( ", " );
-	befehl->append( zuAccount );
-	befehl->append( " )" );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	if( !res.zeilenAnzahl )
-	{
-		res.destroy();
-		return 0;
-	}
-	bool ret = res.values[ 0 ].istGleich( "t" );
-	res.destroy();
-	return ret;
+    Text *befehl = new Text( "SELECT pruef_chatroom_einladung( " );
+    befehl->append( chatroomId );
+    befehl->append( ", " );
+    befehl->append( vonAccount );
+    befehl->append( ", " );
+    befehl->append( zuAccount );
+    befehl->append( " )" );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    if( !res.zeilenAnzahl )
+    {
+        res.destroy();
+        return 0;
+    }
+    bool ret = res.values[ 0 ].istGleich( "t" );
+    res.destroy();
+    return ret;
 }
 
 bool CSDatenbank::chatroomBeitreten( int accountId, int chatroomId )
 {
-	Text *befehl = new Text( "INSERT INTO chatroom_spieler values( " );
-	befehl->append( chatroomId );
-	befehl->append( " , " );
-	befehl->append( accountId );
-	befehl->append( " )" );
-	lock();
-	bool ret = datenbank->befehl( befehl->getText() );
-	unlock();
-	befehl->release();
-	return ret;
+    Text *befehl = new Text( "INSERT INTO chatroom_spieler values( " );
+    befehl->append( chatroomId );
+    befehl->append( " , " );
+    befehl->append( accountId );
+    befehl->append( " )" );
+    lock();
+    bool ret = datenbank->befehl( befehl->getText() );
+    unlock();
+    befehl->release();
+    return ret;
 }
 
 int CSDatenbank::chatroomVerlassen( int accountId, int chatroomId )
 {
-	Text *befehl = new Text( "SELECT chatroom_verlassen( " );
-	befehl->append( chatroomId );
-	befehl->append( ", " );
-	befehl->append( accountId );
-	befehl->append( " )" );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	if( !res.zeilenAnzahl )
-	{
-		res.destroy();
-		return 0;
-	}
-	int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-	res.destroy();
-	return ret;
+    Text *befehl = new Text( "SELECT chatroom_verlassen( " );
+    befehl->append( chatroomId );
+    befehl->append( ", " );
+    befehl->append( accountId );
+    befehl->append( " )" );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    if( !res.zeilenAnzahl )
+    {
+        res.destroy();
+        return 0;
+    }
+    int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
+    res.destroy();
+    return ret;
 }
 
 int CSDatenbank::getChatroomAdmin( int chatroomId )
 {
-	Text *befehl = new Text( "SELECT admin_account_id FROM chatroom WHERE id = " );
-	befehl->append( chatroomId );
-	lock();
-	datenbank->befehl( befehl->getText() );
-	Result res = datenbank->getResult();
-	unlock();
-	befehl->release();
-	if( !res.zeilenAnzahl )
-	{
-		res.destroy();
-		return 0;
-	}
-	int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
-	res.destroy();
-	return ret;
+    Text *befehl = new Text( "SELECT admin_account_id FROM chatroom WHERE id = " );
+    befehl->append( chatroomId );
+    lock();
+    datenbank->befehl( befehl->getText() );
+    Result res = datenbank->getResult();
+    unlock();
+    befehl->release();
+    if( !res.zeilenAnzahl )
+    {
+        res.destroy();
+        return 0;
+    }
+    int ret = TextZuInt( res.values[ 0 ].getText(), 10 );
+    res.destroy();
+    return ret;
 }
 
 // constant
 Text *CSDatenbank::getLetzterFehler() const
 {
-	return datenbank->getLetzterFehler();
-}
-
-// Reference Counting
-CSDatenbank *CSDatenbank::getThis()
-{
-	ref++;
-	return this;
-}
-
-CSDatenbank *CSDatenbank::release()
-{
-	ref--;
-	if( !ref )
-		delete this;
-	return 0;
+    return datenbank->getLetzterFehler();
 }

+ 46 - 50
ChatServer/Datenbank.h

@@ -12,62 +12,58 @@ using namespace sql;
 
 namespace Admin_Recht
 {
-	const int CSStarten = 24;
-	const int CSBeenden = 25;
-	const int CSPausieren = 26;
-	const int CSMCChange = 27;
+    const int CSStarten = 24;
+    const int CSBeenden = 25;
+    const int CSPausieren = 26;
+    const int CSMCChange = 27;
 }
 
-class CSDatenbank
+class CSDatenbank : public virtual ReferenceCounter
 {
 private:
-	Datenbank *datenbank;
-	Critical cs;
-	int ref;
+    Datenbank *datenbank;
+    Critical cs;
 
 public:
-	// Konstruktor
-	CSDatenbank( InitDatei *zIni );
-	// Destruktor
-	~CSDatenbank();
-	// nicht constant
-	void lock();
-	void unlock();
-	int istAdministrator( const char *name, const char *passwort );
-	bool adminHatRecht( int id, int recht );
-	bool proveKlient( int num, int sNum );
-	Text *getKlientKey( int cId );
-	void unregisterKlient( int num, int sNum );
-	bool setServerStatus( int id, int status );
-	bool setMaxClients( int id, int maxC );
-	bool serverIstNichtPausiert( int id );
-	int getKlientAccountId( int klientId );
-	int getAccountFreunde( int accountId, Array< int > *fAccountId );
-	int getAccountOnlineFreunde( int accountId, Array< int > *fAccountId );
-	bool accountNameChange( int accountId, const char *name );
-	bool beendeFreundschaft( int accountId1, int accountId2 );
-	bool proveFreundschaftsAnfrage( int vonAccountId, int zuAccountId );
-	bool saveFreundschaftsAnfrage( int vonAccountId, int zuAccountId );
-	int getFreundschaftsAnfragen( int accountId, Array< int > *vonAccountIds );
-	bool neueFreundschaft( int accountId1, int accountId2 );
-	Text *getAccountRufName( int accountId );
-	bool accountIstOnline( int accountId );
-	bool accountIstImSpiel( int accountId );
-	int getChatServerId( int accountId );
-	bool getChatServerIpPort( int serverId, unsigned short *port, char **ip );
-	int getChatNachrichten( int accountId, Array< int > *vonAccount, RCArray< Text > *nachricht );
-	bool speicherChatNachricht( int vonAccount, int zuAccount, const char *nachricht );
-	int getChatroomAccount( int chatroomId, Array< int > *accountId );
-	int chatroomErstellen( int accountId, const char *name );
-	bool proveChatroomEinladung( int vonAccount, int zuAccount, int chatroomId );
-	bool chatroomBeitreten( int accountId, int chatroomId );
-	int chatroomVerlassen( int accountId, int chatroomId );
-	int getChatroomAdmin( int chatroomId );
-	// constant
-	Text *getLetzterFehler() const;
-	// Reference Counting
-	CSDatenbank *getThis();
-	CSDatenbank *release();
+    // Konstruktor
+    CSDatenbank( InitDatei *zIni );
+    // Destruktor
+    ~CSDatenbank();
+    // nicht constant
+    void lock();
+    void unlock();
+    int istAdministrator( const char *name, const char *passwort );
+    bool adminHatRecht( int id, int recht );
+    bool proveKlient( int num, int sNum );
+    Text *getKlientKey( int cId );
+    void unregisterKlient( int num, int sNum );
+    bool setServerStatus( int id, int status );
+    bool setMaxClients( int id, int maxC );
+    bool serverIstNichtPausiert( int id );
+    int getKlientAccountId( int klientId );
+    int getAccountFreunde( int accountId, Array< int > *fAccountId );
+    int getAccountOnlineFreunde( int accountId, Array< int > *fAccountId );
+    bool accountNameChange( int accountId, const char *name );
+    bool beendeFreundschaft( int accountId1, int accountId2 );
+    bool proveFreundschaftsAnfrage( int vonAccountId, int zuAccountId );
+    bool saveFreundschaftsAnfrage( int vonAccountId, int zuAccountId );
+    int getFreundschaftsAnfragen( int accountId, Array< int > *vonAccountIds );
+    bool neueFreundschaft( int accountId1, int accountId2 );
+    Text *getAccountRufName( int accountId );
+    bool accountIstOnline( int accountId );
+    bool accountIstImSpiel( int accountId );
+    int getChatServerId( int accountId );
+    bool getChatServerIpPort( int serverId, unsigned short *port, char **ip );
+    int getChatNachrichten( int accountId, Array< int > *vonAccount, RCArray< Text > *nachricht );
+    bool speicherChatNachricht( int vonAccount, int zuAccount, const char *nachricht );
+    int getChatroomAccount( int chatroomId, Array< int > *accountId );
+    int chatroomErstellen( int accountId, const char *name );
+    bool proveChatroomEinladung( int vonAccount, int zuAccount, int chatroomId );
+    bool chatroomBeitreten( int accountId, int chatroomId );
+    int chatroomVerlassen( int accountId, int chatroomId );
+    int getChatroomAdmin( int chatroomId );
+    // constant
+    Text *getLetzterFehler() const;
 };
 
 #endif

+ 32 - 32
ChatServer/main.cpp

@@ -7,33 +7,33 @@
 
 int main()
 {
-	struct rlimit core_limits;
-	core_limits.rlim_cur = core_limits.rlim_max = RLIM_INFINITY;
-	setrlimit(RLIMIT_CORE, &core_limits);
+    struct rlimit core_limits;
+    core_limits.rlim_cur = core_limits.rlim_max = RLIM_INFINITY;
+    setrlimit( RLIMIT_CORE, &core_limits );
 #ifdef DEBUG
     //chdir( "/ksg/Server/chat" );
 #endif
     Framework::initFramework();
-	Zeit *z = getZeit();
-	Text *pfad = new Text( "../log/chat/" );
-	pfad->append( z->getZeit( "y-m-d h-i-s.log" ) );
-	z->release();
-	DateiPfadErstellen( pfad->getThis() );
-	std::ofstream file;
-	file.open( pfad->getText() );
-	std::streambuf* sbuf = std::cout.rdbuf();
-	std::cout.rdbuf( file.rdbuf() );
-	pfad->release();
+    Zeit *z = getZeit();
+    Text *pfad = new Text( "../log/chat/" );
+    pfad->append( z->getZeit( "y-m-d h-i-s.log" ) );
+    z->release();
+    DateiPfadErstellen( pfad->getText() );
+    std::ofstream file;
+    file.open( pfad->getText() );
+    std::streambuf *sbuf = std::cout.rdbuf();
+    std::cout.rdbuf( file.rdbuf() );
+    pfad->release();
 
-	std::cout << "CS: Startet...\n";
-	std::cout << "CS: Lese init Datei ../data/csInit.ini ...\n";
-	InitDatei *dat = new InitDatei( "../data/csInit.ini" );
-	if( !dat->laden() )
-	{
-		std::cout << "CS: error: Datei konnte nicht gelesen werden. Das Programm wird geschlossen.\n";
-		dat->release();
-		exit( 1 );
-	}
+    std::cout << "CS: Startet...\n";
+    std::cout << "CS: Lese init Datei ../data/csInit.ini ...\n";
+    InitDatei *dat = new InitDatei( "../data/csInit.ini" );
+    if( !dat->laden() )
+    {
+        std::cout << "CS: error: Datei konnte nicht gelesen werden. Das Programm wird geschlossen.\n";
+        dat->release();
+        exit( 1 );
+    }
     const char *wichtig[] = { "ServerId", "DBBenutzer", "DBPasswort", "DBName", "DBIP", "DBPort", "Aktiv", "SSLPasswort", "SSLCert", "SSLKey" };
     for( const char *w : wichtig )
     {
@@ -45,17 +45,17 @@ int main()
         }
     }
 
-	ChatServer *cServer = new ChatServer( dat );
+    ChatServer *cServer = new ChatServer( dat );
 
-	std::cout << "CS: Der Admin Server läuft. Startforgang beendet.\n";
-	cServer->runn();
+    std::cout << "CS: Der Admin Server läuft. Startforgang beendet.\n";
+    cServer->runn();
 
-	cServer->ende();
-	cServer->release();
-	dat->release();
-	std::cout << "CS: Der Server ist heruntergefahren.\n";
-	file.close();
-	std::cout.rdbuf( sbuf );
+    cServer->ende();
+    cServer->release();
+    dat->release();
+    std::cout << "CS: Der Server ist heruntergefahren.\n";
+    file.close();
+    std::cout.rdbuf( sbuf );
     Framework::releaseFramework();
-	return 0;
+    return 0;
 }