diff --git a/src/network/network.cpp b/src/network/network.cpp index 6d334e1464..3136d649ce 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -927,11 +927,21 @@ void Network::Server_Send_MAP(NetworkConnection* connection) SDL_RWops* rw = SDL_RWFromFP(temp, SDL_TRUE); size_t out_size; unsigned char *header; - header = save_for_network(rw, out_size, connection->RequestedObjects); + std::vector objects; + if (connection) { + objects = connection->RequestedObjects; + } else { + // This will send all custom objects to connected clients + // TODO: fix it so custom objects negotiation is performed even in this case. + objects = scenario_get_packable_objects(); + } + header = save_for_network(rw, out_size, objects); SDL_RWclose(rw); if (header == nullptr) { - connection->SetLastDisconnectReason(STR_MULTIPLAYER_CONNECTION_CLOSED); - connection->Socket->Disconnect(); + if (connection) { + connection->SetLastDisconnectReason(STR_MULTIPLAYER_CONNECTION_CLOSED); + connection->Socket->Disconnect(); + } return; } size_t chunksize = 65000;