Bug after moving instance lookup inside servlet namespace
svn: r12514
This commit is contained in:
parent
117f016982
commit
8f0544f37d
|
@ -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
|
||||
|
|
|
@ -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?]
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user