(empire-log:info "~a: Killing update thread ~a." *empire-session* (update-thread *empire-session*))
(sb-thread:terminate-thread (update-thread *empire-session*)))
(setf (update-thread *empire-session*) sb-thread:*current-thread*)
- (let ((next-update (locked-queue:dequeue (update-queue *empire-session*))))
+ (let ((next-updates (locked-queue:dequeue-all (update-queue *empire-session*))))
+ ; There's a race here. The next update thread might kill this one before
+ ; sending the reply.
(setf (update-thread *empire-session*) nil)
- next-update)))
+ (nconc next-updates (list (parenscript:ps* '(next))))
+ (apply #'concatenate 'string next-updates))))
(defmethod send ((s session) string)
"Push a javascript update fragment to the client."