Comment 6 for bug 130289

Revision history for this message
Jean-Baptiste Lallement (jibel) wrote :

The problem is not the encoding of messages between the worker and the method but in the method's configuration handler AcqMethod::Configuration

This method takes the message string, unquote all the items (hence the URI), and set the associated configuration item.
The De/QuoteString method is not bijective if the string already contains one of the unquoted character.
e.g
http://user2:p%40ssword@localhost:3128 is unquoted to http://user2:p@ssword@localhost:3128
the resulting string is an invalid URI and cannot be parsed and the quoting cannot be reversed because
http://user2:p@ssword@localhost:3128 will give http://user2:p%40ssword%40localhost:3128

I made a quick fix to the parser for the '@' but if the password contains an '/' it becomes quite tricky and it's more of a hack than a fix. Furthermore the problem is not the uri parser here.

We cannot escape the URI in HttpMethod::Configuration for the reason above.

At first sight, a solution could be to add an exclusion list of items that should not be dequoted in the configuration handler and processed specifically in each method.

I'll try to post a prototype.