diff options
author | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2011-12-23 12:51:56 +0100 |
---|---|---|
committer | Matthias Andreas Benkard <code@mail.matthias.benkard.de> | 2011-12-23 12:51:56 +0100 |
commit | b1393ddfe9b005021ece1e7df6f053861dcddc82 (patch) | |
tree | 12709f34dee8e490441fddff68c6044b0a52b58f /mulkcms-hunchentoot.lisp | |
parent | 32553bf7b1fc8c4af4e256705c95a3f66ca5f719 (diff) |
Loosen the core's dependency on Hunchentoot.
Diffstat (limited to 'mulkcms-hunchentoot.lisp')
-rw-r--r--[-rwxr-xr-x] | mulkcms-hunchentoot.lisp | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/mulkcms-hunchentoot.lisp b/mulkcms-hunchentoot.lisp index c5fa908..762d181 100755..100644 --- a/mulkcms-hunchentoot.lisp +++ b/mulkcms-hunchentoot.lisp @@ -17,11 +17,34 @@ (defun dispatch-mulkcms-request (request) (let* ((relative-path (subseq (script-name request) 1)) (mulkcms::*use-ssl-p* (equal (header-in* :x-use-ssl) - "true"))) - (mulkcms::find-request-handler relative-path - (append (get-parameters*) - (post-parameters*)) - (header-in* :accept-language)))) + "true")) + (mulkcms::*real-remote-addr* + (hunchentoot:real-remote-addr)) + (mulkcms::*user-agent* + (hunchentoot:user-agent)) + (mulkcms::*request-method* + (hunchentoot:request-method*)) + (mulkcms::*headers* + (hunchentoot::headers-in*))) + (let ((result (mulkcms::find-request-handler relative-path + (append (get-parameters*) + (post-parameters*)) + (header-in* :accept-language)))) + (typecase result + (cons + (when-let (content-type (getf result :content-type)) + (setf (hunchentoot:content-type*) content-type)) + (when-let (headers (getf result :headers)) + (dolist (header headers) + (setf (hunchentoot:header-out (car header)) + (cdr header)))) + (when-let (return-code (getf result :return-code)) + (setf (hunchentoot:return-code*) return-code) + ;;(hunchentoot:abort-request-handler) + ) + (getf result :body)) + (t + result))))) (defun setup-handlers () (setq *dispatch-table* |