anchor.diff:    ((driver :initarg :driver :accessor http-server-driver)
      (connections :initform (make-hash-table) :accessor http-server-connections)))
   
  -(defmethod on-server-connection ((driver http-server-driver) socket)
  +(defun new-request (driver socket)
     (setf (gethash socket (http-server-connections driver))
           (cons (make-instance 'request
                                :socket socket
  -                             :external-format (server-external-format-in *server*))
  -              (make-instance 'reply :socket socket))))
  +                             :external-format :utf-8 #+nil(server-external-format-in *server*))
  +              (make-instance 'reply
  +                             :socket socket
  +                             :http-server driver))))
  +
  +(defmethod on-server-connection ((driver http-server-driver) socket)
  +  (new-request driver socket))
   
   (defmethod on-socket-data ((driver http-server-driver) data
                              &aux
  
positive.code:                           :test #'equalp)
                ;; TODO - perhaps we shouldn't write this when the client's HTTP version is <1.1?
                (write-sequence +100-continue+ (reply-socket *reply*)))
              (on-http-request driver)
              (on-request-data driver data))
            (parse-headers driver server rest)))))
  
negative.code:   ((headers :accessor reply-headers :initform nil)
     (status :accessor reply-status :initform 200)
     (socket :reader reply-socket :initarg :socket)
     (headers-written-p :accessor reply-headers-written-p :initform nil)
     (http-server :reader reply-http-server :initarg :http-server)
     (keep-alive-p :accessor reply-keep-alive-p :initform nil)))
  
  (defmethod close ((reply reply) &key abort)
    (unless (or (reply-headers-written-p reply) abort)
      (write-headers reply))
    (if (reply-keep-alive-p reply)
        ;; TODO - reuse request/reply objects by reinitializing?
        ;;        (use shared-initialize with t for slots)
        (progn
          (write-sequence +crlf+ (reply-socket reply))
          (new-request (reply-http-server reply)
                       (reply-socket reply)))
        (close (reply-socket reply) :abort abort)))
  
  (defun reply-headers* ()
    (reply-headers *reply*))
  