From 6aff08cddc577be731e2425bec14b1675370a74b Mon Sep 17 00:00:00 2001 From: costin Date: Wed, 8 Dec 2010 23:46:49 +0000 Subject: [PATCH] Fix bug in unregistering old devices, if the oldest didn't include the id. --- .../chrometophone/server/RegisterServlet.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/appengine/src/com/google/android/chrometophone/server/RegisterServlet.java b/appengine/src/com/google/android/chrometophone/server/RegisterServlet.java index 1bd6872..972119d 100644 --- a/appengine/src/com/google/android/chrometophone/server/RegisterServlet.java +++ b/appengine/src/com/google/android/chrometophone/server/RegisterServlet.java @@ -133,15 +133,19 @@ public class RegisterServlet extends HttpServlet { // TODO: we should also define a 'ping' message and expire/remove // unused registrations DeviceInfo oldest = registrations.get(0); - long oldestTime = oldest.getRegistrationTimestamp().getTime(); - for (int i = 1; i < registrations.size(); i++) { - if (registrations.get(i).getRegistrationTimestamp().getTime() < - oldestTime) { - oldest = registrations.get(i); - oldestTime = oldest.getRegistrationTimestamp().getTime(); + if (oldest.getRegistrationTimestamp() == null) { + pm.deletePersistent(oldest); + } else { + long oldestTime = oldest.getRegistrationTimestamp().getTime(); + for (int i = 1; i < registrations.size(); i++) { + if (registrations.get(i).getRegistrationTimestamp().getTime() < + oldestTime) { + oldest = registrations.get(i); + oldestTime = oldest.getRegistrationTimestamp().getTime(); + } } + pm.deletePersistent(oldest); } - pm.deletePersistent(oldest); } // Get device if it already exists, else create