
I prepared a patch to improve Hunchentoot's error handling for errors that occur in START-OUTPUT. Please review http://bknr.net/trac/changeset/4637/trunk, update from svn+ssh://bknr.net/svn/ediware and try it out. Thanks! Hans On Fri, Jan 21, 2011 at 10:34 PM, Hans Hübner <hans.huebner@gmail.com> wrote:
Hi Andrei,
thank you for sending the reproduction script. Fixing the problem in a satisfactory fashion requires some refactoring that'll take me some time and require review. I'll keep you posted.
-Hans
On Fri, Jan 21, 2011 at 5:15 PM, AVS <lispercat@gmail.com> wrote:
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
_______________________________________________ tbnl-devel site list tbnl-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/tbnl-devel