Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: src/ChannelServer/ChannelServer.cpp
- ===================================================================
- --- src/ChannelServer/ChannelServer.cpp (revision 2118)
- +++ src/ChannelServer/ChannelServer.cpp (working copy)
- @@ -81,3 +83,8 @@
- }
- }
- }
- +
- +void ChannelServer::shutdown() {
- + connected = false;
- + ConnectionManager::Instance()->stop();
- +}
- \ No newline at end of file
- Index: src/ChannelServer/ChannelServer.h
- ===================================================================
- --- src/ChannelServer/ChannelServer.h (revision 2118)
- +++ src/ChannelServer/ChannelServer.h (working copy)
- @@ -39,6 +39,7 @@
- void loadData();
- void loadConfig();
- void listen();
- + void shutdown();
- void connectWorld();
- void sendToWorld(PacketCreator &packet);
- @@ -54,6 +55,7 @@
- void setMaxStats(int16_t max) { this->maxStats = max; }
- void setScrollingHeader(const string &message);
- void setWorldIp(uint32_t ip) { world_ip = ip; }
- + void setConnected(bool val) { connected = val; }
- int8_t getWorld() const { return world; }
- uint8_t getMaxMultiLevel() const { return maxMultiLevel; }
- @@ -66,6 +68,7 @@
- int32_t getDroprate() const { return droprate; }
- string getScrollingHeader() const { return scrollingHeader; }
- WorldServerConnectPlayer * getWorldPlayer() const { return worldPlayer; }
- + bool isConnected() const { return connected; }
- private:
- ChannelServer() {};
- static ChannelServer *singleton;
- @@ -86,6 +89,7 @@
- uint32_t login_ip;
- uint32_t world_ip;
- string scrollingHeader;
- + bool connected;
- };
- #endif
- Index: src/ChannelServer/WorldServerConnectHandler.cpp
- ===================================================================
- --- src/ChannelServer/WorldServerConnectHandler.cpp (revision 2118)
- +++ src/ChannelServer/WorldServerConnectHandler.cpp (working copy)
- void WorldServerConnectHandler::connectLogin(WorldServerConnectPlayer *player, PacketReader &packet) {
- int8_t worldid = packet.get<int8_t>();
- if (worldid != -1) {
- + ChannelServer::Instance()->setConnected(false);
- ChannelServer::Instance()->setWorld(worldid);
- ChannelServer::Instance()->setWorldIp(packet.get<uint32_t>());
- ChannelServer::Instance()->setWorldPort(packet.get<int16_t>());
- @@ -55,6 +62,7 @@
- ChannelServer::Instance()->setMaxStats(packet.get<int16_t>());
- ChannelServer::Instance()->listen();
- std::cout << "Handling channel " << channel << " on port " << port << std::endl;
- + ChannelServer::Instance()->setConnected(true);
- }
- else {
- std::cout << "Error: No channel to handle" << std::endl;
- Index: src/ChannelServer/WorldServerConnectPlayer.cpp
- ===================================================================
- --- src/ChannelServer/WorldServerConnectPlayer.cpp (revision 2118)
- +++ src/ChannelServer/WorldServerConnectPlayer.cpp (working copy)
- @@ -16,6 +16,7 @@
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
- #include "WorldServerConnectPlayer.h"
- +#include "ChannelServer.h"
- #include "BuffHolder.h"
- #include "InterHeader.h"
- #include "PacketReader.h"
- @@ -29,6 +30,13 @@
- type = InterChannelServer;
- }
- +WorldServerConnectPlayer::~WorldServerConnectPlayer() {
- + if (ChannelServer::Instance()->isConnected()) {
- + std::cout << "Disconnected from the worldserver. Shutting down..." << std::endl;
- + exit(6);
- + }
- +}
- +
- void WorldServerConnectPlayer::realHandleRequest(PacketReader &packet) {
- switch (packet.get<int16_t>()) {
- case INTER_LOGIN_CHANNEL_CONNECT: WorldServerConnectHandler::connectLogin(this, packet); break;
- Index: src/ChannelServer/WorldServerConnectPlayer.h
- ===================================================================
- --- src/ChannelServer/WorldServerConnectPlayer.h (revision 2118)
- +++ src/ChannelServer/WorldServerConnectPlayer.h (working copy)
- @@ -26,6 +26,7 @@
- class WorldServerConnectPlayer : public AbstractServerConnectPlayer {
- public:
- WorldServerConnectPlayer();
- + ~WorldServerConnectPlayer();
- void realHandleRequest(PacketReader &packet);
- void playerChangeChannel(int32_t playerid, uint16_t channel, PlayerActiveBuffs *playerbuffs);
- };
- Index: src/LoginServer/LoginServerAcceptPlayer.cpp
- ===================================================================
- --- src/LoginServer/LoginServerAcceptPlayer.cpp (revision 2118)
- +++ src/LoginServer/LoginServerAcceptPlayer.cpp (working copy)
- @@ -24,6 +24,14 @@
- #include "RankingCalculator.h"
- #include "Worlds.h"
- +LoginServerAcceptPlayer::~LoginServerAcceptPlayer() {
- + if (worldId != -1) {
- + Worlds::worlds[worldId]->connected = false;
- + Worlds::worlds[worldId]->channels.clear(); // Remove the channels (they will automaticly disconnect)
- + std::cout << "World " << (int32_t) worldId << " disconnected." << std::endl;
- + }
- +}
- +
- void LoginServerAcceptPlayer::realHandleRequest(PacketReader &packet) {
- if (!processAuth(packet, LoginServer::Instance()->getInterPassword())) return;
- switch (packet.get<int16_t>()) {
- Index: src/LoginServer/LoginServerAcceptPlayer.h
- ===================================================================
- --- src/LoginServer/LoginServerAcceptPlayer.h (revision 2118)
- +++ src/LoginServer/LoginServerAcceptPlayer.h (working copy)
- @@ -25,6 +25,7 @@
- class LoginServerAcceptPlayer : public AbstractServerAcceptPlayer {
- public:
- + ~LoginServerAcceptPlayer();
- void realHandleRequest(PacketReader &packet);
- void authenticated(int8_t type);
- Index: src/LoginServer/Worlds.cpp
- ===================================================================
- --- src/LoginServer/Worlds.cpp (revision 2118)
- +++ src/LoginServer/Worlds.cpp (working copy)
- @@ -86,6 +87,7 @@
- }
- int8_t Worlds::connectChannelServer(LoginServerAcceptPlayer *player) {
- + player->setWorldId(-1);
- int8_t worldid = -1;
- int16_t port;
- AbstractServerAcceptPlayer *worldPlayer;
Add Comment
Please, Sign In to add comment