- // Connection timestamps must be nondecreasing.
- assert(clients_ordered_by_connect_time.empty() ||
- !is_earlier(client_ptr->connect_time, clients_ordered_by_connect_time.back().first));
+ // Connection timestamps must be nondecreasing. I can't find any guarantee
+ // that even the monotonic clock can't go backwards by a small amount
+ // (think switching between CPUs with non-synchronized TSCs), so if
+ // this actually should happen, we hack around it by fudging
+ // connect_time.
+ if (!clients_ordered_by_connect_time.empty() &&
+ is_earlier(client_ptr->connect_time, clients_ordered_by_connect_time.back().first)) {
+ client_ptr->connect_time = clients_ordered_by_connect_time.back().first;
+ }