Commit 7960648a authored by Ryan Davis's avatar Ryan Davis Committed by Kevin Rosenberg

Completed support for http://www.ietf.org/rfc/rfc2396.txt 2.4.3 by adding...

Completed support for http://www.ietf.org/rfc/rfc2396.txt 2.4.3 by adding special case for control code 7F.

Had to increase the bit-vector length to 128, and added #\Rubout (#x7F) to *excluded-characters*.

Added a docstring and test.
parent 1c768744
......@@ -356,16 +356,18 @@
(defparameter *excluded-characters*
(append
;; exclude control characters
(loop for i from 0 to #x1f
collect (code-char i))
'(;; `delims' (except #\%, because it's handled specially):
#\< #\> #\" #\space #\#
#\Rubout ;; (code-char #x7f)
;; `unwise':
#\{ #\} #\| #\\ #\^ #\[ #\] #\`)))
#\{ #\} #\| #\\ #\^ #\[ #\] #\`))
"Excluded charcters from RFC2369 (http://www.ietf.org/rfc/rfc2396.txt 2.4.3)")
(defun reserved-char-vector (chars &key except)
(do* ((a (make-array 127 :element-type 'bit :initial-element 0))
(do* ((a (make-array 128 :element-type 'bit :initial-element 0))
(chars chars (cdr chars))
(c (car chars) (car chars)))
((null chars) a)
......
......@@ -408,15 +408,17 @@
:condition-type 'uri-parse-error)
res)
;;an escaped newline isn't rendered properly
(push
`(let ((weird-uri "https://example.com/q?foo%0abar%20baz"))
(test
weird-uri
(puri:render-uri (puri:parse-uri weird-uri) nil)
:test #'string=)
) res)
;;; tests for weird control characters
;; http://www.ietf.org/rfc/rfc2396.txt 2.4.3
(dolist (x '("https://example.com/q?foo%0abar%20baz" ;;an escaped newline
"https://example.com/q?%7f" ;; 7f, 127
))
(push
`(let ((weird-uri ,x))
(test weird-uri
(puri:render-uri (puri:parse-uri weird-uri) nil)
:test #'string=)
) res))
`(progn ,@(nreverse res))))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment