OSDN Git Service

サーバーに接続できなくなる問題の応急措置
authorh2so5 <h2so5@git.sourceforge.jp>
Sat, 15 Sep 2012 08:06:03 +0000 (17:06 +0900)
committerh2so5 <h2so5@git.sourceforge.jp>
Sat, 15 Sep 2012 08:06:03 +0000 (17:06 +0900)
client/PlayerManager.cpp
server/Account.cpp
server/Account.hpp
server/Server.cpp
server/main.cpp
server/version.hpp

index b68aebc..8e831bb 100644 (file)
Binary files a/client/PlayerManager.cpp and b/client/PlayerManager.cpp differ
index ab36e31..944feec 100644 (file)
@@ -266,7 +266,9 @@ std::vector<UserID> Account::GetIDList() const
 {
     std::vector<UserID> list;
     for (auto it = user_map_.begin(); it != user_map_.end(); ++it) {
-        list.push_back(it->first);
+               if (it->first != 0) {
+                       list.push_back(it->first);
+               }
     }
     return list;
 }
index 1a6aeef..4c41324 100644 (file)
@@ -55,6 +55,10 @@ class Account {
         template <class T>
         void Set(UserID user_id, AccountProperty property, T value, bool revision = true)
         {
+                       if (user_id == 0) {
+                               return;
+                       }
+
             T old_value;
             if (!Get(user_id, property, &old_value) || old_value != value) {
                                boost::unique_lock<boost::recursive_mutex> lock(mutex_);
index 41a306f..e70eca9 100644 (file)
@@ -126,6 +126,7 @@ namespace network {
         });
         sessions_.erase(it, sessions_.end());
 
+               Logger::Info("Active sessoin: %d", sessions_.size() - 1);
     }
 
     void Server::SendAll(const Command& command)
index 054b500..2447127 100644 (file)
@@ -71,6 +71,8 @@ int main(int argc, char* argv[])
         {
             if (auto session = c.session().lock()) {
                 unsigned int id = static_cast<unsigned int>(session->id());
+                               assert(id > 0);
+
                 ptime now = second_clock::universal_time();
                 auto time_string = to_iso_extended_string(now);
 
@@ -129,7 +131,7 @@ int main(int argc, char* argv[])
                 server.SendUDPTestPacket(session->global_ip(), session->udp_port());
 
                 long id = account.GetUserIdFromFingerPrint(finger_print);
-                if (id < 1) {
+                if (id == 0) {
                     // 未登録の場合、公開鍵を要求
                     session->Send(network::ClientRequestedPublicKey());
                 } else {
@@ -156,8 +158,9 @@ int main(int argc, char* argv[])
         case network::header::ServerReceivePublicKey:
         {
             if (auto session = c.session().lock()) {
-                long id = account.RegisterPublicKey(c.body());
-                unsigned int user_id = static_cast<unsigned int>(id);
+                unsigned int user_id = account.RegisterPublicKey(c.body());
+                               assert(user_id > 0);
+
                 // ログイン
                 session->set_id(user_id);
                 account.LogIn(user_id);
index 8586e7c..3d1c887 100644 (file)
@@ -9,7 +9,7 @@
 
 #define MMO_VERSION_MAJOR 0
 #define MMO_VERSION_MINOR 1
-#define MMO_VERSION_REVISION 1
+#define MMO_VERSION_REVISION 3
 
 #ifdef MMO_VERSION_BUILD
 #define MMO_VERSION_BUILD_TEXT " Build " MMO_VERSION_TOSTRING(MMO_VERSION_BUILD)