Method: (STARTUP-BACKEND HTTPD-BACKEND)

Documentation

Start the RERL.

Source

(defmethod startup-backend ((backend httpd-backend) &rest init-args)
  "Start the RERL."
  (declare (ignore init-args))
  (let (stream request response)
    (labels ((serve-one-request ()
               (setf stream (swank-backend:accept-connection (socket backend)
                                                             :external-format :iso-latin-1-unix)
                     request (read-request backend stream)
                     response (make-response request))
               (handle-request backend request response))
             (handle-request-error (condition)
               (ucw.backend.error "While handling a request on ~S: ~S" stream condition)
               (when *debug-on-error*
                 (restart-case
                     (swank:swank-debugger-hook condition nil)
                   (kill-worker ()
                     :report "Kill this worker."
                     (values))))
               (throw 'abort-request nil))
             (handle-request/internal ()
               (catch 'abort-request
                 (handler-bind ((error #'handle-request-error))
                   (unwind-protect
                        (serve-one-request)
                     (ignore-errors (close stream)))))))
      (unwind-protect
           (loop (handle-request/internal))
        (ignore-errors
          (swank-backend:close-socket (socket backend))))))
  backend)
Source Context