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/02/17 02:00:24 UTC

[jira] Created: (MODPYTHON-132) Expose ap_construct_url() in request object.

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


[jira] Resolved: (MODPYTHON-132) Expose ap_construct_url() in request object.

Posted by "Graham Dumpleton (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/MODPYTHON-132?page=all ]
     
Graham Dumpleton resolved MODPYTHON-132:
----------------------------------------

    Resolution: Fixed

> 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
>     Assignee: Graham Dumpleton
>      Fix For: 3.3

>
> 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


[jira] Work started: (MODPYTHON-132) Expose ap_construct_url() in request object.

Posted by "Graham Dumpleton (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/MODPYTHON-132?page=all ]
     
Work on MODPYTHON-132 started by Graham Dumpleton

> 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
>     Assignee: Graham Dumpleton
>      Fix For: 3.3

>
> 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


[jira] Updated: (MODPYTHON-132) Expose ap_construct_url() in request object.

Posted by "Graham Dumpleton (JIRA)" <ji...@apache.org>.
     [ http://issues.apache.org/jira/browse/MODPYTHON-132?page=all ]

Graham Dumpleton updated MODPYTHON-132:
---------------------------------------

    Fix Version: 3.3
      Assign To: Graham Dumpleton

> 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
>     Assignee: Graham Dumpleton
>      Fix For: 3.3

>
> 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


[jira] Closed: (MODPYTHON-132) Expose ap_construct_url() in request object.

Posted by "Graham Dumpleton (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/MODPYTHON-132?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Graham Dumpleton closed MODPYTHON-132.
--------------------------------------


> Expose ap_construct_url() in request object.
> --------------------------------------------
>
>                 Key: MODPYTHON-132
>                 URL: https://issues.apache.org/jira/browse/MODPYTHON-132
>             Project: mod_python
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 3.3
>            Reporter: Graham Dumpleton
>         Assigned To: Graham Dumpleton
>             Fix For: 3.3
>
>
> 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.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (MODPYTHON-132) Expose ap_construct_url() in request object.

Posted by "Graham Dumpleton (JIRA)" <ji...@apache.org>.
    [ 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