aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoïc Blot <nerzhul@users.noreply.github.com>2017-04-14 15:34:01 +0200
committerGitHub <noreply@github.com>2017-04-14 15:34:01 +0200
commitb0be7ab61ec9ca04f2618db2d60f75396f205a58 (patch)
tree8b99926f9350a777418dfe0d7bf0c3e22be46b59
parent98286a24bce14627295230fd3b846abf9641c086 (diff)
downloadminetest-b0be7ab61ec9ca04f2618db2d60f75396f205a58.tar.gz
minetest-b0be7ab61ec9ca04f2618db2d60f75396f205a58.tar.bz2
minetest-b0be7ab61ec9ca04f2618db2d60f75396f205a58.zip
ClientIface::sendToAll: honor packet configuration (#5590)
-rw-r--r--src/clientiface.cpp12
-rw-r--r--src/clientiface.h2
-rw-r--r--src/server.cpp8
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);