I have found something that I believe is a logic error in core/Tracker/Visit.php, from line 876 to 894.
On line 876, there’s a comment reads: “we always match on the config_id, except if the current request forces the visitor id”, I think this is not always a good idea, sometimes it can be too accurate to be correct.
config_id is a hash of a whole lot of things, including IP, this is fine. but sometimes a user may have different IPs(on the same router) when connecting to the internet, for such a case, this user can be correctly recognized as the same unique visitor, but the current visit will be identified as a new visit no matter how long has passed since his/her last visit cause now he/she has different config_id compared to the previous visit.
There’s a configuration trust_visitors_cookies, when set to 1, I think should always take top priority and config_id should be completely ignored. and then the current visit be safely identified as “known” regardless of anything else(include config_id) if the idvisitor exists(because this is my control, I set it to always to trust idvisitor), and leave the last identification to $this->isLastActionInTheSameVisit() on line 174.
Please confirm me or deny me.