diff --git a/collects/web-server/dispatchers/dispatch-servlets.ss b/collects/web-server/dispatchers/dispatch-servlets.ss index cf0147436f..a28932d4db 100644 --- a/collects/web-server/dispatchers/dispatch-servlets.ss +++ b/collects/web-server/dispatchers/dispatch-servlets.ss @@ -51,10 +51,6 @@ #:responders-servlet (url? any/c . -> . response?)) dispatcher/c)]) -;; default-server-instance-expiration-handler : (request -> response) -(define (default-servlet-instance-expiration-handler req) - (next-dispatcher)) - (define (make url->servlet #:responders-servlet-loading [responders-servlet-loading servlet-loading-responder] #:responders-servlet [responders-servlet servlet-error-responder]) @@ -70,15 +66,6 @@ (define response (with-handlers ([exn:fail:filesystem:exists? (lambda (the-exn) (next-dispatcher))] - [exn:fail:servlet-manager:no-instance? - (lambda (the-exn) - ((exn:fail:servlet-manager:no-instance-expiration-handler the-exn) req))] - [exn:fail:servlet-manager:no-continuation? - (lambda (the-exn) - ((exn:fail:servlet-manager:no-continuation-expiration-handler the-exn) req))] - [exn:fail:servlet:instance? - (lambda (the-exn) - (default-servlet-instance-expiration-handler req))] [(lambda (x) #t) (lambda (the-exn) (responders-servlet-loading uri the-exn))]) (define the-servlet (url->servlet uri)) @@ -87,10 +74,7 @@ [current-directory (servlet-directory the-servlet)] [current-namespace (servlet-namespace the-servlet)]) (with-handlers ([(lambda (x) #t) - (lambda (exn) - (responders-servlet - (request-uri req) - exn))]) + (lambda (exn) (responders-servlet uri exn))]) (call-with-continuation-barrier (lambda () (call-with-continuation-prompt diff --git a/collects/web-server/private/servlet.ss b/collects/web-server/private/servlet.ss index 392d740b75..482f394fff 100644 --- a/collects/web-server/private/servlet.ss +++ b/collects/web-server/private/servlet.ss @@ -4,7 +4,6 @@ web-server/http) (define servlet-prompt (make-continuation-prompt-tagĀ 'servlet)) -(define-struct (exn:fail:servlet:instance exn:fail) ()) (define-struct servlet (custodian namespace manager directory handler) #:mutable) (define-struct execution-context (request)) @@ -18,9 +17,6 @@ (provide/contract [servlet-prompt continuation-prompt-tag?] - [struct (exn:fail:servlet:instance exn:fail) - ([message string?] - [continuation-marks continuation-mark-set?])] [struct servlet ([custodian custodian?] [namespace namespace?] diff --git a/collects/web-server/servlet/setup.ss b/collects/web-server/servlet/setup.ss index 2cecb0b0d5..b3d85f1451 100644 --- a/collects/web-server/servlet/setup.ss +++ b/collects/web-server/servlet/setup.ss @@ -49,19 +49,26 @@ (lambda (req) (define uri (request-uri req)) - (define-values (instance-id handler) - (cond - [(continuation-url? uri) - => (match-lambda - [(list instance-id k-id salt) - (values instance-id - (custodian-box-value ((manager-continuation-lookup manager) instance-id k-id salt)))])] - [else - (values ((manager-create-instance manager) (exit-handler)) - start)])) - - (parameterize ([current-servlet-instance-id instance-id]) - (handler req))))) + (with-handlers ([exn:fail:servlet-manager:no-instance? + (lambda (the-exn) + ((exn:fail:servlet-manager:no-instance-expiration-handler the-exn) req))] + [exn:fail:servlet-manager:no-continuation? + (lambda (the-exn) + ((exn:fail:servlet-manager:no-continuation-expiration-handler the-exn) req))]) + + (define-values (instance-id handler) + (cond + [(continuation-url? uri) + => (match-lambda + [(list instance-id k-id salt) + (values instance-id + (custodian-box-value ((manager-continuation-lookup manager) instance-id k-id salt)))])] + [else + (values ((manager-create-instance manager) (exit-handler)) + start)])) + + (parameterize ([current-servlet-instance-id instance-id]) + (handler req)))))) (define (make-stateless.servlet directory start) (define ses