FIX: last ip address could point at wrong ip

Due to unicorn env object recycling request.ip could point at the wrong
ip address by the time defer block is called. This usually would happen
under load.

This also avoids keeping the entire request object as referenced by the
closure.
This commit is contained in:
Sam Saffron 2020-03-11 17:42:56 +11:00
parent 23de188f89
commit 1f34f653bf
No known key found for this signature in database
GPG Key ID: B9606168D2FFD9F5
1 changed files with 3 additions and 1 deletions

View File

@ -118,9 +118,11 @@ class Auth::DefaultCurrentUserProvider
if current_user && should_update_last_seen?
u = current_user
ip = request.ip
Scheduler::Defer.later "Updating Last Seen" do
u.update_last_seen!
u.update_ip_address!(request.ip)
u.update_ip_address!(ip)
end
end