anchor.diff:     (http-version :accessor request-http-version)
      (external-format :initarg :external-format :accessor request-external-format)
      (request-parser :initform (make-request-parser) :reader request-request-parser)
  +   (http-server :reader request-http-server :initarg :http-server)
      (keep-alive-p :accessor request-keep-alive-p :initform t)
      (state :accessor request-state :initform :headers)
      (socket :initarg :socket :reader request-socket)))
   
  -(defmethod close ((req request) &key abort)
  +(defmethod close ((req request) &key abort &aux (socket (request-socket req)))
     (setf (request-state req) :closed)
  -  (when abort
  -    (setf (request-keep-alive-p req) nil)))
  +  (if (request-keep-alive-p *request*)
  +      (new-request (request-http-server req) socket)
  +      (close socket :abort abort)))
   
   ;; TODO - the reply implementation needs to go below all the header parsing later anyway.
   (eval-when (:compile-toplevel :load-toplevel :execute)
  
positive.code:                                       rest-octets)))))
            (parse-headers server driver rest)))))
  
  (defun unregister-http-socket (driver socket)
    (remhash socket (http-server-connections driver)))
  
  
negative.code:         (:body
           (on-request-data user-driver (if-let (format (request-external-format req))
                                           (babel:octets-to-string data :encoding format)
                                           data)))))))
  
  (defparameter +100-continue+ #.(babel:string-to-octets (format nil "HTTP/1.1 100 Continue~a~a" +crlf-ascii+ +crlf-ascii+)))
  (defun parse-headers (server driver data)
  