Changeset 15093 in project


Ignore:
Timestamp:
06/28/09 20:39:27 (10 years ago)
Author:
sjamaan
Message:

Make cookie parser a bit smarter

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

Legend:

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

    r15091 r15093  
    557557               (unparsed-params
    558558                (map (lambda (p)
    559                        (sprintf "~A=~A"
    560                                 (unparse-token
    561                                  (conc "$" (symbol->http-name (car p))))
    562                                 (unparse-token (cdr p))))
     559                       (if (eq? (cdr p) #t)
     560                           (unparse-token (conc "$" (symbol->http-name (car p))))
     561                           (sprintf "~A=~A"
     562                                    (unparse-token
     563                                     (conc "$" (symbol->http-name (car p))))
     564                                    (cond
     565                                     ((and (eq? (car p) 'port) (pair? (cdr p)))
     566                                      (string-join
     567                                       (map number->string (cdr p)) ","))
     568                                     (else (unparse-token (cdr p)))))))
    563569                     params))
    564570               (cookie (get-value (car headers)))
  • release/4/intarweb/trunk/tests/run.scm

    r15091 r15093  
    474474          "Cookie: foo=bar; $Path=/; qux=mooh; $Unknown=something\r\n"
    475475          (test-unparse-headers `((cookie #((foo . "bar") ((path . "/")))
    476                                           #((qux . "mooh") ((unknown . "something")))))))))
     476                                          #((qux . "mooh") ((unknown . "something")))))))
     477    (test "Port list"
     478          "Cookie: foo=bar; $Port=80,8080\r\n"
     479          (test-unparse-headers `((cookie #((foo . "bar")
     480                                            ((port . (80 8080))))))))))
    477481
    478482(define (test-read-request str)
Note: See TracChangeset for help on using the changeset viewer.