You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mod_python-dev@quetz.apache.org by "Graham Dumpleton (JIRA)" <ji...@apache.org> on 2006/03/01 12:15:41 UTC
[jira] Commented: (MODPYTHON-132) Expose ap_construct_url() in
request object.
[ http://issues.apache.org/jira/browse/MODPYTHON-132?page=comments#action_12368261 ]
Graham Dumpleton commented on MODPYTHON-132:
--------------------------------------------
This ap_construct_url() method held so much promise as far as solving the redirection issue. Unfortunately, it seems to get it wrong occasionally. :-(
req.the_request = GET /~grahamd/authenhandler/?invalidate HTTP/1.1
req.headers_in["host"] = localhost:8080
req.connection.local_addr = ('127.0.0.1', 8080)
For whatever reason though in this one case, it spat out:
http://localhost/~grahamd/authenhandler/login.html
What happened to my port number?
I think it is tied up with fact that request was against a directory and it was doing odd things based on DirectoryIndex value. Ie., Apache was trying multiple alternatives and after first somehow decided to not bother including port properly.
But then, I was trying to use mod_python.util.redirect() in an authenhandler and it looks like the redirect function may actually be buggy. Specifically, mod_python.util.redirect() returns apache.OK when it should actually be returning apache.DONE as it forms a complete response. Because it wasn't returning apache.DONE, Apache kept trying to match files in DirectoryIndex when it should have given up after the first because a redirect response was being returned.
Will have to do some testing and will have to post a distinct issue if it should be changed.
> Expose ap_construct_url() in request object.
> --------------------------------------------
>
> Key: MODPYTHON-132
> URL: http://issues.apache.org/jira/browse/MODPYTHON-132
> Project: mod_python
> Type: Improvement
> Components: core
> Versions: 3.3
> Reporter: Graham Dumpleton
>
> Apache provides the function ap_construct_url(). Its purpose is:
> char *ap_construct_url (pool *p, const char *uri, const request_rec *r)
> This function builds a fully qualified URI string from the path specified
> by uri, using the information stored in the request record r to determine
> the server name and port. The port number is not included in the string
> if it is the same as the default port 80.
> For example, imagine that the current request is directed to the virtual
> server www.modperl.com at port 80. Then the following call will return
> the string http://www.modperl.com/ index.html:
> char *url = ap_construct_url(r->pool, "/index.html", r);
> This may be a solution to issue previously discussed about how to create a full URL for purpose of doing a redirect.
> Even if not perfect, should be exposed as req.construct_url(). After all, the Apache folks are more likely to get this correct and maintain it, better than we can do our own version in Python.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira