Pocketmine-mp: Resource pack sending overloads low-bandwidth connections

Created on 25 Sep 2019  Â·  4Comments  Â·  Source: pmmp/PocketMine-MP

(I use Google Translate.)

Issue description

(Android(Post) => Windows(Client))
(Windows => Windows)
I'm sorry, but I couldn't reproduce it in the above environment.

(This problem is very similar to #2026.)

Expected result: resource pack is successfully sent to the client.
Actual result: The transmission of resourcepack will stop at 1MB and after a few seconds the player will be kicked out in an timeout.(A resourcepack of 1MB or less will be sent to the client normally.)

Steps to reproduce the issue

 1. Download https://aka.ms/resourcepacktemplate and go to the resource_packs folder.
 2. Write `-Vanilla_Resource_Pack_1.12.0.zip` on resource_packs.yml to activate the resource pack.
 3. Start the server and log in to the server.
 4. When `Download World Resource Packs?` Is displayed, click `Download & Join`.
 5. The console says "Blocked 192.168.0.22 for 300 seconds", the download pack stops at 1 MB, and after a few seconds the player is kicked out with a timeout

OS and versions

PocketMine-MP: 3.9.4
PHP: php 7.2.19 (Built by php-build-scripts)
Server OS: Android
Game version: PE (Android => Android)(loopback)
Minecraft Version: 1.12.0

APP: https://play.google.com/store/apps/details?id=jackpal.androidterm

Plugins

No plugins are installed.

Crashdump, backtrace or other files

None

php Version

PHP 7.2.19 (cli) (built: Jul 15 2019 19:55:21) ( ZTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

Console Output

u0_a342@SOT31:/ $ cd /sdcard/www/PocketMine4/
env TMPDIR='/storage/emulated/0/PocketMine/tmp' LESMI_RESOLV_CONF_DIR=/sdcard/PocketMine/resolv.conf /data/data/jackpal.androidterm/app_HOME/php-7.2.19 -c /sdcard/PocketMine/config/php.ini /sdcard/www/PocketMine3/PocketMine-MP.phar
[06:48:55] [Server thread/WARNING]: ChunkUtils extension is missing. Anvil-format worlds will experience degraded performance.
[06:48:55] [Server thread/INFO]: Loading pocketmine.yml...
[06:48:55] [Server thread/INFO]: Loading server properties...
[06:48:55] [Server thread/ERROR]: Missing required language file phar:///storage/emulated/0/www/PocketMine3/PocketMine-MP.phar/src/pocketmine/lang/locale/us.ini
[06:48:55] [Server thread/INFO]: Selected English (us) as the base language
[06:48:55] [Server thread/INFO]: Starting Minecraft: Bedrock Edition server version v1.12.0
[06:48:55] [Server thread/NOTICE]: Online mode is enabled. The server will verify that players are authenticated to Xbox Live.
[06:48:55] [Server thread/NOTICE]: To disable authentication, set "xbox-auth" to "false" in server.properties.
[06:48:55] [Server thread/INFO]: Opening server on 0.0.0.0:19132
[06:48:55] [Server thread/DEBUG]: Server unique id: ba2aefde-c3cb-b5f3-1aa1-57341c7e8697
[06:48:55] [Server thread/DEBUG]: Machine unique id: ba1ac2d8-3b61-0aa0-f2fc-3918c85a7f47
[06:48:55] [Server thread/INFO]: This server is running PocketMine-MP version 3.9.4
[06:48:55] [Server thread/INFO]: PocketMine-MP is distributed under the LGPL License
[06:48:56] [Server thread/INFO]: Loading resource packs...
[06:48:56] [Server thread/DEBUG]: Successfully loaded 1 resource packs
[06:48:56] [Asynchronous Worker #0 thread/DEBUG]: Set memory limit to 256 MB
[06:48:56] [Server thread/INFO]: Preparing world "world"
[06:48:56] [Server thread/INFO]: Starting GS4 status listener
[06:48:56] [Server thread/INFO]: Setting query port to 19132
[06:48:56] [Server thread/INFO]: Query running on 0.0.0.0:19132
[06:48:56] [Server thread/INFO]: Default game type: Survival Mode
[06:48:56] [Server thread/INFO]: Done (0.804s)! For help, type "help" or "?"
[06:49:01] [Server thread/DEBUG]: [AutoUpdater] Async update check failed due to "Resolving timed out after 4000 milliseconds"
[06:49:12] [RakLibServer thread/DEBUG]: Created session for 192.168.0.22 41678 with MTU size 1492
[06:49:12] [Server thread/DEBUG]: Radish12345a is logged into Xbox Live
[06:49:12] [Server thread/DEBUG]: Unhandled ClientCacheStatusPacket received from Radish12345a: gQEB
[06:49:14] [RakLibServer thread/NOTICE]: Blocked 192.168.0.22 for 300 seconds
[06:49:24] [RakLibServer thread/DEBUG]: Closed session for 192.168.0.22 41678
[06:49:24] [Server thread/INFO]: Radish12345a[/192.168.0.22:41678] logged out due to timeout

Other images

Screenshot_20190925-064920

↓

Screenshot_20190925-064929
_20190925_074623

Network Debugged

Most helpful comment

To improve quality of server, this issue would be a major obstacle...

All 4 comments

relates to pmmp/RakLib#32

In this version, the main part of my players can't download resources with 5.4 mb's, some players see progress bar with 2.01 mb's status and progress stopped, but some players are immediately disconnected.

The basic problem here is that resource pack sending is happening without any restrictions, and the client is requesting too many resource pack chunks at the same time.

Prior to 1.13 this issue would appear when multiple large resource packs were loaded; now, it appears with any single large resource pack because the client requests all downloads at the same time instead of one-by-one like it used to.

Fixing this problem is non-trivial and requires several changes to resolve.

To improve quality of server, this issue would be a major obstacle...

Was this page helpful?
0 / 5 - 0 ratings

Related issues

MisteFr picture MisteFr  Â·  3Comments

jasonwynn10 picture jasonwynn10  Â·  3Comments

jasonwynn10 picture jasonwynn10  Â·  3Comments

nmo0ory picture nmo0ory  Â·  3Comments

dktapps picture dktapps  Â·  3Comments