This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2007年12月19日 20:07 by dmorr, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| nntplib_ipv6.patch | dmorr, 2007年12月19日 20:07 | |||
| Messages (17) | |||
|---|---|---|---|
| msg58822 - (view) | Author: Derek Morr (dmorr) | Date: 2007年12月19日 20:07 | |
nntplib hardcodes AF_INET for the socket address family. This prevents it from using IPv6. Attached is a patch that converts NNTP.__init__() to use socket.create_connection(), which is IPv6-capable. |
|||
| msg78504 - (view) | Author: Chris Morrow (morrowc) | Date: 2008年12月30日 04:51 | |
This patch doesn't appear to work for python2.5.1 ->
Python 2.5.1 (r251:54863, Jun 15 2008, 18:24:51)
[GCC 4.3.0 20080428 (Red Hat 4.3.0-8)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from nntplib import NNTP
>>> conn = NNTP('newszilla6.xs4all.nl')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/nntplib.py", line 114, in __init__
self.sock = socket.create_connection((host, port))
AttributeError: 'module' object has no attribute 'create_connection'
(at least for me it doesn't work...
Linux hostnamehere 2.6.26.6-79.fc9.i686 #1 SMP Fri Oct 17 14:52:14 EDT
2008 i686 i686 i386 GNU/Linux)
I'd be happy to try something else, or debug in other ways it that'd
help... This really ought to get fixed if possible.
|
|||
| msg78505 - (view) | Author: Derek Morr (dmorr) | Date: 2008年12月30日 05:01 | |
Yes. The patch is against 2.6. It uses the socket.create_connection() helper function, which was added in 2.6. See http://svn.python.org/view? rev=54546&view=rev for the commit message. If you really want to apply it to 2.5, it's trivial to adapt the patch. Just replace the call to create_connection() with something like this: msg = "getaddrinfo returns an empty list" for res in getaddrinfo(host, port, 0, SOCK_STREAM): af, socktype, proto, canonname, sa = res sock = None try: sock = socket(af, socktype, proto) if timeout is not _GLOBAL_DEFAULT_TIMEOUT: sock.settimeout(timeout) sock.connect(sa) self.sock = sock except error, msg: if sock is not None: sock.close() raise error, msg |
|||
| msg78506 - (view) | Author: Chris Morrow (morrowc) | Date: 2008年12月30日 05:05 | |
oh crap :( I saw the 2.6 AFTER I posted the message :( sorry. grr, have to find a fix for 2.5 I suppose now. Thanks. |
|||
| msg78507 - (view) | Author: Chris Morrow (morrowc) | Date: 2008年12月30日 05:06 | |
oy, and I'm not reading emails properly. I'll try the fix you propose for 2.5. |
|||
| msg78508 - (view) | Author: Chris Morrow (morrowc) | Date: 2008年12月30日 06:08 | |
a possible fix for 2.5 is: morrowc@tweezer:/tmp$ diff -U3 nntplib.py.orig nntplib.py --- nntplib.py.orig 2008年12月30日 01:06:14.000000000 -0500 +++ nntplib.py 2008年12月30日 01:07:33.000000000 -0500 @@ -109,8 +109,19 @@ """ self.host = host self.port = port - self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - self.sock.connect((self.host, self.port)) + msg = "getaddrinfo returns an empty list" + for res in socket.getaddrinfo(self.host, self.port, 0, socket.SOCK_STREAM): + af, socktype, proto, canonname, sa = res + sock = None + try: + self.sock = socket.socket(af, socktype, proto) + self.sock.connect(sa) + + except error, msg: + if self.sock is not None: + self.sock.close() + raise NNTPError, msg + self.file = self.sock.makefile('rb') self.debugging = 0 self.welcome = self.getresp() I'll open a bug against 2.5 now with this. |
|||
| msg78578 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2008年12月31日 00:18 | |
I like nntplib_ipv6.patch: it's a generic solution (may support address families other than IPv6) and reuse code (socket.create_connection()) is always a good thing :-) |
|||
| msg78579 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2008年12月31日 00:20 | |
About Python 2.5: this branch doesn't accept bugfix anymore, only security issues. So only Python 2.6+ and 3.0+ can be patched. |
|||
| msg78585 - (view) | Author: Chris Morrow (morrowc) | Date: 2008年12月31日 01:10 | |
Are we sure that the 2.6 fix (in the patch) will make it into 2.6? (and the right upstream patching will happen to the 3.0 code as well?) |
|||
| msg78676 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2009年01月01日 01:58 | |
I was going to suggest writing a test but I see that nntplib hasn't got a single unit test :-O |
|||
| msg84845 - (view) | Author: Derek Morr (dmorr) | Date: 2009年03月31日 17:40 | |
Any chance of this being applied soon? It's been sitting in the bugtracker for over a year now. |
|||
| msg84846 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2009年03月31日 17:42 | |
@dmorr: It would be faster if nntplib has some tests :-/ |
|||
| msg84847 - (view) | Author: Derek Morr (dmorr) | Date: 2009年03月31日 17:48 | |
I'm confused by that. In order to apply a 3 line patch (which replaces one standard library function with another), you want an entire test suite written for nntplib? If we're willing to accept that nttplib works reasonably well now, why is the testsuite necessary? socket.create_connection() is already used in several other modules. |
|||
| msg85015 - (view) | Author: Chris Morrow (morrowc) | Date: 2009年04月01日 14:28 | |
This is a little silly and painful... it's utterly broken to hardcode the AF type in this way, could we please apply a patch (something like the proposed seems to work fine) and get this rolled into the next release? It seems really lame to not be able to support normal internet protocols in a tools language. |
|||
| msg85020 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2009年04月01日 15:31 | |
Assuming the patch does work, +1 for applying it. |
|||
| msg87767 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2009年05月14日 21:23 | |
Your patch is committed in r72640. Thanks! |
|||
| msg87775 - (view) | Author: Derek Morr (dmorr) | Date: 2009年05月14日 22:25 | |
Thanks. Is there any chance of getting bug 1655 fixed as well? imaplib has the same issue as nntplib, and the patch is identical. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:29 | admin | set | github: 46005 |
| 2009年05月14日 22:25:27 | dmorr | set | messages: + msg87775 |
| 2009年05月14日 21:23:38 | pitrou | set | status: open -> closed resolution: fixed messages: + msg87767 |
| 2009年04月01日 15:31:07 | pitrou | set | messages: + msg85020 |
| 2009年04月01日 14:28:56 | morrowc | set | messages: + msg85015 |
| 2009年03月31日 17:48:27 | dmorr | set | messages: + msg84847 |
| 2009年03月31日 17:42:49 | vstinner | set | messages: + msg84846 |
| 2009年03月31日 17:40:04 | dmorr | set | messages: + msg84845 |
| 2009年01月01日 01:58:59 | pitrou | set | nosy:
+ pitrou messages: + msg78676 |
| 2008年12月31日 01:10:24 | morrowc | set | messages: + msg78585 |
| 2008年12月31日 00:20:31 | vstinner | set | messages: + msg78579 |
| 2008年12月31日 00:18:59 | vstinner | set | nosy:
+ vstinner messages: + msg78578 |
| 2008年12月30日 06:08:48 | morrowc | set | messages: + msg78508 |
| 2008年12月30日 05:06:35 | morrowc | set | messages: + msg78507 |
| 2008年12月30日 05:05:16 | morrowc | set | messages: + msg78506 |
| 2008年12月30日 05:01:57 | dmorr | set | messages: + msg78505 |
| 2008年12月30日 04:51:25 | morrowc | set | nosy:
+ morrowc messages: + msg78504 |
| 2007年12月20日 05:00:50 | christian.heimes | set | priority: normal keywords: + patch |
| 2007年12月20日 00:05:41 | giampaolo.rodola | set | nosy: + giampaolo.rodola |
| 2007年12月19日 20:07:10 | dmorr | create | |