id summary reporter owner description type status priority milestone component version resolution keywords cc difficulty 939 simple-directory-handler: error 500 on listing a directory with a link foo -> foo Mario Domenech Goulart sjamaan "Here are the steps to reproduce the problem: {{{ $ cat server.scm (use spiffy simple-directory-handler) (handle-directory simple-directory-handler) (start-server) $ mkdir web $ cd web $ ln -s foo foo $ cd .. $ csi -s server.scm & [1] 6379 $ wget http://localhost:8080 --2012-10-24 17:32:45-- http://localhost:8080/ Resolving localhost... ::1, 127.0.0.1 Connecting to localhost|::1|:8080... failed: Connection refused. Connecting to localhost|127.0.0.1|:8080... connected. HTTP request sent, awaiting response... [Wed Oct 24 17:32:45 2012] ""GET http://localhost:8080/ HTTP/1.0"" Error: (file-exists?) system error while trying to access file ""./web//foo"" Call history: display spiffy#root-path make-pathname simple-directory-handler#simple-directory-dotfiles? directory sort fold spiffy#root-path make-pathname make-pathname directory? file-exists? k695701 g699700 spiffy#handle-exception with-output-to-string <-- 500 Internal Server Error 2012-10-24 17:32:45 ERROR 500: Internal Server Error. }}} The problem seems to be in simple-directory-handler's {{{simple-directory-handler}}} procedure, when it calls {{{file-exists?}}} in the {{{fold}}} body (around line 82). The call to {{{file-exists?}}} seems to be due to the fact that {{{(simple-directory-display-file)}}} calls {{{file-size}}} and {{{file-modification-time}}} on the given file. That's actually subject to race conditions, so maybe it would be better to just handle exceptions in {{{(simple-directory-display-file)}}} when attempting those operations. " defect closed minor someday extensions 4.8.x fixed spiffy, simple-directory-handler