anchor.diff:                               :name (format nil "~a reader thread" (client-name client))
                                :arguments (list client)))))
   
  +;; a function defined to handle the errors of client thread
  +(defun safe-client-thread (connection)
  +  (handler-case (create-client connection)
  +    (end-of-file () nil)
  +    (usocket:address-in-use-error () nil)))
  +
   (defun message-broadcast ()
     (loop when (sb-thread:wait-on-semaphore *message-semaphore*)
             do (let ((message (formated-message (pop *messages-stack*))))
  
positive.code:     (sb-thread:join-thread connection-thread)
      (sb-thread:join-thread broadcast-thread)))
  
  (defun main ()
    (let ((socket-server (socket-listen *host* *port*)))
      (unwind-protect (handler-case (server-loop socket-server)
                        (usocket:address-in-use-error () (format t "Address ~a\@~a already busy."
  
negative.code:                                                                *port*))
                        (sb-sys:interactive-interrupt () (format t "Closing the server...")))
        (socket-close socket-server)))
    (unless (zerop retry)
      (main (1- retry))))
  