ClientIface::sendToAll: honor packet configuration (#5590)
authorLoïc Blot <nerzhul@users.noreply.github.com>
Fri, 14 Apr 2017 13:34:01 +0000 (15:34 +0200)
committerGitHub <noreply@github.com>
Fri, 14 Apr 2017 13:34:01 +0000 (15:34 +0200)
src/clientiface.cpp
src/clientiface.h
src/server.cpp

index 39223d3eb5e05ccb554a66888a3a20a022356937..64fa1c6b77d633e340842a973e04e95b3ef720e5 100644 (file)
@@ -30,6 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "emerge.h"
 #include "content_sao.h"              // TODO this is used for cleanup of only
 #include "log.h"
+#include "network/serveropcodes.h"
 #include "util/srp.h"
 
 const char *ClientInterface::statenames[] = {
@@ -678,16 +679,17 @@ void ClientInterface::send(u16 peer_id, u8 channelnum,
        m_con->Send(peer_id, channelnum, pkt, reliable);
 }
 
-void ClientInterface::sendToAll(u16 channelnum,
-               NetworkPacket* pkt, bool reliable)
+void ClientInterface::sendToAll(NetworkPacket *pkt)
 {
        MutexAutoLock clientslock(m_clients_mutex);
-       for(UNORDERED_MAP<u16, RemoteClient*>::iterator i = m_clients.begin();
-               i != m_clients.end(); ++i) {
+       for (UNORDERED_MAP<u16, RemoteClient*>::iterator i = m_clients.begin();
+                       i != m_clients.end(); ++i) {
                RemoteClient *client = i->second;
 
                if (client->net_proto_version != 0) {
-                       m_con->Send(client->peer_id, channelnum, pkt, reliable);
+                       m_con->Send(client->peer_id,
+                                       clientCommandFactoryTable[pkt->getCommand()].channel, pkt,
+                                       clientCommandFactoryTable[pkt->getCommand()].reliable);
                }
        }
 }
index f002f37fbf9907815c4ebb33a175f7493c5fc318..403cd04208d7b8493f27a4ede26cc682b2172321 100644 (file)
@@ -458,7 +458,7 @@ public:
        void send(u16 peer_id, u8 channelnum, NetworkPacket* pkt, bool reliable);
 
        /* send to all clients */
-       void sendToAll(u16 channelnum, NetworkPacket* pkt, bool reliable);
+       void sendToAll(NetworkPacket *pkt);
 
        /* delete a client */
        void DeleteClient(u16 peer_id);
index 02e365718a521fefca250d35eb07b757c22b076c..7ed8a8bf4877303f8453e17cbb4e153e78bd58b5 100644 (file)
@@ -1642,7 +1642,7 @@ void Server::SendChatMessage(u16 peer_id, const std::wstring &message)
                Send(&pkt);
        }
        else {
-               m_clients.sendToAll(0, &pkt, true);
+               m_clients.sendToAll(&pkt);
        }
 }
 
@@ -1761,7 +1761,7 @@ void Server::SendDeleteParticleSpawner(u16 peer_id, u32 id)
                Send(&pkt);
        }
        else {
-               m_clients.sendToAll(0, &pkt, true);
+               m_clients.sendToAll(&pkt);
        }
 
 }
@@ -1866,7 +1866,7 @@ void Server::SendTimeOfDay(u16 peer_id, u16 time, f32 time_speed)
        pkt << time << time_speed;
 
        if (peer_id == PEER_ID_INEXISTENT) {
-               m_clients.sendToAll(0, &pkt, true);
+               m_clients.sendToAll(&pkt);
        }
        else {
                Send(&pkt);
@@ -2519,7 +2519,7 @@ void Server::sendDetachedInventory(const std::string &name, u16 peer_id)
        const std::string &check = m_detached_inventories_player[name];
        if (peer_id == PEER_ID_INEXISTENT) {
                if (check == "")
-                       return m_clients.sendToAll(0, &pkt, true);
+                       return m_clients.sendToAll(&pkt);
                RemotePlayer *p = m_env->getPlayer(check.c_str());
                if (p)
                        m_clients.send(p->peer_id, 0, &pkt, true);