[pypy-svn] r37657 - pypy/dist/pypy/module/rsocket
ac at codespeak.net
ac at codespeak.net
Wed Jan 31 12:04:08 CET 2007
Author: ac
Date: Wed Jan 31 12:04:06 2007
New Revision: 37657
Modified:
pypy/dist/pypy/module/rsocket/interp_func.py
pypy/dist/pypy/module/rsocket/interp_socket.py
Log:
Be more paranoid about the GIL.
Modified: pypy/dist/pypy/module/rsocket/interp_func.py
==============================================================================
--- pypy/dist/pypy/module/rsocket/interp_func.py (original)
+++ pypy/dist/pypy/module/rsocket/interp_func.py Wed Jan 31 12:04:06 2007
@@ -10,7 +10,12 @@
Return the current host name.
"""
try:
- res = rsocket.gethostname()
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ res = rsocket.gethostname()
+ finally:
+ if GIL is not None: GIL.acquire(True)
except SocketError, e:
raise converted_error(space, e)
return space.wrap(res)
@@ -22,7 +27,12 @@
Return the IP address (a string of the form '255.255.255.255') for a host.
"""
try:
- addr = rsocket.gethostbyname(hostname)
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ addr = rsocket.gethostbyname(hostname)
+ finally:
+ if GIL is not None: GIL.acquire(True)
ip = addr.get_host()
except SocketError, e:
raise converted_error(space, e)
@@ -43,7 +53,12 @@
for a host. The host argument is a string giving a host name or IP number.
"""
try:
- res = rsocket.gethostbyname_ex(host)
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ res = rsocket.gethostbyname_ex(host)
+ finally:
+ if GIL is not None: GIL.acquire(True)
except SocketError, e:
raise converted_error(space, e)
return common_wrapgethost(space, res)
@@ -56,7 +71,12 @@
for a host. The host argument is a string giving a host name or IP number.
"""
try:
- res = rsocket.gethostbyaddr(host)
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ res = rsocket.gethostbyaddr(host)
+ finally:
+ if GIL is not None: GIL.acquire(True)
except SocketError, e:
raise converted_error(space, e)
return common_wrapgethost(space, res)
@@ -74,7 +94,12 @@
else:
proto = space.str_w(w_proto)
try:
- port = rsocket.getservbyname(name, proto)
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ port = rsocket.getservbyname(name, proto)
+ finally:
+ if GIL is not None: GIL.acquire(True)
except SocketError, e:
raise converted_error(space, e)
return space.wrap(port)
@@ -92,7 +117,12 @@
else:
proto = space.str_w(w_proto)
try:
- service = rsocket.getservbyport(port, proto)
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ service = rsocket.getservbyport(port, proto)
+ finally:
+ if GIL is not None: GIL.acquire(True)
except SocketError, e:
raise converted_error(space, e)
return space.wrap(service)
@@ -104,7 +134,12 @@
Return the protocol number for the named protocol. (Rarely used.)
"""
try:
- proto = rsocket.getprotobyname(name)
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ proto = rsocket.getprotobyname(name)
+ finally:
+ if GIL is not None: GIL.acquire(True)
except SocketError, e:
raise converted_error(space, e)
return space.wrap(proto)
@@ -115,8 +150,14 @@
Get host and port for a sockaddr."""
try:
- addr = rsocket.ipaddr_from_object(space, w_sockaddr)
- host, servport = rsocket.getnameinfo(addr, flags)
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ addr = rsocket.ipaddr_from_object(space, w_sockaddr)
+ host, servport = rsocket.getnameinfo(addr, flags)
+ finally:
+ if GIL is not None: GIL.acquire(True)
+
except SocketError, e:
raise converted_error(space, e)
return space.newtuple([space.wrap(host), space.wrap(servport)])
@@ -286,7 +327,14 @@
raise OperationError(space.w_TypeError,
space.wrap("Int or String expected"))
try:
- lst = rsocket.getaddrinfo(host, port, family, socktype, proto, flags)
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ lst = rsocket.getaddrinfo(host, port, family, socktype,
+ proto, flags)
+ finally:
+ if GIL is not None: GIL.acquire(True)
+
except SocketError, e:
raise converted_error(space, e)
lst1 = [space.newtuple([space.wrap(family),
Modified: pypy/dist/pypy/module/rsocket/interp_socket.py
==============================================================================
--- pypy/dist/pypy/module/rsocket/interp_socket.py (original)
+++ pypy/dist/pypy/module/rsocket/interp_socket.py Wed Jan 31 12:04:06 2007
@@ -36,7 +36,12 @@
sockets the address is a tuple (ifname, proto [,pkttype [,hatype]])
"""
try:
- self.bind(self.addr_from_object(space, w_addr))
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ self.bind(self.addr_from_object(space, w_addr))
+ finally:
+ if GIL is not None: GIL.acquire(True)
except SocketError, e:
raise converted_error(space, e)
bind_w.unwrap_spec = ['self', ObjSpace, W_Root]
@@ -47,7 +52,12 @@
Close the socket. It cannot be used after this call.
"""
try:
- self.close()
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ self.close()
+ finally:
+ if GIL is not None: GIL.acquire(True)
except SocketError, e:
raise converted_error(space, e)
close_w.unwrap_spec = ['self', ObjSpace]
@@ -113,7 +123,12 @@
info is a pair (hostaddr, port).
"""
try:
- addr = self.getpeername()
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ addr = self.getpeername()
+ finally:
+ if GIL is not None: GIL.acquire(True)
return addr.as_object(space)
except SocketError, e:
raise converted_error(space, e)
@@ -126,7 +141,12 @@
info is a pair (hostaddr, port).
"""
try:
- addr = self.getsockname()
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ addr = self.getsockname()
+ finally:
+ if GIL is not None: GIL.acquire(True)
return addr.as_object(space)
except SocketError, e:
raise converted_error(space, e)
@@ -168,7 +188,12 @@
will allow before refusing new connections.
"""
try:
- self.listen(backlog)
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ self.listen(backlog)
+ finally:
+ if GIL is not None: GIL.acquire(True)
except SocketError, e:
raise converted_error(space, e)
listen_w.unwrap_spec = ['self', ObjSpace, int]
@@ -279,10 +304,10 @@
flags = space.int_w(w_param2)
w_addr = w_param3
try:
- addr = self.addr_from_object(space, w_addr)
GIL = space.threadlocals.getGIL()
if GIL is not None: GIL.release()
try:
+ addr = self.addr_from_object(space, w_addr)
count = self.sendto(data, flags, addr)
finally:
if GIL is not None: GIL.acquire(True)
@@ -349,7 +374,12 @@
(flag == SHUT_RDWR).
"""
try:
- self.shutdown(how)
+ GIL = space.threadlocals.getGIL()
+ if GIL is not None: GIL.release()
+ try:
+ self.shutdown(how)
+ finally:
+ if GIL is not None: GIL.acquire(True)
except SocketError, e:
raise converted_error(space, e)
shutdown_w.unwrap_spec = ['self', ObjSpace, int]
More information about the Pypy-commit
mailing list