]> git.lizzy.rs Git - minetest.git/blobdiff - src/clientiface.cpp
Don't expire blocks visible to the client. (#13255)
[minetest.git] / src / clientiface.cpp
index 01852c5d1ba013d346184641e4f0c13cc1932a2c..8ae2efada1e14e3605390a720d38dbf35d333da0 100644 (file)
@@ -294,12 +294,6 @@ void RemoteClient::GetNextBlocks (
                                continue;
                        }
 
-                       /*
-                               Don't send already sent blocks
-                       */
-                       if (m_blocks_sent.find(p) != m_blocks_sent.end())
-                               continue;
-
                        /*
                                Check if map has this block
                        */
@@ -310,8 +304,14 @@ void RemoteClient::GetNextBlocks (
                                // Reset usage timer, this block will be of use in the future.
                                block->resetUsageTimer();
 
+                               /*
+                                       Don't send already sent blocks
+                               */
+                               if (m_blocks_sent.find(p) != m_blocks_sent.end())
+                                       continue;
+
                                // Check whether the block exists (with data)
-                               if (block->isDummy() || !block->isGenerated())
+                               if (!block->isGenerated())
                                        block_not_found = true;
 
                                /*
@@ -452,9 +452,6 @@ void RemoteClient::notifyEvent(ClientStateEvent event)
                case CSE_Hello:
                        m_state = CS_HelloSent;
                        break;
-               case CSE_InitLegacy:
-                       m_state = CS_AwaitingInit2;
-                       break;
                case CSE_Disconnect:
                        m_state = CS_Disconnecting;
                        break;
@@ -475,20 +472,14 @@ void RemoteClient::notifyEvent(ClientStateEvent event)
                {
                case CSE_AuthAccept:
                        m_state = CS_AwaitingInit2;
-                       if (chosen_mech == AUTH_MECHANISM_SRP ||
-                                       chosen_mech == AUTH_MECHANISM_LEGACY_PASSWORD)
-                               srp_verifier_delete((SRPVerifier *) auth_data);
-                       chosen_mech = AUTH_MECHANISM_NONE;
+                       resetChosenMech();
                        break;
                case CSE_Disconnect:
                        m_state = CS_Disconnecting;
                        break;
                case CSE_SetDenied:
                        m_state = CS_Denied;
-                       if (chosen_mech == AUTH_MECHANISM_SRP ||
-                                       chosen_mech == AUTH_MECHANISM_LEGACY_PASSWORD)
-                               srp_verifier_delete((SRPVerifier *) auth_data);
-                       chosen_mech = AUTH_MECHANISM_NONE;
+                       resetChosenMech();
                        break;
                default:
                        myerror << "HelloSent: Invalid client state transition! " << event;
@@ -564,9 +555,7 @@ void RemoteClient::notifyEvent(ClientStateEvent event)
                        break;
                case CSE_SudoSuccess:
                        m_state = CS_SudoMode;
-                       if (chosen_mech == AUTH_MECHANISM_SRP)
-                               srp_verifier_delete((SRPVerifier *) auth_data);
-                       chosen_mech = AUTH_MECHANISM_NONE;
+                       resetChosenMech();
                        break;
                /* Init GotInit2 SetDefinitionsSent SetMediaSent SetDenied */
                default:
@@ -599,6 +588,15 @@ void RemoteClient::notifyEvent(ClientStateEvent event)
        }
 }
 
+void RemoteClient::resetChosenMech()
+{
+       if (auth_data) {
+               srp_verifier_delete((SRPVerifier *) auth_data);
+               auth_data = nullptr;
+       }
+       chosen_mech = AUTH_MECHANISM_NONE;
+}
+
 u64 RemoteClient::uptime() const
 {
        return porting::getTimeS() - m_connection_time;
@@ -674,7 +672,6 @@ void ClientInterface::UpdatePlayerList()
                std::vector<session_t> clients = getClientIDs();
                m_clients_names.clear();
 
-
                if (!clients.empty())
                        infostream<<"Players:"<<std::endl;
 
@@ -718,31 +715,6 @@ void ClientInterface::sendToAll(NetworkPacket *pkt)
        }
 }
 
-void ClientInterface::sendToAllCompat(NetworkPacket *pkt, NetworkPacket *legacypkt,
-               u16 min_proto_ver)
-{
-       RecursiveMutexAutoLock clientslock(m_clients_mutex);
-       for (auto &client_it : m_clients) {
-               RemoteClient *client = client_it.second;
-               NetworkPacket *pkt_to_send = nullptr;
-
-               if (client->net_proto_version >= min_proto_ver) {
-                       pkt_to_send = pkt;
-               } else if (client->net_proto_version != 0) {
-                       pkt_to_send = legacypkt;
-               } else {
-                       warningstream << "Client with unhandled version to handle: '"
-                               << client->net_proto_version << "'";
-                       continue;
-               }
-
-               m_con->Send(client->peer_id,
-                       clientCommandFactoryTable[pkt_to_send->getCommand()].channel,
-                       pkt_to_send,
-                       clientCommandFactoryTable[pkt_to_send->getCommand()].reliable);
-       }
-}
-
 RemoteClient* ClientInterface::getClientNoEx(session_t peer_id, ClientState state_min)
 {
        RecursiveMutexAutoLock clientslock(m_clients_mutex);