Skip to content

Commit

Permalink
Quick fix to allow send-service-unavailable-reply to work at all,
Browse files Browse the repository at this point in the history
by creating a fake acceptor/stream/request/reply context for it.
A better fix is needed.
  • Loading branch information
fare committed Oct 27, 2011
1 parent db24541 commit e096aa7
Showing 1 changed file with 22 additions and 5 deletions.
27 changes: 22 additions & 5 deletions taskmaster.lisp
Expand Up @@ -318,11 +318,28 @@ implementations."))
(defun send-service-unavailable-reply (taskmaster socket)
"A helper function to send out a quick error reply, before any state
is set up via PROCESS-REQUEST."
(let ((acceptor (taskmaster-acceptor taskmaster)))
(send-response acceptor
(initialize-connection-stream acceptor (make-socket-stream socket acceptor))
+http-service-unavailable+
:content (acceptor-status-message acceptor +http-service-unavailable+))))
(let* ((acceptor (taskmaster-acceptor taskmaster))
(*acceptor* acceptor)
(*hunchentoot-stream*
(initialize-connection-stream acceptor (make-socket-stream socket acceptor)))
(*reply* (make-instance (acceptor-reply-class acceptor)))
(*request*
(multiple-value-bind (remote-addr remote-port)
(get-peer-address-and-port socket)
(make-instance (acceptor-request-class acceptor)
:acceptor acceptor
:remote-addr remote-addr
:remote-port remote-port
:headers-in nil
:content-stream nil
:method nil
:uri nil
:server-protocol nil))))
(with-character-stream-semantics
(send-response acceptor
(flex:make-flexi-stream *hunchentoot-stream* :external-format :iso-8859-1)
+http-service-unavailable+
:content (acceptor-status-message acceptor +http-service-unavailable+)))))

#-:lispworks
(defun client-as-string (socket)
Expand Down

0 comments on commit e096aa7

Please sign in to comment.