If a username is blocked and auto-block of IPs is enabled, if that user edits from a different IP address with the VisualEditor this does not cause this different IP address to be blocked.
Reproduction:
- Login as $user from one IP address[1]
- Go to Special:Block and block $user (need admin perms); make sure "Automatically block the last IP address used by this user, and any subsequent IP addresses they try to edit from" is checked
- In Special:BlockList you will see two rows in the table, the block for $user and another of the form "Autoblock #nnnnn"
- From a different IP address, login as $user and with VisualEditor as the default editor[2] attempt to edit an article (make sure you aren't taken to Source Editor first); you will be blocked
- In Special:BlockList you will not see any new rows in the table
- Logout and attempt to edit the article again (you may need to clear your cookies if the wiki sets a block cookie)
Actual:
You won't be blocked from editing from the second IP address.
Expected:
If our documentation is correct, attempting to edit from VisualEditor as the blocked $user should also block any new IP addresses they are using.
This does happen when you use the Source Editor instead in step 4. This leads me to believe it is related to VisualEditor (although a similar bug appears to afflict MobileFrontend, which I will raise separately.)
Even if, in step 4, you attempt to submit the edited article, this still does not cause the IP to be blocked.
I have seen this happen for both sitewide blocks and partial page blocks.
Speculation:
In mediawiki core includes/EditPage.php there is a function "spreadAnyEditBlock()" which appears to cause any new IP addresses to be blocked. Perhaps VisualEditor also needs to call this. I don't really understand the code well enough though...
Environment Tested:
https://test.wikipedia.org
MediaWiki 1.33.0-wmf.17 (rMW484a1d08a285) 19:23, 14 February 2019
VisualEditor 0.1.1 (5ff1ea4) 22:04, 11 February 2019
Notes:
- I was using a VPN for the first IP address
- I don't know if you can set this for a user...