Hi,
I've noticed that {s.escape.param} doesn't change "@" into "%40", and yet RFC3261 specifies pvalue as
pvalue = 1*paramchar paramchar = param-unreserved / unreserved / escaped param-unreserved = "[" / "]" / "/" / ":" / "&" / "+" / "$"
with: unreserved = alphanum / mark mark = "-" / "_" / "." / "!" / "~" / "*" / "'" / "(" / ")" escaped = "%" HEXDIG HEXDIG
I've committed a patch in coudot/escape-param branch to fix the escape function. Several unreserved characters were escaped, and some reserved ones weren't.
Regards