classification
Title: "pydoc -p" should listen to [::] if IPv6 is supported
Type: enhancement Stage: resolved
Components: Library (Lib) Versions: Python 3.6
process
Status: closed Resolution: rejected
Dependencies: Superseder:
Assigned To: Nosy List: berker.peksag, jleedev, loewis, martin.panter, ndim
Priority: low Keywords: patch

Created on 2008-06-27 00:11 by ndim, last changed 2016-05-16 07:27 by berker.peksag. This issue is now closed.

Files
File name Uploaded Description Edit
python-pydoc-p-ipv6.patch ndim, 2008-06-27 00:11 IPv6 support for 'pydoc -p <port>' review
Messages (5)
msg68811 - (view) Author: Hans Ulrich Niedermann (ndim) Date: 2008-06-27 00:11
According to "pydoc --help",

pydoc -p <port>
    Start an HTTP server on the given port on the local machine.

The IP address pydoc binds to is not specified, thus I would expect it
to either bind to the local address or to the wildcard address.

Current behaviour of "pydoc -p 1234" is to bind to the IPv4-only 
address 0.0.0.0:1234.

On a IPv4/IPv6 dual-stack machine, I would expect pydoc to listen to
either both 127.0.0.1:1234 and [::1]:<port>, or just [::]:<port> ([::]
also catches accesses to IPv4 addresses such as 127.0.0.1).

Then access to the pydoc webserver is
available both via IPv4 (e.g. http://127.0.0.1:1234/) and IPv6 (e.g.
http://[::1]:1234/), and in both cases via http://localhost:1234/
regardless whether localhost is resolved via IPv6 or IPv4.

Trivial patch attached (tested on Linux x86 machine with local IPv6
networking).
msg68814 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2008-06-27 05:08
That will break on systems where AF_INET6 doesn't default to
dual-stacked sockets and mapped v4 addresses (e.g. Windows); to make it
work correctly, you'll also have to disable the IPV6_V6ONLY option,
which then breaks on systems which don't implement that option (e.g.
Windows XP).
msg262883 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2016-04-05 01:23
I understand Windows XP isn’t so important these days. So maybe we just need to disable IPV6_V6ONLY. (Unless we want this for 2.7 maybe?)
msg265517 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2016-05-14 10:53
Currently pydoc only binds to IPv4 localhost, not the “any-address” 0.0.0.0. See Issue 22421 and Issue 672656.

Apart from satisfying Hans’s expectation, what is the benefit of running pydoc on IPv6? I guess it would be possible to bind two sockets, one to IPv4 localhost (127.1 or ::ffff:127.0.0.1), and the other IPv6 localhost (::1). But why bother?
msg265676 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2016-05-16 07:27
Agreed with Martin.
History
Date User Action Args
2016-05-16 07:27:47berker.peksagsetstatus: pending -> closed

nosy: + berker.peksag, - Daniel Griffin
messages: + msg265676
priority: normal -> low
resolution: rejected
stage: needs patch -> resolved
2016-05-14 12:53:55martin.pantersetstatus: open -> pending
type: crash -> enhancement
versions: - Python 2.7
2016-05-14 12:53:21martin.pantersetfiles: - sync_node.xml
2016-05-14 12:29:42Daniel Griffinsetfiles: + sync_node.xml
2016-05-14 12:28:56Daniel Griffinsetstatus: pending -> open
nosy: + Daniel Griffin

type: enhancement -> crash
versions: + Python 2.7
2016-05-14 10:53:57martin.pantersetstatus: open -> pending

messages: + msg265517
2016-04-05 01:23:41martin.pantersetstage: needs patch
messages: + msg262883
versions: + Python 3.6, - Python 3.3
2016-04-04 23:04:12jleedevsetnosy: + jleedev
2015-02-08 10:43:16martin.pantersetnosy: + martin.panter
2012-02-21 04:07:15eric.araujosettype: behavior -> enhancement
versions: + Python 3.3, - Python 2.6, Python 3.1, Python 2.7, Python 3.2
2010-06-09 23:07:13terry.reedysetversions: + Python 3.1, Python 2.7, Python 3.2, - Python 2.5
2008-06-27 05:08:26loewissetnosy: + loewis
messages: + msg68814
2008-06-27 00:11:28ndimcreate