diff --git a/collects/web-server/dispatchers/dispatch-servlets.ss b/collects/web-server/dispatchers/dispatch-servlets.ss index a28932d4db..fdb1b831d0 100644 --- a/collects/web-server/dispatchers/dispatch-servlets.ss +++ b/collects/web-server/dispatchers/dispatch-servlets.ss @@ -66,6 +66,7 @@ (define response (with-handlers ([exn:fail:filesystem:exists? (lambda (the-exn) (next-dispatcher))] + [exn:dispatcher? raise] [(lambda (x) #t) (lambda (the-exn) (responders-servlet-loading uri the-exn))]) (define the-servlet (url->servlet uri)) @@ -73,7 +74,8 @@ [current-custodian (servlet-custodian the-servlet)] [current-directory (servlet-directory the-servlet)] [current-namespace (servlet-namespace the-servlet)]) - (with-handlers ([(lambda (x) #t) + (with-handlers ([exn:dispatcher? raise] + [(lambda (x) #t) (lambda (exn) (responders-servlet uri exn))]) (call-with-continuation-barrier (lambda () diff --git a/collects/web-server/scribblings/dispatchers.scrbl b/collects/web-server/scribblings/dispatchers.scrbl index 7c95ea93be..1622cee48c 100644 --- a/collects/web-server/scribblings/dispatchers.scrbl +++ b/collects/web-server/scribblings/dispatchers.scrbl @@ -368,7 +368,7 @@ a URL that refreshes the password file, servlet cache, etc.} dispatcher/c]{ This dispatcher runs Scheme servlets, using @scheme[url->servlet] to resolve URLs to the underlying servlets. If servlets have errors loading, then @scheme[responders-servlet-loading] is used. Other errors are handled with - @scheme[responders-servlet]. + @scheme[responders-servlet]. If a servlet raises calls @scheme[next-dispatcher], then the signal is propagated by this dispatcher. } }