Here is the standalone file to reproduce the unicode failure problem on my system (for the code below, put your path to quicklisp and save the code in a test.lisp file ): Load the file (for sbcl it's "sbcl --load test.lisp"), run lynx and type in "lynx 127.0.0.1:1234/test.html". It should give you an empty page.
;;test.lisp (load "/your-path/quicklisp/setup.lisp") (ql:quickload "hunchentoot")
(defpackage :test (:use :cl :hunchentoot))
(in-package :test)
(defparameter *server* (hunchentoot:start (make-instance 'hunchentoot:acceptor :port 1234))) (hunchentoot:define-easy-handler (test :uri "/test.html") (name) (coerce '(#\RIGHT_DOUBLE_QUOTATION_MARK #\t #\e #\s #\t #\RIGHT_DOUBLE_QUOTATION_MARK) 'string)) ;;file end
Thank you, Andrei
On Fri, Jan 21, 2011 at 5:05 AM, Hans Hübner hans.huebner@gmail.com wrote:
Harak, Andrei,
I had a look at the relevant positions in the Hunchentoot source and would be interested in solving the problem so that errors are reported, rather than swallowed, without requiring the user to set up special handlers. My time is limited, though, so if you could help me by providing an executable test case that exposes the problem, it´d be greatly appreciated.
Thanks, Hans
On Fri, Jan 21, 2011 at 10:48 AM, Phil Marneweck haragx@gmail.com wrote:
On Fri, 2011-01-21 at 06:40 +0100, Hans Hübner wrote:
On Fri, Jan 21, 2011 at 4:29 AM, AVS lispercat@gmail.com wrote:
Thank you for the suggestion, Hans. In the mean time could you try one thing? Put some bad code inside start-output that will cause an exception (for instance (list a b) without a, b defined, or (/ 1 0)). Also (setf *catch-errors-p* nil). If things are as they should be it'll trigger the debugger. In my case it doesn't which is the cause of the whole issue. If it triggers the debugger break for you, it means there is something related to sbcl I am using.
The debugger is not triggered, so the bug is real. Having a way to reproduce it by user code would be helpful nevertheless.
-Hans
Like following?
(defpackage :test (:nicknames :test ) (:use :cl :hunchentoot :cl-who) )
(in-package :test)
;;(hunchentoot:start (make-instance 'hunchentoot:acceptor :port 1111 ))
(hunchentoot::define-easy-handler (eish :uri "/eish.html" :default-request-type :both) () (cl-who::with-html-output-to-string (*standard-output* nil :indent t) (cl-who::str "Hello World XXX")))
(defmacro with-debugging (&body body) ;; Using this as debugging tool because hunchentoot ;; swallows all errors here. `(handler-bind ((error #'invoke-debugger)) ,@body))
(defclass xxx () ((ccc)) )
(defmethod handle-request :before ((*acceptor* hunchentoot::acceptor) (*request* hunchentoot::request))
; (with-debugging (slot-value (make-instance 'xxx) 'xxx) ;) )
Harag _______________________________________________ tbnl-devel site list tbnl-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/tbnl-devel
tbnl-devel site list tbnl-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/tbnl-devel