diff options
Diffstat (limited to 'src/trinitycore/RASocket.cpp')
-rw-r--r-- | src/trinitycore/RASocket.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/trinitycore/RASocket.cpp b/src/trinitycore/RASocket.cpp index 36d6b497d3f..69295917d7c 100644 --- a/src/trinitycore/RASocket.cpp +++ b/src/trinitycore/RASocket.cpp @@ -44,7 +44,7 @@ unsigned int iUsers=0; ///< Number of activ typedef int(* pPrintf)(const char*,...); -void ParseCommand(pPrintf zprintf, char*command); +void ParseCommand(CliCommandHolder::Print*, char*command); /// RASocket constructor RASocket::RASocket(ISocketHandler &h): TcpSocket(h) @@ -222,7 +222,7 @@ void RASocket::OnRead() if(strlen(buff)) { sLog.outRALog("Got '%s' cmd.\n",buff); - ParseCommand(&RASocket::zprintf , buff); + sWorld.QueueCliCommand(&RASocket::zprint , buff); } else Sendf("TC>"); @@ -234,20 +234,23 @@ void RASocket::OnRead() } /// Output function -int RASocket::zprintf( const char * szText, ... ) +void RASocket::zprint( const char * szText ) { - if( !szText ) return 0; - va_list ap; - va_start(ap, szText); - /// \todo Remove buffer length here. Can be >1024 (e.g. list of users) - char *megabuffer=new char[1024]; - unsigned int sz=vsnprintf(megabuffer,1024,szText,ap); + if( !szText ) + return; + #ifdef RA_CRYPT - Encrypt(megabuffer,sz); - #endif - send(r,megabuffer,sz,0); + char *megabuffer=strdup(szText); + unsigned int sz=strlen(megabuffer); + Encrypt(megabuffer,sz); + send(r,megabuffer,sz,0); delete [] megabuffer; - va_end(ap); - return 0; + + #else + + unsigned int sz=strlen(szText); + send(r,szText,sz,0); + + #endif } |