diff --git a/scheme/httpd/surflets/surflet-handler.scm b/scheme/httpd/surflets/surflet-handler.scm index b750895..fac9c9b 100644 --- a/scheme/httpd/surflets/surflet-handler.scm +++ b/scheme/httpd/surflets/surflet-handler.scm @@ -473,20 +473,22 @@ (let ((full-surflet-name (absolute-file-name surflet-name directory))) (if (options-cache-surflets?) (begin - ;; The lock is only obtained and released, if surflets are - ;; cached. LOAD-SURFLET gets the CACHED? parameter, so - ;; nothing may happen, if in the meanwhile caching is turned - ;; off. + ;; The lock is only obtained and released, if surflets + ;; are cached. LOAD-SURFLET gets the CACHED? parameter, + ;; so nothing will happen, if in the meanwhile caching + ;; is turned off. (obtain-lock *surflet-table-lock*) - (let ((surflet (table-ref *surflet-table* full-surflet-name))) - (if surflet + (cond + ((table-ref *surflet-table* full-surflet-name) => + (lambda (surflet) (if (equal? (file-last-mod full-surflet-name) (cdr surflet)) (begin (release-lock *surflet-table-lock*) (car surflet)) - (load-surflet full-surflet-name #t)) - (load-surflet full-surflet-name #t)))) + (load-surflet full-surflet-name #t)))) + (else + (load-surflet full-surflet-name #t)))) (load-surflet full-surflet-name #f)))))) ;;; GET-LOADED-SURFLETS