diff options
author | Loïc Blot <nerzhul@users.noreply.github.com> | 2017-04-14 15:34:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-14 15:34:01 +0200 |
commit | b0be7ab61ec9ca04f2618db2d60f75396f205a58 (patch) | |
tree | 8b99926f9350a777418dfe0d7bf0c3e22be46b59 | |
parent | 98286a24bce14627295230fd3b846abf9641c086 (diff) | |
download | minetest-b0be7ab61ec9ca04f2618db2d60f75396f205a58.tar.gz minetest-b0be7ab61ec9ca04f2618db2d60f75396f205a58.tar.bz2 minetest-b0be7ab61ec9ca04f2618db2d60f75396f205a58.zip |
ClientIface::sendToAll: honor packet configuration (#5590)
-rw-r--r-- | src/clientiface.cpp | 12 | ||||
-rw-r--r-- | src/clientiface.h | 2 | ||||
-rw-r--r-- | src/server.cpp | 8 |
3 files changed, 12 insertions, 10 deletions
diff --git a/src/clientiface.cpp b/src/clientiface.cpp index 39223d3eb..64fa1c6b7 100644 --- a/src/clientiface.cpp +++ b/src/clientiface.cpp @@ -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); } } } diff --git a/src/clientiface.h b/src/clientiface.h index f002f37fb..403cd0420 100644 --- a/src/clientiface.h +++ b/src/clientiface.h @@ -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); diff --git a/src/server.cpp b/src/server.cpp index 02e365718..7ed8a8bf4 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -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); |