From: Andrew M. <rh...@us...> - 2003-10-04 19:25:32
|
Update of /cvsroot/planeshift/planeshift/src/server In directory sc8-pr-cvs1:/tmp/cvs-serv22425 Modified Files: adminmanager.cpp authentserver.cpp chatmanager.cpp combatmanager.cpp creationmanager.cpp entitymanager.cpp exchangemanager.cpp gem.cpp groupmanager.cpp Log Message: "Manager" classes from A* to GroupManager have had changes made to report and handle message creation and parse failure. Index: adminmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/adminmanager.cpp,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** adminmanager.cpp 1 Sep 2003 04:22:47 -0000 1.39 --- adminmanager.cpp 4 Oct 2003 19:25:26 -0000 1.40 *************** *** 98,103 **** ADMIN_ITEM_REQUEST_TYPES, outBuffer ); ! msghandler->SendMessage(out.msg); ! } --- 98,103 ---- ADMIN_ITEM_REQUEST_TYPES, outBuffer ); ! if (out.valid) ! msghandler->SendMessage(out.msg); } *************** *** 137,141 **** { psAdminMessage msg(me); ! HandleMessage(me, msg); break; } --- 137,142 ---- { psAdminMessage msg(me); ! if (msg.valid) ! HandleMessage(me, msg); break; } *************** *** 143,147 **** { psAdminCmdMessage msg(me); ! HandleMessage(me, msg); break; } --- 144,149 ---- { psAdminCmdMessage msg(me); ! if (msg.valid) ! HandleMessage(me, msg); break; } *************** *** 164,168 **** { psSystemMessage newmsg(me->clientnum,MSG_INFO, "Item Created"); ! msghandler->SendMessage(newmsg.msg); } --- 166,171 ---- { psSystemMessage newmsg(me->clientnum,MSG_INFO, "Item Created"); ! if (newmsg.valid) ! msghandler->SendMessage(newmsg.msg); } *************** *** 262,266 **** { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only Admin can create Crystal Entries.\n"); ! msghandler->SendMessage(error.msg); return; } --- 265,270 ---- { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only Admin can create Crystal Entries.\n"); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 280,284 **** psSystemMessage error(me->clientnum,MSG_ERROR, "Could not create a new crystal entry."); ! msghandler->SendMessage(error.msg); return; } --- 284,289 ---- psSystemMessage error(me->clientnum,MSG_ERROR, "Could not create a new crystal entry."); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 286,290 **** // Done! psSystemMessage error(me->clientnum,MSG_INFO,"New Crystal Entry created!"); ! msghandler->SendMessage(error.msg); return; --- 291,296 ---- // Done! psSystemMessage error(me->clientnum,MSG_INFO,"New Crystal Entry created!"); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; *************** *** 304,308 **** { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only Admin can create NPCs.\n"); ! msghandler->SendMessage(error.msg); return; } --- 310,315 ---- { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only Admin can create NPCs.\n"); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 320,324 **** "'%s' was not found as a valid master NPC.", (const char *)msg.player); ! msghandler->SendMessage(error.msg); return; } --- 327,332 ---- "'%s' was not found as a valid master NPC.", (const char *)msg.player); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 338,343 **** { psSystemMessage error(me->clientnum,MSG_ERROR, ! "Could not copy the master NPC."); ! msghandler->SendMessage(error.msg); return; } --- 346,352 ---- { psSystemMessage error(me->clientnum,MSG_ERROR, ! "Could not copy the master NPC."); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 348,352 **** // Done! psSystemMessage error(me->clientnum,MSG_INFO,"New NPC created!"); ! msghandler->SendMessage(error.msg); */ return; --- 357,362 ---- // Done! psSystemMessage error(me->clientnum,MSG_INFO,"New NPC created!"); ! if (error.valid) ! msghandler->SendMessage(error.msg); */ return; *************** *** 366,370 **** { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only Admin can create items.\n"); ! msghandler->SendMessage(error.msg); return; } --- 376,381 ---- { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only Admin can create items.\n"); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 382,391 **** { psSystemMessage error(me->clientnum, MSG_INFO, "New Item %s added!",msg.item.GetData()); ! msghandler->SendMessage(error.msg); } else { psSystemMessage error(me->clientnum, MSG_INFO, "Can't create item %s!",msg.item.GetData()); ! msghandler->SendMessage(error.msg); } } --- 393,404 ---- { psSystemMessage error(me->clientnum, MSG_INFO, "New Item %s added!",msg.item.GetData()); ! if (error.valid) ! msghandler->SendMessage(error.msg); } else { psSystemMessage error(me->clientnum, MSG_INFO, "Can't create item %s!",msg.item.GetData()); ! if (error.valid) ! msghandler->SendMessage(error.msg); } } *************** *** 444,448 **** { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only Admin can create items.\n"); ! msghandler->SendMessage(error.msg); return; } --- 457,462 ---- { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only Admin can create items.\n"); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 453,457 **** { psSystemMessage error(me->clientnum,MSG_ERROR, "No NPC is targeted!\n"); ! msghandler->SendMessage(error.msg); return; } --- 467,472 ---- { psSystemMessage error(me->clientnum,MSG_ERROR, "No NPC is targeted!\n"); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 482,486 **** psSystemMessage admin(clientnum, level, buffer); ! msghandler->SendMessage(admin.msg); } } --- 497,502 ---- psSystemMessage admin(clientnum, level, buffer); ! if (admin.valid) ! msghandler->SendMessage(admin.msg); } } *************** *** 525,529 **** // Send race list back to client psAdminMessage mesg( clientnum, ADMIN_RACES_LIST, list.XML() ); ! msghandler->SendMessage(mesg.msg); } --- 541,546 ---- // Send race list back to client psAdminMessage mesg( clientnum, ADMIN_RACES_LIST, list.XML() ); ! if (mesg.valid) ! msghandler->SendMessage(mesg.msg); } *************** *** 545,549 **** list.XML() ); ! msghandler->SendMessage(mesg.msg); } --- 562,567 ---- list.XML() ); ! if (mesg.valid) ! msghandler->SendMessage(mesg.msg); } *************** *** 611,615 **** { psSystemMessage newmsg(clientnum,MSG_INFO, buffer); ! msghandler->SendMessage(newmsg.msg); } --- 629,634 ---- { psSystemMessage newmsg(clientnum,MSG_INFO, buffer); ! if (newmsg.valid) ! msghandler->SendMessage(newmsg.msg); } *************** *** 633,637 **** triggerList.XML()); ! msghandler->SendMessage( outmessage.msg ); triggers->Release(); } --- 652,657 ---- triggerList.XML()); ! if (outmessage.valid) ! msghandler->SendMessage( outmessage.msg ); triggers->Release(); } *************** *** 662,667 **** ADMIN_REQUEST_RESPONSES, responseList.XML() ); ! ! msghandler->SendMessage( outmesg.msg ); } --- 682,687 ---- ADMIN_REQUEST_RESPONSES, responseList.XML() ); ! if (outmesg.valid) ! msghandler->SendMessage( outmesg.msg ); } *************** *** 690,694 **** sprintf(buffer, "Dialog changes made"); psSystemMessage newmsg(clientnum,MSG_INFO, buffer); ! msghandler->SendMessage(newmsg.msg); } --- 710,715 ---- sprintf(buffer, "Dialog changes made"); psSystemMessage newmsg(clientnum,MSG_INFO, buffer); ! if (newmsg.valid) ! msghandler->SendMessage(newmsg.msg); } *************** *** 710,714 **** { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only Admin can kick players.\n"); ! msghandler->SendMessage(error.msg); return; } --- 731,736 ---- { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only Admin can kick players.\n"); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 719,723 **** { psSystemMessage error(me->clientnum,MSG_ERROR, "'%s' is not a valid player name.", (const char*)msg.player); ! msghandler->SendMessage(error.msg); return; } --- 741,746 ---- { psSystemMessage error(me->clientnum,MSG_ERROR, "'%s' is not a valid player name.", (const char*)msg.player); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 728,732 **** // Finally, notify the client who kicked the target psSystemMessage notify(me->clientnum,MSG_INFO, "You kicked '%s' off the server.",(const char*)msg.player); ! msghandler->SendMessage(notify.msg); } --- 751,756 ---- // Finally, notify the client who kicked the target psSystemMessage notify(me->clientnum,MSG_INFO, "You kicked '%s' off the server.",(const char*)msg.player); ! if (notify.valid) ! msghandler->SendMessage(notify.msg); } *************** *** 745,749 **** { psSystemMessage error(me->clientnum,MSG_ERROR, "SQL Error: %s", database->GetLastError()); ! msghandler->SendMessage(error.msg); return; } --- 769,774 ---- { psSystemMessage error(me->clientnum,MSG_ERROR, "SQL Error: %s", database->GetLastError()); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 751,755 **** // Tell client the petition was added: psSystemMessage notify(me->clientnum,MSG_INFO, "Your petition was successfully submitted!"); ! msghandler->SendMessage(notify.msg); } --- 776,781 ---- // Tell client the petition was added: psSystemMessage notify(me->clientnum,MSG_INFO, "Your petition was successfully submitted!"); ! if (notify.valid) ! msghandler->SendMessage(notify.msg); } *************** *** 787,791 **** Debug1(LOG_ANY,"Sending data to client concerning petition list..."); psPetitionMessage message(me->clientnum, &petitions, "List retrieved successfully.", true, PETITION_LIST); ! msghandler->SendMessage(message.msg); rs->Release(); } --- 813,818 ---- Debug1(LOG_ANY,"Sending data to client concerning petition list..."); psPetitionMessage message(me->clientnum, &petitions, "List retrieved successfully.", true, PETITION_LIST); ! if (message.valid) ! msghandler->SendMessage(message.msg); rs->Release(); } *************** *** 796,800 **** error.Format("SQL Error: %s", database->GetLastError()); psPetitionMessage message(me->clientnum, NULL, error, false, PETITION_LIST); ! msghandler->SendMessage(message.msg); } } --- 823,828 ---- error.Format("SQL Error: %s", database->GetLastError()); psPetitionMessage message(me->clientnum, NULL, error, false, PETITION_LIST); ! if (message.valid) ! msghandler->SendMessage(message.msg); } } *************** *** 814,818 **** { psPetitionMessage error(me->clientnum, NULL, database->GetLastError(), false, PETITION_CANCEL); ! msghandler->SendMessage(error.msg); return; } --- 842,847 ---- { psPetitionMessage error(me->clientnum, NULL, database->GetLastError(), false, PETITION_CANCEL); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 820,824 **** // Tell client deletion was successful: psPetitionMessage message(me->clientnum, NULL, "Cancel was successful.", true, PETITION_CANCEL); ! msghandler->SendMessage(message.msg); } --- 849,854 ---- // Tell client deletion was successful: psPetitionMessage message(me->clientnum, NULL, "Cancel was successful.", true, PETITION_CANCEL); ! if (message.valid) ! msghandler->SendMessage(message.msg); } *************** *** 837,841 **** { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only GMs can manage petitions.\n"); ! msghandler->SendMessage(error.msg); return; } --- 867,872 ---- { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only GMs can manage petitions.\n"); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 864,868 **** Debug1(LOG_ANY,"Sending data to GM concerning petitions..."); psPetitionMessage message(me->clientnum, &petitions, "List retrieved successfully.", true, PETITION_LIST, true); ! msghandler->SendMessage(message.msg); rs->Release(); } --- 895,900 ---- Debug1(LOG_ANY,"Sending data to GM concerning petitions..."); psPetitionMessage message(me->clientnum, &petitions, "List retrieved successfully.", true, PETITION_LIST, true); ! if (message.valid) ! msghandler->SendMessage(message.msg); rs->Release(); } *************** *** 873,877 **** error.Format("SQL Error: %s", database->GetLastError()); psPetitionMessage message(me->clientnum, NULL, error, false, PETITION_LIST, true); ! msghandler->SendMessage(message.msg); } } --- 905,910 ---- error.Format("SQL Error: %s", database->GetLastError()); psPetitionMessage message(me->clientnum, NULL, error, false, PETITION_LIST, true); ! if (message.valid) ! msghandler->SendMessage(message.msg); } } *************** *** 891,895 **** { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only GMs can manage petitions.\n"); ! msghandler->SendMessage(error.msg); return; } --- 924,929 ---- { psSystemMessage error(me->clientnum, MSG_INFO, "Access denied. Only GMs can manage petitions.\n"); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 927,931 **** { psPetitionMessage error(me->clientnum, NULL, database->GetLastError(), false, type, true); ! msghandler->SendMessage(error.msg); return; } --- 961,966 ---- { psPetitionMessage error(me->clientnum, NULL, database->GetLastError(), false, type, true); ! if (error.valid) ! msghandler->SendMessage(error.msg); return; } *************** *** 933,936 **** // Tell GM operation was successful: psPetitionMessage message(me->clientnum, NULL, "Successful", true, type, true); ! msghandler->SendMessage(message.msg); } --- 968,972 ---- // Tell GM operation was successful: psPetitionMessage message(me->clientnum, NULL, "Successful", true, type, true); ! if (message.valid) ! msghandler->SendMessage(message.msg); } Index: authentserver.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/authentserver.cpp,v retrieving revision 1.83 retrieving revision 1.84 diff -C2 -d -r1.83 -r1.84 *** authentserver.cpp 30 Sep 2003 02:51:59 -0000 1.83 --- authentserver.cpp 4 Oct 2003 19:25:26 -0000 1.84 *************** *** 107,111 **** psCharacterPickerMessage charpick( me ); ! psCharacterList charlist; --- 107,116 ---- psCharacterPickerMessage charpick( me ); ! if (!charpick.valid) ! { ! Debug1(LOG_NET,"Mangled psCharacterPickerMessage received.\n"); ! return; ! } ! psCharacterList charlist; *************** *** 127,131 **** client->SetName(charpick.characterName); psCharacterApprovedMessage out( me->clientnum ); ! msghandler->SendMessage( out.msg ); return; } --- 132,141 ---- client->SetName(charpick.characterName); psCharacterApprovedMessage out( me->clientnum ); ! if (out.valid) ! msghandler->SendMessage( out.msg ); ! else ! { ! Bug2("Could not generate a valid psCharacterApprovedMessage for character %s.\n",charpick.characterName.GetData()); ! } return; } *************** *** 138,141 **** --- 148,157 ---- psAuthenticationMessage msg(me); // This cracks message into members. + if (!msg.valid) + { + Debug1(LOG_NET,"Mangled psAuthenticationMessage received.\n"); + return; + } + /** * CHECK 1: Is Network protokol compatible? *************** *** 323,331 **** if (!msgstringsmessage) msgstringsmessage = new psMsgStringsMessage(me->clientnum, psserver->GetMsgStrings()); ! msghandler->SendMessage(msgstringsmessage->msg); ! psAuthApprovedMessage *message = new psAuthApprovedMessage(me->clientnum,client->GetPlayerID()); ! msghandler->SendMessage(message->msg); ! delete message; // Send out the character list to the auth'd player --- 339,354 ---- if (!msgstringsmessage) msgstringsmessage = new psMsgStringsMessage(me->clientnum, psserver->GetMsgStrings()); ! if (!msgstringsmessage->valid) ! { ! Bug1("Could not form a valid psMsgStringsMessage from Message Strings!\n"); ! delete msgstringsmessage; ! msgstringsmessage=NULL; ! } ! else ! msghandler->SendMessage(msgstringsmessage->msg); ! psAuthApprovedMessage message(me->clientnum,client->GetPlayerID()); ! if (message.valid) ! msghandler->SendMessage(message.msg); // Send out the character list to the auth'd player *************** *** 338,343 **** Notify3(LOG_CHARACTER, "Sending %s to client %d\n", character->name, me->clientnum ); MsgEntry* characterMsg = character->CreateMessage(); ! characterMsg->clientnum = me->clientnum; ! msghandler->SendMessage( characterMsg ); delete character; } --- 361,371 ---- Notify3(LOG_CHARACTER, "Sending %s to client %d\n", character->name, me->clientnum ); MsgEntry* characterMsg = character->CreateMessage(); ! if (characterMsg!=NULL && !(characterMsg->overrun)) ! { ! Debug3(LOG_NET,"Failed to send character %s to client %d.\n",character->name,me->clientnum); ! characterMsg->clientnum = me->clientnum; ! msghandler->SendMessage( characterMsg ); ! delete characterMsg; ! } delete character; } *************** *** 357,370 **** { psDisconnectMessage msg(client->GetClientNum(), client->GetActor()->GetEntity()->GetID(),reason); ! ! msghandler->Broadcast(msg.msg); ! // we don't need ACKs now ! msg.msg->priority = PRIORITY_LOW; ! msghandler->Broadcast(msg.msg, NetBase::BC_FINALPACKET); } else { psDisconnectMessage msg(client->GetClientNum(), 0, reason); ! msghandler->Broadcast(msg.msg, NetBase::BC_FINALPACKET); } } --- 385,405 ---- { psDisconnectMessage msg(client->GetClientNum(), client->GetActor()->GetEntity()->GetID(),reason); ! if (msg.valid) ! { ! msghandler->Broadcast(msg.msg); ! // we don't need ACKs now ! msg.msg->priority = PRIORITY_LOW; ! msghandler->Broadcast(msg.msg, NetBase::BC_FINALPACKET); ! } ! else ! { ! Bug2("Could not create a valid psDisconnectMessage for client %u.\n",client->GetClientNum()); ! } } else { psDisconnectMessage msg(client->GetClientNum(), 0, reason); ! if (msg.valid) ! msghandler->Broadcast(msg.msg, NetBase::BC_FINALPACKET); } } Index: chatmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/chatmanager.cpp,v retrieving revision 1.74 retrieving revision 1.75 diff -C2 -d -r1.74 -r1.75 *** chatmanager.cpp 30 Sep 2003 02:51:59 -0000 1.74 --- chatmanager.cpp 4 Oct 2003 19:25:26 -0000 1.75 *************** *** 117,120 **** --- 117,127 ---- psChatMessage msg(me); + // Dont + if (!msg.valid) + { + Debug2(LOG_NET,"Received unparsable psChatMessage from client %u.\n",me->clientnum); + return; + } + char *pType; msg.GetTypeText(pType); *************** *** 262,266 **** psSystemMessage errmsg(client->GetClientNum(),MSG_INFO, "You are not part of any group."); ! msghandler->SendMessage(errmsg.msg); } } --- 269,274 ---- psSystemMessage errmsg(client->GetClientNum(),MSG_INFO, "You are not part of any group."); ! if (errmsg.valid) ! msghandler->SendMessage(errmsg.msg); } } *************** *** 287,295 **** // Create a new message and send it to that person if found psChatMessage cmsg(p->GetClientNum(), who, msg.sText, msg.iChatType, msg.translate); ! msghandler->SendMessage(cmsg.msg); // Echo the message back to the speaker also psChatMessage cmsg2(clientfrom, msg.sPerson, msg.sText, CHAT_TELLSELF, msg.translate); ! msghandler->SendMessage(cmsg2.msg); } else --- 295,305 ---- // Create a new message and send it to that person if found psChatMessage cmsg(p->GetClientNum(), who, msg.sText, msg.iChatType, msg.translate); ! if (cmsg.valid) ! msghandler->SendMessage(cmsg.msg); // Echo the message back to the speaker also psChatMessage cmsg2(clientfrom, msg.sPerson, msg.sText, CHAT_TELLSELF, msg.translate); ! if (cmsg2.valid) ! msghandler->SendMessage(cmsg2.msg); } else *************** *** 303,307 **** psChatMessage newMsg(clientfrom, "Server", sMsg, msg.iChatType, msg.translate); ! msghandler->SendMessage(newMsg.msg); } } --- 313,318 ---- psChatMessage newMsg(clientfrom, "Server", sMsg, msg.iChatType, msg.translate); ! if (newMsg.valid) ! msghandler->SendMessage(newMsg.msg); } } *************** *** 332,336 **** // All NPC responses are now in the form of private tells. psChatMessage newMsg(client->GetClientNum(), target->GetName(), response, CHAT_TELL, false); ! msghandler->SendMessage(newMsg.msg); // This perception allows the superclient to know about the dialog. --- 343,348 ---- // All NPC responses are now in the form of private tells. psChatMessage newMsg(client->GetClientNum(), target->GetName(), response, CHAT_TELL, false); ! if (newMsg.valid) ! msghandler->SendMessage(newMsg.msg); // This perception allows the superclient to know about the dialog. Index: combatmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/combatmanager.cpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** combatmanager.cpp 3 Oct 2003 08:15:20 -0000 1.21 --- combatmanager.cpp 4 Oct 2003 19:25:26 -0000 1.22 *************** *** 97,101 **** // and (TBD) locks the player from movement psModeMessage mode(attacker->GetClientID(),psModeMessage::COMBAT); ! msghandler->SendMessage(mode.msg); } --- 97,106 ---- // and (TBD) locks the player from movement psModeMessage mode(attacker->GetClientID(),psModeMessage::COMBAT); ! if (mode.valid) ! msghandler->SendMessage(mode.msg); ! else ! { ! Debug2(LOG_NET,"Could not generate a valid psModeMessage to switch client %u into combat mode.\n",attacker->GetClientID()); ! } } *************** *** 110,117 **** psSystemMessage combat(attacker->GetClientID(),MSG_INFO,"You stop attacking."); ! msghandler->SendMessage(combat.msg); psModeMessage mode(attacker->GetClientID(),psModeMessage::NORMAL); ! msghandler->SendMessage(mode.msg); } --- 115,124 ---- psSystemMessage combat(attacker->GetClientID(),MSG_INFO,"You stop attacking."); ! if (combat.valid) ! msghandler->SendMessage(combat.msg); psModeMessage mode(attacker->GetClientID(),psModeMessage::NORMAL); ! if (mode.valid) ! msghandler->SendMessage(mode.msg); } *************** *** 425,433 **** -1); // no defense anims yet ! if (event->AttackerCID) ! { msghandler->SendMessage(ev.msg); } ! if (event->TargetCID) { ev.SetClientNum(event->TargetCID); // override preset cnum to send to new client --- 432,440 ---- -1); // no defense anims yet ! if (event->AttackerCID && ev.valid) ! { msghandler->SendMessage(ev.msg); } ! if (event->TargetCID && ev.valid) { ev.SetClientNum(event->TargetCID); // override preset cnum to send to new client *************** *** 458,462 **** event->target->FindAnimIndex("death") ); // no defense anims yet ! msghandler->SendMessage(death.msg); // TODO: Set mode to "dead" for this guy --- 465,474 ---- event->target->FindAnimIndex("death") ); // no defense anims yet ! if (death.valid) ! msghandler->SendMessage(death.msg); ! else ! { ! Debug2(LOG_NET,"Failed to generate a valid psCombatEventMesssage(death) to client id %u.\n",event->TargetCID); ! } // TODO: Set mode to "dead" for this guy *************** *** 479,486 **** event->target->FindAnimIndex("death") ); // no defense anims yet ! msghandler->SendMessage(death.msg); psModeMessage mode(event->AttackerCID,psModeMessage::NORMAL); ! msghandler->SendMessage(mode.msg); SetPlayerMode(event->attacker,PSCHARACTER_MODE_PEACE); --- 491,504 ---- event->target->FindAnimIndex("death") ); // no defense anims yet ! if (death.valid) ! msghandler->SendMessage(death.msg); ! else ! { ! Debug2(LOG_NET,"Failed to generate a valid psCombatEventMesssage(death) to client id %u.\n",event->AttackerCID); ! } psModeMessage mode(event->AttackerCID,psModeMessage::NORMAL); ! if (mode.valid) ! msghandler->SendMessage(mode.msg); SetPlayerMode(event->attacker,PSCHARACTER_MODE_PEACE); *************** *** 500,508 **** -1); // no defense anims yet ! if (event->AttackerCID) { msghandler->SendMessage(ev.msg); } ! if (event->TargetCID) { ev.SetClientNum(event->TargetCID); --- 518,526 ---- -1); // no defense anims yet ! if (event->AttackerCID && ev.valid) { msghandler->SendMessage(ev.msg); } ! if (event->TargetCID && ev.valid) { ev.SetClientNum(event->TargetCID); *************** *** 521,529 **** -1); // no defense anims yet ! if (event->AttackerCID) { msghandler->SendMessage(ev.msg); } ! if (event->TargetCID) { ev.SetClientNum(event->TargetCID); --- 539,547 ---- -1); // no defense anims yet ! if (event->AttackerCID && ev.valid) { msghandler->SendMessage(ev.msg); } ! if (event->TargetCID && ev.valid) { ev.SetClientNum(event->TargetCID); *************** *** 542,550 **** -1); // no defense anims yet ! if (event->AttackerCID) { msghandler->SendMessage(ev.msg); } ! if (event->TargetCID) { ev.SetClientNum(event->TargetCID); --- 560,568 ---- -1); // no defense anims yet ! if (event->AttackerCID && ev.valid) { msghandler->SendMessage(ev.msg); } ! if (event->TargetCID && ev.valid) { ev.SetClientNum(event->TargetCID); *************** *** 563,567 **** -1); // no defense anims yet ! if (event->AttackerCID) { msghandler->SendMessage(ev.msg); --- 581,585 ---- -1); // no defense anims yet ! if (event->AttackerCID && ev.valid) { msghandler->SendMessage(ev.msg); Index: creationmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/creationmanager.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** creationmanager.cpp 28 Sep 2003 02:56:49 -0000 1.6 --- creationmanager.cpp 4 Oct 2003 19:25:26 -0000 1.7 *************** *** 84,88 **** msg->Add( (int32_t)raceCPValues[raceID].value ); ! msgHandler->SendMessage(msg); return; } --- 84,93 ---- msg->Add( (int32_t)raceCPValues[raceID].value ); ! if (msg->overrun) ! { ! Bug1("psCharCreationManager::HandleMessage() would have overflowed message buffer.\n"); ! } ! else ! msgHandler->SendMessage(msg); return; } *************** *** 168,171 **** --- 173,181 ---- { psCreationChoiceMsg message(me); + if (!message.valid) + { + Debug2(LOG_NET,"Received unparsable psCreationChoiceMsg from client id %u.\n",me->clientnum); + return; + } psCreationChoiceMsg response( me->clientnum, parentData.Length(), MSG_CHARCREATE_PARENTS ); *************** *** 180,185 **** response.ConstructMessage(); ! ! msgHandler->SendMessage( response.msg ); } --- 190,199 ---- response.ConstructMessage(); ! if (response.valid) ! msgHandler->SendMessage( response.msg ); ! else ! { ! Bug2("Failed to construct a valid psCreationChoiceMsg for client id %u.\n",me->clientnum); ! } } Index: entitymanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/entitymanager.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** entitymanager.cpp 3 Oct 2003 23:11:27 -0000 1.6 --- entitymanager.cpp 4 Oct 2003 19:25:26 -0000 1.7 *************** *** 440,447 **** psUserActionMessage action(me); Client* client = clients->Find(me->clientnum); if (!client) { ! printf("User action from unknown client! Clientnum:%d\n",me->clientnum); return; } --- 440,453 ---- psUserActionMessage action(me); + if (!action.valid) + { + Debug2(LOG_NET,"Received unparsable psUserActionMessage from client id %u.\n",me->clientnum); + return; + } + Client* client = clients->Find(me->clientnum); if (!client) { ! Debug2(LOG_ANY,"User action from unknown client! Clientnum:%d\n",me->clientnum); return; } *************** *** 450,454 **** if (action.target && !object) { ! printf("User action on unknown entity! Id:%u\n",action.target); return; } --- 456,460 ---- if (action.target && !object) { ! Debug2(LOG_ANY,"User action on unknown entity! Id:%u\n",action.target); return; } *************** *** 481,484 **** --- 487,496 ---- { psCelPersistMessage pmsg(me); + if (!pmsg.valid) + { + Debug2(LOG_NET,"Received unparsable psCelPersistMesssage from client id %u.\n",me->clientnum); + return; + } + switch (pmsg.cmd) { Index: exchangemanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/exchangemanager.cpp,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** exchangemanager.cpp 3 Oct 2003 06:23:24 -0000 1.24 --- exchangemanager.cpp 4 Oct 2003 19:25:26 -0000 1.25 *************** *** 349,353 **** { psGUIExchangeMessage msg(me); ! HandleMessage(me, msg); break; } --- 349,358 ---- { psGUIExchangeMessage msg(me); ! if (msg.valid) ! HandleMessage(me, msg); ! else ! { ! Debug2(LOG_NET,"Received unparsable psGUIExchangeMessage from client %u.\n",me->clientnum); ! } break; } *************** *** 357,361 **** void ExchangeManager::HandleMessage(MsgEntry *me, psGUIExchangeMessage & msg) { ! printf("ExchangeManager::HandleMessage Exchange(%d,%s)\n",msg.command, (const char*)msg.commandData); Client* client = clients->Find(me->clientnum); --- 362,366 ---- void ExchangeManager::HandleMessage(MsgEntry *me, psGUIExchangeMessage & msg) { ! Debug3(LOG_EXCHANGES,"ExchangeManager::HandleMessage Exchange(%d,%s)\n",msg.command, (const char*)msg.commandData); Client* client = clients->Find(me->clientnum); *************** *** 689,694 **** psGUIExchangeMessage::CANCEL,""); ! msghandler->SendMessage(msg1.msg); ! msghandler->SendMessage(msg2.msg); if (client1) client1->GetCharacterData()->SetExchange(NULL); --- 694,710 ---- psGUIExchangeMessage::CANCEL,""); ! if (msg1.valid) ! msghandler->SendMessage(msg1.msg); ! else ! { ! Bug2("Failed to create psGUIExchangeMessage (cancel) for client %u.\n",client1->GetClientNum()); ! } ! ! if (msg2.valid) ! msghandler->SendMessage(msg2.msg); ! else ! { ! Bug2("Failed to create psGUIExchangeMessage (cancel) for client %u.\n",client2->GetClientNum()); ! } if (client1) client1->GetCharacterData()->SetExchange(NULL); *************** *** 767,771 **** psGUIExchangeMessage::INVENTORY, buff.GetData()); ! msghandler->SendMessage(outgoing.msg); return true; --- 783,793 ---- psGUIExchangeMessage::INVENTORY, buff.GetData()); ! if (outgoing.valid) ! msghandler->SendMessage(outgoing.msg); ! else ! { ! Bug2("Failed to create psGUIExchangeMessage (inventory) for client %u.\n",client->GetClientNum()); ! return false; ! } return true; *************** *** 810,814 **** psGUIExchangeMessage::OFFERING, buff.GetData()); ! msghandler->SendMessage(outgoing.msg); return true; --- 832,842 ---- psGUIExchangeMessage::OFFERING, buff.GetData()); ! if (outgoing.valid) ! msghandler->SendMessage(outgoing.msg); ! else ! { ! Bug2("Failed to create psGUIExchangeMessage (offering) for client %u.\n",client->GetClientNum()); ! return false; ! } return true; *************** *** 851,855 **** psGUIExchangeMessage::RECEIVING, buff.GetData()); ! msghandler->SendMessage(outgoing.msg); return true; --- 879,890 ---- psGUIExchangeMessage::RECEIVING, buff.GetData()); ! if (outgoing.valid) ! msghandler->SendMessage(outgoing.msg); ! else ! { ! Bug2("Failed to create psGUIExchangeMessage (receiving) for client %u.\n",exchange->GetTarget(from)); ! return false; ! } ! return true; *************** *** 869,873 **** psGUIExchangeMessage msg(clientnum, psGUIExchangeMessage::EXCHANGE,msgStr); ! msghandler->SendMessage(msg.msg); return true; --- 904,915 ---- psGUIExchangeMessage msg(clientnum, psGUIExchangeMessage::EXCHANGE,msgStr); ! if (msg.valid) ! msghandler->SendMessage(msg.msg); ! else ! { ! Bug2("Failed to create psGUIExchangeMessage (exchange) for client %u.\n",clientnum); ! return false; ! } ! return true; *************** *** 890,894 **** psGUIExchangeMessage clientMsg(client->GetClientNum(), psGUIExchangeMessage::STATUS,status); ! msghandler->SendMessage(clientMsg.msg); return true; --- 932,943 ---- psGUIExchangeMessage clientMsg(client->GetClientNum(), psGUIExchangeMessage::STATUS,status); ! if (clientMsg.valid) ! msghandler->SendMessage(clientMsg.msg); ! else ! { ! Bug2("Failed to create psGUIExchangeMessage (status) for client %u.\n",client->GetClientNum()); ! return false; ! } ! return true; *************** *** 905,909 **** psSystemMessage newmsg(client->GetClientNum() ,MSG_INFO, text); ! msghandler->SendMessage(newmsg.msg); return true; } --- 954,964 ---- psSystemMessage newmsg(client->GetClientNum() ,MSG_INFO, text); ! if (newmsg.valid) ! msghandler->SendMessage(newmsg.msg); ! else ! { ! Bug2("Failed to create psGUIExchangeMessage (inventory) for client %u.\n",client->GetClientNum()); ! return false; ! } return true; } Index: gem.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/gem.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** gem.cpp 3 Oct 2003 23:11:27 -0000 1.6 --- gem.cpp 4 Oct 2003 19:25:26 -0000 1.7 *************** *** 220,225 **** psStatDRMessage msg(actor->GetClientID(),actor->GetEntity()->GetID(),data); ! csRef<Group> group = actor->GetGroup(); ! group->Broadcast(msg.me); } else if ( actor->GetClientID() ) --- 220,232 ---- psStatDRMessage msg(actor->GetClientID(),actor->GetEntity()->GetID(),data); ! if (msg.valid) ! { ! csRef<Group> group = actor->GetGroup(); ! group->Broadcast(msg.msg); ! } ! else ! { ! Bug2("Failed to create a valid psStatDRMessage for client %u.\n",actor->GetClientID()); ! } } else if ( actor->GetClientID() ) *************** *** 229,233 **** continue; psStatDRMessage msg(actor->GetClientID(),actor->GetEntity()->GetID(),data); ! msghandler->SendMessage(msg.me); } } --- 236,245 ---- continue; psStatDRMessage msg(actor->GetClientID(),actor->GetEntity()->GetID(),data); ! if (msg.valid) ! msghandler->SendMessage(msg.msg); ! else ! { ! Bug2("Failed to create a valid psStatDRMessage for client %u.\n",actor->GetClientID()); ! } } } *************** *** 683,687 **** // Notify client to remove entity which is too far away now psDisconnectMessage msg(GetClientID() , obj->GetEntity()->GetID(),""); ! cel->msghandler->SendMessage(msg.msg); #ifdef PSPROXDEBUG --- 695,704 ---- // Notify client to remove entity which is too far away now psDisconnectMessage msg(GetClientID() , obj->GetEntity()->GetID(),""); ! if (msg.valid) ! cel->msghandler->SendMessage(msg.msg); ! else ! { ! Bug2("Failed to create valid psDisconnectMessage for client id %u.\n",GetClientID()); ! } #ifdef PSPROXDEBUG *************** *** 693,697 **** { psDisconnectMessage msg(obj->GetClientID(), entity->GetID(),""); ! cel->msghandler->SendMessage(msg.msg ); #ifdef PSPROXDEBUG printf("Removing %s from client %d.\n",entity->GetName(),obj->GetClientID()); --- 710,719 ---- { psDisconnectMessage msg(obj->GetClientID(), entity->GetID(),""); ! if (msg.valid) ! cel->msghandler->SendMessage(msg.msg ); ! else ! { ! Bug2("Failed to create valid psDisconnectMessage for client id %u.\n",obj->GetClientID()); ! } #ifdef PSPROXDEBUG printf("Removing %s from client %d.\n",entity->GetName(),obj->GetClientID()); *************** *** 1096,1101 **** psStatDRMessage msg(client->GetClientNum(),GetEntity()->GetID(),data); ! ! cel->msghandler->SendMessage(msg.me); } --- 1118,1127 ---- psStatDRMessage msg(client->GetClientNum(),GetEntity()->GetID(),data); ! if (msg.valid) ! cel->msghandler->SendMessage(msg.me); ! else ! { ! Bug2("Failed to create valid psStatDRMessage for client id %u.\n",client->GetClientNum(); ! } } *************** *** 1115,1119 **** { psStatDRMessage msg(cl->GetClientNum(),GetEntity()->GetID(),data); ! cel->msghandler->SendMessage(msg.me); } } --- 1141,1150 ---- { psStatDRMessage msg(cl->GetClientNum(),GetEntity()->GetID(),data); ! if (msg.valid) ! cel->msghandler->SendMessage(msg.msg); ! else ! { ! Bug2("Failed to create valid psStatDRMessage for client id %u.\n",cl->GetClientNum()); ! } } } Index: groupmanager.cpp =================================================================== RCS file: /cvsroot/planeshift/planeshift/src/server/groupmanager.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** groupmanager.cpp 30 Sep 2003 02:51:59 -0000 1.13 --- groupmanager.cpp 4 Oct 2003 19:25:26 -0000 1.14 *************** *** 191,194 **** --- 191,199 ---- { psGroupCmdMessage msg(me); + if (!msg.valid) + { + Debug2(LOG_NET,"Failed to parse psGroupCmdMessage from client %u.\n",me->clientnum); + return; + } *************** *** 420,424 **** sprintf(buff,"<GROUP ID=\"%d\" />",group->id); psGUIGroupMessage msg(client->GetClientID(),psGUIGroupMessage::GROUP,buff); ! SendMessage(msg.msg); } --- 425,434 ---- sprintf(buff,"<GROUP ID=\"%d\" />",group->id); psGUIGroupMessage msg(client->GetClientID(),psGUIGroupMessage::GROUP,buff); ! if (msg.valid) ! SendMessage(msg.msg); ! else ! { ! Bug2("Could not create a valid psGUIGroupMessage (group) for client %u.\n",client->GetClientID()); ! } } *************** *** 426,430 **** { psGUIGroupMessage msg(client->GetClientID(),psGUIGroupMessage::LEAVE,""); ! SendMessage(msg.msg); } --- 436,445 ---- { psGUIGroupMessage msg(client->GetClientID(),psGUIGroupMessage::LEAVE,""); ! if (msg.valid) ! SendMessage(msg.msg); ! else ! { ! Bug2("Could not create a valid psGUIGroupMessage (leave) for client %u.\n",client->GetClientID()); ! } } *************** *** 469,474 **** psChatMessage groupmsg(client->GetClientID(),"System",text,CHAT_GROUP, false); ! groupmsg.msg->Reset(); ! chatserver->HandleMessage(groupmsg.msg); } --- 484,496 ---- psChatMessage groupmsg(client->GetClientID(),"System",text,CHAT_GROUP, false); ! if (groupmsg.valid) ! { ! groupmsg.msg->Reset(); ! chatserver->HandleMessage(groupmsg.msg); ! } ! else ! { ! Bug2("Could not create a valid psChatMessage for client %u.\n",client->GetClientID()); ! } } |