[mod_python] weird request.connection.remote_ip value

Graham Dumpleton grahamd at dscpl.com.au
Sat Jul 8 22:38:11 EDT 2006


On 09/07/2006, at 12:13 PM, David Harvey wrote:

> I'm running mod_python 3.2.8 on Mac OS 10.4.6, python 2.4.3, apache  
> 2.2.2, on my desktop machine.
>
> I've got apache set up to load this script:
>
> ========================= begin
>
> from mod_python import apache
>
> def handler(request):
>     request.write(request.connection.remote_ip)
>     return apache.OK
>
> ========================= end
>
> When I browse to "http://127.0.0.1/", the script prints out  
> "127.0.0.1" as expected.
>
> If I connect from a local network, e.g. to "http://192.168.0.6/" it  
> prints out "192.168.0.4" (the address of the other machine) as  
> expected.
>
> But when I browse to "http://localhost/" from this machine, it  
> prints "::1".
>
> What does "::1" mean? Why isn't it giving me an IP address?  
> Shouldn't I be getting "127.0.0.1" as above? How can I guarantee to  
> get an IP address?

This field is populated by apr_sockaddr_ip_get() in Apache Runtime  
library. The field
can be populated with either IPv4 or IPv6 addresses. On a Mac, when  
you use the
string "localhost" it is as far as I know actually using an IPv6  
connection to Apache and
"::1" is what the Mac is using to identify that IPv6 client.

What do you want the remote IP address for? Depending on what you  
want to do,
there may be better ways of doing it.

Graham


More information about the Mod_python mailing list