LINUX.ORG.RU

История изменений

Исправление no-such-file, (текущая версия) :

Глянул по-быстрому. Если кроваво, то проще всего будет пропатчить здесь

(define (read-header port)
  "Read one HTTP header from PORT. Return two values: the header
name and the parsed Scheme value. May raise an exception if the header
was known but the value was invalid.

Returns the end-of-file object for both values if the end of the message
body was reached (i.e., a blank line)."
  (let ((line (read-header-line port)))
    (if (or (string-null? line)
            (string=? line "\r"))
        (values *eof* *eof*)
        (let* ((delim (or (string-index line #\:)
                          (bad-header '%read line)))
               (sym (string->header (substring line 0 delim))))  ;;;; <--------- Символ cache-control из заголовка
          (values
           sym
           (parse-header
            sym
            (read-continuation-line
             port
             (string-trim-both line char-set:whitespace (1+ delim)))))))))  ;;;; <-------- ТУТ привязывается значение

Т.е. перед тем как совать в парсер можно его подменить. Как вариант чуть менее кровавого патча - сделать декоратор для parse-header.

Исходная версия no-such-file, :

Глянул по-быстрому. Если кроваво, то проще всего будет пропатчить здесь

(define (read-header port)
  "Read one HTTP header from PORT. Return two values: the header
name and the parsed Scheme value. May raise an exception if the header
was known but the value was invalid.

Returns the end-of-file object for both values if the end of the message
body was reached (i.e., a blank line)."
  (let ((line (read-header-line port)))
    (if (or (string-null? line)
            (string=? line "\r"))
        (values *eof* *eof*)
        (let* ((delim (or (string-index line #\:)
                          (bad-header '%read line)))
               (sym (string->header (substring line 0 delim))))  ;;;; <--------- Символ cache-control из заголовка
          (values
           sym
           (parse-header
            sym
            (read-continuation-line
             port
             (string-trim-both line char-set:whitespace (1+ delim)))))))))  ;;;; <-------- ТУТ привязывается значение

Т.е. перед тем как совать в парсер можно его подменить.