On Wed, Aug 06, 2003 at 05:41:17PM +0400, Oleg Broytmann wrote:
> I found that the problem is between Medusa and Quixote: QuixoteHandler
> incorrectly parses request.uri.
> The patch to solve this is attached. I tested the patch on Linux and
> Windows, Python 2.2 and 2.3, browsers Mozilla and M$IE.
>
> I am not sure what to with "params". I have never used this style of
> parameters. May be I should append them to path? to query_string?
I'm pretty sure they shouldn't be part of the query_string but I don't
know where else they should go. I've never seen them used before
either.
> ! 'REQUEST_URI':path,
I don't think this is right. Shouldn't it be:
'REQUEST_URI': request.uri,
I've attached a patch if someone wants to test.
Neil
Index: medusa_http.py
===================================================================
--- medusa_http.py (revision 22369)
+++ medusa_http.py (working copy)
@@ -56,9 +56,9 @@
def continue_request (self, data, request):
msg = rfc822.Message(StringIO('\n'.join(request.header)))
remote_addr, remote_port = request.channel.addr
- query_string = ''
- if '?' in request.uri:
- [request.uri, query_string] = request.uri.split('?', 1)
+ path, params, query_string, fragment = request.split_uri()
+ if query_string.startswith('?'):
+ query_string = query_string[1:]
environ = {'REQUEST_METHOD': request.command,
'ACCEPT_ENCODING': msg.get('Accept-encoding'),
@@ -68,7 +68,7 @@
'HTTP_COOKIE': msg.get('Cookie'),
'HTTP_REFERER': msg.get('Referer'),
'HTTP_USER_AGENT': msg.get('User-agent'),
- 'PATH_INFO': request.uri,
+ 'PATH_INFO': path,
'QUERY_STRING': query_string,
'REMOTE_ADDR': remote_addr,
'REMOTE_PORT': str(remote_port),