Changeset 11909 in project


Ignore:
Timestamp:
09/06/08 15:34:56 (13 years ago)
Author:
sjamaan
Message:

Fix unparser to use tokenization properly

Location:
release/4/intarweb/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • release/4/intarweb/trunk/header-parsers.scm

    r11908 r11909  
    319319  (let* ((must-be-quoted-chars (char-set-adjoin char-set:iso-control #\"))
    320320         (trigger-quoting-chars (char-set-union
    321                                  (char-set-adjoin must-be-quoted-chars #\, #\;)
     321                                 (char-set-adjoin must-be-quoted-chars #\, #\; #\=)
    322322                                 char-set:blank))
    323323         (smap (map (lambda (c)
     
    343343               (value (cond
    344344                       ((pair? contents) ; alist?
    345                         ;; XXX Do something with =, comma, semicolon and newline
    346345                        (if (eq? (cdr contents) #t)
    347                             (->string (car contents))
    348                             (conc (car contents) "=" (cdr contents))))
    349                        ((uri? contents) (uri->string contents))
    350                        (else (->string contents))))
     346                            (unparse-token (->string (car contents)))
     347                            (conc (unparse-token (->string (car contents))) "="
     348                                  (unparse-token (->string (cdr contents))))))
     349                       ((uri? contents) (unparse-token (uri->string contents)))
     350                       (else (unparse-token (->string contents)))))
    351351               (parameter-unparsers '())) ; Maybe we want to make this a param
    352352         (loop (cdr headers)
    353353               (cons
    354354                (string-append
    355                  (unparse-token value)
     355                 value
    356356                 (unparse-params (get-params (car headers))
    357357                                 parameter-unparsers))
  • release/4/intarweb/trunk/tests/run.scm

    r11908 r11909  
    308308          "Foo: bar=qux, mooh=mumble\r\n"
    309309          (test-unparse-headers `((foo (bar . qux) (mooh . mumble)))))
     310    (test "Alist with escapes"
     311          "Foo: bar=qux, mooh=\"mum, ble\"\r\n"
     312          (test-unparse-headers `((foo (bar . "qux") (mooh . "mum, ble")))))
    310313    (test "URI"
    311314          "Foo: http://foo.com/bar\r\n"
Note: See TracChangeset for help on using the changeset viewer.