You wrote:
The path gets ns_urlencode(d) but the query list does not.
When the following test-script (i called it www/adreturnurl.tcl)
ns_return 200 text/plain [subst {
ad_return_url: [ad_return_url]
}]
is called from the browser with query parameter containing a value that has to be urlencoded (here the percent sign)
https://localhost:8443/ad_return_url?x=a%b
it returns
ad_return_url: /ad_return_url?x=a%25b
where the percent sign is properly escaped.
What is the concern? If you think, there is a bug, please submit an entry to the bugtracker with an example, how to reproduce it.