gopher://example.com/1a%78b and gopher://example.com/1axb should be equivalent, but they are not. The first one sends a%78b to the server, and the second one sends axb to the server.
As another example, a URL of gopher://example.com/7search%09string should separate search and string with a tab byte in the request, but those are instead separated by a literal %09.
This issue actually occurs with a Gopher menu item that has a selector that contains a space—somewhere in Dillo the space is encoded in the URL as %20 (which is correct), but the percent-encoded space in the URL is not decoded back to a space by the plugin.
I haven't tested it, but from looking at the source code it seems like a # in a selector is probably not handled well either. Any # in a selector must be encoded as %23 so that it's not interpreted as a fragment separator, and then %23 must be decoded back to # before it's sent to the server.
gopher://example.com/1a%78bandgopher://example.com/1axbshould be equivalent, but they are not. The first one sendsa%78bto the server, and the second one sendsaxbto the server.As another example, a URL of
gopher://example.com/7search%09stringshould separatesearchandstringwith a tab byte in the request, but those are instead separated by a literal%09.This issue actually occurs with a Gopher menu item that has a selector that contains a space—somewhere in Dillo the space is encoded in the URL as
%20(which is correct), but the percent-encoded space in the URL is not decoded back to a space by the plugin.I haven't tested it, but from looking at the source code it seems like a
#in a selector is probably not handled well either. Any#in a selector must be encoded as%23so that it's not interpreted as a fragment separator, and then%23must be decoded back to#before it's sent to the server.