[pypy-svn] r18970 - in pypy/dist/pypy/module/_socket: . rpython
afa at codespeak.net
afa at codespeak.net
Tue Oct 25 20:10:28 CEST 2005
Author: afa
Date: Tue Oct 25 20:10:22 2005
New Revision: 18970
Modified:
pypy/dist/pypy/module/_socket/interp_socket.py
pypy/dist/pypy/module/_socket/rpython/rsocket.py
Log:
Yet another correction for socket.getaddrinfo()
Modified: pypy/dist/pypy/module/_socket/interp_socket.py
==============================================================================
--- pypy/dist/pypy/module/_socket/interp_socket.py (original)
+++ pypy/dist/pypy/module/_socket/interp_socket.py Tue Oct 25 20:10:22 2005
@@ -328,9 +328,11 @@
def enumerateaddrinfo(space, addr):
result = []
- while addr.nextinfo():
- info = (addr.family, addr.socktype, addr.proto,
- addr.canonname, addr.sockaddr)
+ while True:
+ addrinfo = addr.nextinfo()
+ if addrinfo[0] == 0:
+ break
+ info = addrinfo[:4] + (addrinfo[4:],)
result.append(space.wrap(info))
return space.newlist(result)
Modified: pypy/dist/pypy/module/_socket/rpython/rsocket.py
==============================================================================
--- pypy/dist/pypy/module/_socket/rpython/rsocket.py (original)
+++ pypy/dist/pypy/module/_socket/rpython/rsocket.py Tue Oct 25 20:10:22 2005
@@ -1,26 +1,27 @@
"""
-Helper file for Python equivalents of os specific calls.
+Helper file for Python equivalents of socket specific calls.
"""
import socket
class ADDRINFO(object):
+ # a simulated addrinfo structure from C, i.e. a chained list
+ # returned by getaddrinfo()
def __init__(self, host, port, family, socktype, proto, flags):
- self._entries = iter(socket.getaddrinfo(
- host, port, family, socktype, proto, flags))
-
+ addrinfo = socket.getaddrinfo(host, port,
+ family, socktype, proto, flags)
+ self._entries = iter(addrinfo)
+
def nextinfo(self):
try:
info = self._entries.next()
except StopIteration:
- return None
- (self.family, self.socktype, self.proto,
- self.canonname, self.sockaddr) = info
- return info[:4] + info[4]
+ return [0] * 8
+
+ return info[:-1] + info[-1]
def free(self):
pass
-
def getaddrinfo(host, port, family, socktype, proto, flags):
return ADDRINFO(host, port, family, socktype, proto, flags)
More information about the Pypy-commit
mailing list