httpd-bugs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 43550] New: - mod_negotiation is not passing query strings when using typemaps
Date Thu, 04 Oct 2007 13:52:59 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=43550>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=43550

           Summary: mod_negotiation is not passing query strings when using
                    typemaps
           Product: Apache httpd-2
           Version: 2.2.6
          Platform: All
        OS/Version: Linux
            Status: NEW
          Severity: regression
          Priority: P2
         Component: mod_negotiation
        AssignedTo: bugs@httpd.apache.org
        ReportedBy: jose@w3.org


Query strings are not being passed along when mod_negotiation
combines  multiviews with typemap processing. This is a regression
compared to the behavior we had on Apache 1.3.x. It is complementary
to PR 33112, which fixed a similar problem, but in a different part
of the same module.

The guilty party is the call to

   ap_internal_fast_redirect(sub_req, r)

in mod_negotiation.c:handle_multi() which discards the
previously parsed args and path_info. That info is
not regenerated again. I'm including a very naive patch
against 2.2.6 and trunk that fixes this.  I'm sure there is a
better way to fix it, but need more guidance
to achieve it in an optimal way.

I'm also submitting a new test for the perl-framework test procedure
that tests this behavior, to avoid having this regression in next 
versions.

== Reproducing the bug ==

You can use either use the new test I'm submitting or use the following 
scenario. Please adjust accordingly
to your server setup. I assume the use of php
for printing out the query parameters; you could use
perl (like my test procedure contribution does) or a shell script too):

1. In a directory, put the three files that I've attached:
   test.html, test.php, test.var

2. query the server for test.php?q=3

           http://localhost/test.php?q=3

    ==> you'll see that the query parameters are correctly
        passed to the script.

3. query the server for test?q=3

           http://localhost/test?q=3

    ==> in this case, the query parameters have been discarded
        by mod_negotiation's call to
        ap_internal_fast_redirect inside handle_multi().

You'll see that my naive solution is to make a backup copy of
args and path_info, if they existed, before the call to
ap_internal_fast_redirect(), and then restoring them. This
effectively solves the bug. I don't know if there's a better
way to do this.

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


Mime
View raw message