Comment 3 for bug 1670917

Revision history for this message
clayg (clay-gerrard) wrote :

Interesting...

I couldn't find an invocation of swiftclient.client.Connection.get_object that would produce a result like that (using latest swiftclient and swift with name_check forbidden_chars = " " sort of configurations - hardly an exhaustive search). I find the error message curious tho? I agree if somehow the server managed to receive a request line like 'GET /v1/auth/container/a b x? HTTP/1.1' it very much should respond bad syntax [1]!

And I can reproduce that [2] - but not with swiftclient.client.Connection.get_object who very much wants to quote the path? I'm not even sure *requests* would let you get an unquoted path on the wire? I wonder if tcpdump could prove the client *is* sending the quoted url - the ClientException sure makes it look like it quoted!?

So what split brain'd madness is allowing that path to get to the python http server unquoted? Who is adding the bare query string param? Is this a bug between the client and the wire or a malevolent proxy between the wire and our eventlet.wsgi.server?

1. https://github.com/python/cpython/blob/6c6186da42bf0080f273b439f06d2135f94a16d5/Lib/BaseHTTPServer.py#L286
2. https://gist.github.com/clayg/2ae111dcc8aec459a6b3838853ddc43f