diff --git a/collects/web-server/dispatchers/dispatch-servlets.ss b/collects/web-server/dispatchers/dispatch-servlets.ss index 2f87d5c8a1..ffecec5e6d 100644 --- a/collects/web-server/dispatchers/dispatch-servlets.ss +++ b/collects/web-server/dispatchers/dispatch-servlets.ss @@ -257,8 +257,8 @@ (thread-cell-set! current-execution-context (make-execution-context conn req suspend)) - (let ([k ((manager-continuation-lookup manager) instance-id k-id salt)]) - (k req)))]) + (let ([kcb ((manager-continuation-lookup manager) instance-id k-id salt)]) + ((custodian-box-value kcb) req)))]) (output-response conn response)) (semaphore-post (servlet-instance-data-mutex data))))) ((manager-instance-unlock! manager) instance-id) diff --git a/collects/web-server/managers/manager.ss b/collects/web-server/managers/manager.ss index 7a1a6923fb..f88f3e6c03 100644 --- a/collects/web-server/managers/manager.ss +++ b/collects/web-server/managers/manager.ss @@ -21,8 +21,8 @@ [instance-lock! (number? . -> . void)] [instance-unlock! (number? . -> . void)] [clear-continuations! (number? . -> . void)] - [continuation-store! (number? procedure? expiration-handler? . -> . (list/c number? number?))] - [continuation-lookup (number? number? number? . -> . procedure?)])] + [continuation-store! (number? any/c expiration-handler? . -> . (list/c number? number?))] + [continuation-lookup (number? number? number? . -> . any/c)])] [struct (exn:fail:servlet-manager:no-instance exn:fail) ([msg string?] [continuation-marks continuation-mark-set?] diff --git a/collects/web-server/servlet.ss b/collects/web-server/servlet.ss index 8b5178b141..7532c5d202 100644 --- a/collects/web-server/servlet.ss +++ b/collects/web-server/servlet.ss @@ -92,7 +92,10 @@ (let/cc k (define instance-id (get-current-servlet-instance-id)) (define ctxt (thread-cell-ref current-execution-context)) - (define k-embedding ((manager-continuation-store! (current-servlet-manager)) instance-id k expiration-handler)) + (define k-embedding ((manager-continuation-store! (current-servlet-manager)) + instance-id + (make-custodian-box (current-custodian) k) + expiration-handler)) (define k-url ((current-url-transform) (embed-ids (list* instance-id k-embedding)