From: <am...@us...> - 2007-06-18 20:32:14
|
Revision: 3258 http://svn.sourceforge.net/jython/?rev=3258&view=rev Author: amak Date: 2007-06-18 13:32:11 -0700 (Mon, 18 Jun 2007) Log Message: ----------- Updated socket module to use symbolic constants from the errno module instead of raw integers. Also retain support for 2.1, by falling back to integers when the errno module is not available. Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2007-06-18 06:27:49 UTC (rev 3257) +++ trunk/jython/Lib/socket.py 2007-06-18 20:32:11 UTC (rev 3258) @@ -43,13 +43,19 @@ import javax.net.ssl.SSLSocketFactory import org.python.core.PyFile -# Some errno constants, until we establish a separate errno module. +try: + import errno + ERRNO_EWOULDBLOCK = errno.EWOULDBLOCK + ERRNO_EACCES = errno.EACCES + ERRNO_ECONNREFUSED = errno.ECONNREFUSED + ERRNO_EINPROGRESS = errno.EINPROGRESS +except ImportError: + # Support jython 2.1 + ERRNO_EWOULDBLOCK = 11 + ERRNO_EACCES = 13 + ERRNO_ECONNREFUSED = 111 + ERRNO_EINPROGRESS = 115 -ERRNO_EACCESS = 10035 -ERRNO_EWOULDBLOCK = 10035 -ERRNO_EINPROGRESS = 10036 -ERRNO_ECONNREFUSED = 10061 - class error(Exception): pass class herror(error): pass class gaierror(error): pass @@ -62,7 +68,7 @@ # (<javaexception>, <circumstance>) : lambda: <code that raises the python equivalent> (java.io.InterruptedIOException, ALL) : lambda exc: timeout('timed out'), -(java.net.BindException, ALL) : lambda exc: error(ERRNO_EACCESS, 'Permission denied'), +(java.net.BindException, ALL) : lambda exc: error(ERRNO_EACCES, 'Permission denied'), (java.net.ConnectException, ALL) : lambda exc: error( (ERRNO_ECONNREFUSED, 'Connection refused') ), (java.net.SocketTimeoutException, ALL) : lambda exc: timeout('timed out'), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cg...@us...> - 2007-07-21 18:43:10
|
Revision: 3336 http://svn.sourceforge.net/jython/?rev=3336&view=rev Author: cgroves Date: 2007-07-21 11:43:09 -0700 (Sat, 21 Jul 2007) Log Message: ----------- Interpret -1 to mean the socket was closed, and return the empty string from recv in that case to match CPython. Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2007-07-21 18:40:32 UTC (rev 3335) +++ trunk/jython/Lib/socket.py 2007-07-21 18:43:09 UTC (rev 3336) @@ -549,7 +549,9 @@ self.sock_impl.jchannel.finishConnect() data = jarray.zeros(n, 'b') m = self.sock_impl.read(data) - if m <= 0: + if m == -1:#indicates EOF has been reached, so we just return the empty string + return "" + elif m <= 0: if self.mode == MODE_NONBLOCKING: raise would_block_error() return "" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cg...@us...> - 2007-07-28 06:10:44
|
Revision: 3360 http://jython.svn.sourceforge.net/jython/?rev=3360&view=rev Author: cgroves Date: 2007-07-27 23:10:26 -0700 (Fri, 27 Jul 2007) Log Message: ----------- Set reuse_addr on _tcpsocket wrappers to the value of getReuseAddress on the Java Socket instance it's going to wrap. Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2007-07-28 02:19:08 UTC (rev 3359) +++ trunk/jython/Lib/socket.py 2007-07-28 06:10:26 UTC (rev 3360) @@ -498,6 +498,7 @@ if not new_sock: raise would_block_error() cliconn = _tcpsocket() + cliconn.reuse_addr = new_sock.jsocket.getReuseAddress() cliconn._setup(new_sock) return cliconn, new_sock.getpeername() except java.lang.Exception, jlx: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cg...@us...> - 2007-07-31 08:35:24
|
Revision: 3371 http://jython.svn.sourceforge.net/jython/?rev=3371&view=rev Author: cgroves Date: 2007-07-31 01:35:16 -0700 (Tue, 31 Jul 2007) Log Message: ----------- Move the call to _setreuseaddress into _do_connect so it always takes effect before bind is called on the java socket. Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2007-07-31 05:19:58 UTC (rev 3370) +++ trunk/jython/Lib/socket.py 2007-07-31 08:35:16 UTC (rev 3371) @@ -499,7 +499,8 @@ raise would_block_error() cliconn = _tcpsocket() cliconn.reuse_addr = new_sock.jsocket.getReuseAddress() - cliconn._setup(new_sock) + cliconn.sock_impl = new_sock + cliconn._setup() return cliconn, new_sock.getpeername() except java.lang.Exception, jlx: raise _map_exception(jlx) @@ -515,6 +516,7 @@ assert not self.sock_impl host, port = self._get_host_port(addr) self.sock_impl = _client_socket_impl() + self.sock_impl._setreuseaddress(self.reuse_addr) if self.local_addr: # Has the socket been bound to a local address? bind_host, bind_port = self.local_addr self.sock_impl.bind(bind_host, bind_port) @@ -526,19 +528,17 @@ def connect(self, addr): "This signifies a client socket" self._do_connect(addr) - self._setup(self.sock_impl) + self._setup() def connect_ex(self, addr): "This signifies a client socket" self._do_connect(addr) if self.sock_impl.finish_connect(): - self._setup(self.sock_impl) + self._setup() return 0 return errno.EINPROGRESS - def _setup(self, sock): - self.sock_impl = sock - self.sock_impl._setreuseaddress(self.reuse_addr) + def _setup(self): if self.mode != MODE_NONBLOCKING: self.istream = self.sock_impl.jsocket.getInputStream() self.ostream = self.sock_impl.jsocket.getOutputStream() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2007-11-16 22:56:37
|
Revision: 3687 http://jython.svn.sourceforge.net/jython/?rev=3687&view=rev Author: pjenvey Date: 2007-11-16 14:56:36 -0800 (Fri, 16 Nov 2007) Log Message: ----------- r3663 removed SocketTypes but forgot to remove it from __all__ Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2007-11-16 22:33:38 UTC (rev 3686) +++ trunk/jython/Lib/socket.py 2007-11-16 22:56:36 UTC (rev 3687) @@ -286,7 +286,7 @@ __all__ = [ 'AF_INET', 'SO_REUSEADDR', 'SOCK_DGRAM', 'SOCK_RAW', 'SOCK_RDM', 'SOCK_SEQPACKET', 'SOCK_STREAM', 'SOL_SOCKET', - 'SocketType', 'SocketTypes', 'error', 'herror', 'gaierror', 'timeout', + 'SocketType', 'error', 'herror', 'gaierror', 'timeout', 'getfqdn', 'gethostbyaddr', 'gethostbyname', 'gethostname', 'socket', 'getaddrinfo', 'getdefaulttimeout', 'setdefaulttimeout', 'has_ipv6', 'htons', 'htonl', 'ntohs', 'ntohl', This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2007-12-29 00:06:33
|
Revision: 3882 http://jython.svn.sourceforge.net/jython/?rev=3882&view=rev Author: pjenvey Date: 2007-12-28 16:06:25 -0800 (Fri, 28 Dec 2007) Log Message: ----------- need to pass the real socket (_nonblocking_api_mixin) to ssl now that we're wrapping it, just like CPython does Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2007-12-28 12:39:43 UTC (rev 3881) +++ trunk/jython/Lib/socket.py 2007-12-29 00:06:25 UTC (rev 3882) @@ -1139,6 +1139,12 @@ cert = self._get_server_cert() return cert.getIssuerDN().toString() +_realssl = ssl +def ssl(sock, keyfile=None, certfile=None): + if hasattr(sock, "_sock"): + sock = sock._sock + return _realssl(sock, keyfile, certfile) + def test(): s = socket(AF_INET, SOCK_STREAM) s.connect(("", 80)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cg...@us...> - 2008-01-20 20:09:14
|
Revision: 4061 http://jython.svn.sourceforge.net/jython/?rev=4061&view=rev Author: cgroves Date: 2008-01-20 12:09:11 -0800 (Sun, 20 Jan 2008) Log Message: ----------- consistently use getHostName in getsockname and getpeername rather than half getHostAddress and getHostName Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2008-01-19 22:59:53 UTC (rev 4060) +++ trunk/jython/Lib/socket.py 2008-01-20 20:09:11 UTC (rev 4061) @@ -666,12 +666,12 @@ try: if not self.sock_impl: host, port = self.local_addr or ("", 0) - host = java.net.InetAddress.getByName(host).getHostAddress() + host = java.net.InetAddress.getByName(host).getHostName() else: if self.server: - host = self.sock_impl.jsocket.getInetAddress().getHostAddress() + host = self.sock_impl.jsocket.getInetAddress().getHostName() else: - host = self.sock_impl.jsocket.getLocalAddress().getHostAddress() + host = self.sock_impl.jsocket.getLocalAddress().getHostName() port = self.sock_impl.jsocket.getLocalPort() return (host, port) except java.lang.Exception, jlx: @@ -681,7 +681,7 @@ try: assert self.sock_impl assert not self.server - host = self.sock_impl.jsocket.getInetAddress().getHostAddress() + host = self.sock_impl.jsocket.getInetAddress().getHostName() port = self.sock_impl.jsocket.getPort() return (host, port) except java.lang.Exception, jlx: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <cg...@us...> - 2008-01-21 21:58:13
|
Revision: 4071 http://jython.svn.sourceforge.net/jython/?rev=4071&view=rev Author: cgroves Date: 2008-01-21 13:58:11 -0800 (Mon, 21 Jan 2008) Log Message: ----------- Went in the wrong direction yesterday. Everything should use getHostAddress, not getHostName. getHostName forces a reverse name lookup Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2008-01-21 21:54:00 UTC (rev 4070) +++ trunk/jython/Lib/socket.py 2008-01-21 21:58:11 UTC (rev 4071) @@ -166,7 +166,7 @@ return self.jsocket.getReuseAddress() def getpeername(self): - return (self.jsocket.getInetAddress().getHostName(), self.jsocket.getPort() ) + return (self.jsocket.getInetAddress().getHostAddress(), self.jsocket.getPort() ) def config(self, mode, timeout): self.mode = mode @@ -218,7 +218,7 @@ def __init__(self, socket=None): if socket: self.jchannel = socket.getChannel() - self.host = socket.getInetAddress().getHostName() + self.host = socket.getInetAddress().getHostAddress() self.port = socket.getPort() else: self.jchannel = java.nio.channels.SocketChannel.open() @@ -333,7 +333,7 @@ if return_source_address: host = None if packet.getAddress(): - host = packet.getAddress().getHostName() + host = packet.getAddress().getHostAddress() port = packet.getPort() return return_data, (host, port) else: @@ -350,7 +350,7 @@ byte_array = byte_array[:bytes_read] return_data = byte_array.tostring() if return_source_address: - return return_data, (source_address.getHostName(), source_address.getPort()) + return return_data, (source_address.getAddress().getHostAddress(), source_address.getPort()) else: return return_data @@ -666,12 +666,12 @@ try: if not self.sock_impl: host, port = self.local_addr or ("", 0) - host = java.net.InetAddress.getByName(host).getHostName() + host = java.net.InetAddress.getByName(host).getHostAddress() else: if self.server: - host = self.sock_impl.jsocket.getInetAddress().getHostName() + host = self.sock_impl.jsocket.getInetAddress().getHostAddress() else: - host = self.sock_impl.jsocket.getLocalAddress().getHostName() + host = self.sock_impl.jsocket.getLocalAddress().getHostAddress() port = self.sock_impl.jsocket.getLocalPort() return (host, port) except java.lang.Exception, jlx: @@ -681,7 +681,7 @@ try: assert self.sock_impl assert not self.server - host = self.sock_impl.jsocket.getInetAddress().getHostName() + host = self.sock_impl.jsocket.getInetAddress().getHostAddress() port = self.sock_impl.jsocket.getPort() return (host, port) except java.lang.Exception, jlx: @@ -788,7 +788,7 @@ def getsockname(self): try: assert self.sock_impl - host = self.sock_impl.jsocket.getLocalAddress().getHostName() + host = self.sock_impl.jsocket.getLocalAddress().getHostAddress() port = self.sock_impl.jsocket.getLocalPort() return (host, port) except java.lang.Exception, jlx: @@ -797,7 +797,7 @@ def getpeername(self): try: assert self.sock - host = self.sock_impl.jsocket.getInetAddress().getHostName() + host = self.sock_impl.jsocket.getInetAddress().getHostAddress() port = self.sock_impl.jsocket.getPort() return (host, port) except java.lang.Exception, jlx: @@ -1157,7 +1157,7 @@ def make_ssl_socket(self, plain_socket, auto_close=0): java_net_socket = plain_socket._get_jsocket() assert isinstance(java_net_socket, java.net.Socket) - host = java_net_socket.getInetAddress().getHostName() + host = java_net_socket.getInetAddress().getHostAddress() port = java_net_socket.getPort() factory = javax.net.ssl.SSLSocketFactory.getDefault(); ssl_socket = factory.createSocket(java_net_socket, host, port, auto_close) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <am...@us...> - 2008-03-08 16:22:11
|
Revision: 4195 http://jython.svn.sourceforge.net/jython/?rev=4195&view=rev Author: amak Date: 2008-03-08 08:22:08 -0800 (Sat, 08 Mar 2008) Log Message: ----------- Checking in changes relating to two separate bugs. 1. UDP sockets implicitly created by the sendto() method are not configured correctly. 2. Should a recvfrom() call on an unbound UDP socket result in the implicit creation of a socket? See bug # 1005 for further information. http://bugs.jython.org/issue1005 Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2008-03-08 16:11:35 UTC (rev 4194) +++ trunk/jython/Lib/socket.py 2008-03-08 16:22:08 UTC (rev 4195) @@ -761,6 +761,7 @@ flags, addr = 0, p2 if not self.sock_impl: self.sock_impl = _datagram_socket_impl() + self._config() byte_array = java.lang.String(data).getBytes('iso-8859-1') result = self.sock_impl.sendto(byte_array, addr, flags) return result @@ -773,8 +774,22 @@ return self.sock_impl.send(byte_array, flags) def recvfrom(self, num_bytes, flags=None): + """ + There is some disagreement as to what the behaviour should be if + a recvfrom operation is requested on an unbound socket. + See the following links for more information + http://bugs.jython.org/issue1005 + http://bugs.sun.com/view_bug.do?bug_id=6621689 + """ try: - assert self.sock_impl + # This is the old 2.1 behaviour + #assert self.sock_impl + # This is amak's preferred interpretation + #raise error(errno.ENOTCONN, "Recvfrom on unbound udp socket meaningless operation") + # And this is the option for cpython compatibility + if not self.sock_impl: + self.sock_impl = _datagram_socket_impl() + self._config() return self.sock_impl.recvfrom(num_bytes, flags) except java.lang.Exception, jlx: raise _map_exception(jlx) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2008-05-29 05:29:21
|
Revision: 4469 http://jython.svn.sourceforge.net/jython/?rev=4469&view=rev Author: pjenvey Date: 2008-05-28 22:29:20 -0700 (Wed, 28 May 2008) Log Message: ----------- o revert _map_exception back to creating new socket.errors every time. they're mutable and unsafe as singletons o map java exceptions to python in socket.shutdown o handle all unmapped exceptions in one place and include the Java exception's message in the translated socket.error's msg Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2008-05-29 03:54:32 UTC (rev 4468) +++ trunk/jython/Lib/socket.py 2008-05-29 05:29:20 UTC (rev 4469) @@ -89,36 +89,36 @@ _exception_map = { -# (<javaexception>, <circumstance>) : lambda: <code that raises the python equivalent> +# (<javaexception>, <circumstance>) : lambda: <code that raises the python equivalent>, or None to stub out as unmapped -(java.io.IOException, ALL) : error(errno.ECONNRESET, 'Software caused connection abort'), -(java.io.InterruptedIOException, ALL) : timeout('timed out'), +(java.io.IOException, ALL) : lambda: error(errno.ECONNRESET, 'Software caused connection abort'), +(java.io.InterruptedIOException, ALL) : lambda: timeout('timed out'), -(java.net.BindException, ALL) : error(errno.EADDRINUSE, 'Address already in use'), -(java.net.ConnectException, ALL) : error(errno.ECONNREFUSED, 'Connection refused'), -(java.net.NoRouteToHostException, ALL) : error(-1, 'Unmapped exception: java.net.NoRouteToHostException'), -(java.net.PortUnreachableException, ALL) : error(-1, 'Unmapped exception: java.net.PortUnreachableException'), -(java.net.ProtocolException, ALL) : error(-1, 'Unmapped exception: java.net.ProtocolException'), -(java.net.SocketException, ALL) : error(-1, 'Unmapped exception: java.net.SocketException'), -(java.net.SocketTimeoutException, ALL) : timeout('timed out'), -(java.net.UnknownHostException, ALL) : gaierror(errno.EGETADDRINFOFAILED, 'getaddrinfo failed'), +(java.net.BindException, ALL) : lambda: error(errno.EADDRINUSE, 'Address already in use'), +(java.net.ConnectException, ALL) : lambda: error(errno.ECONNREFUSED, 'Connection refused'), +(java.net.NoRouteToHostException, ALL) : None, +(java.net.PortUnreachableException, ALL) : None, +(java.net.ProtocolException, ALL) : None, +(java.net.SocketException, ALL) : None, +(java.net.SocketTimeoutException, ALL) : lambda: timeout('timed out'), +(java.net.UnknownHostException, ALL) : lambda: gaierror(errno.EGETADDRINFOFAILED, 'getaddrinfo failed'), -(java.nio.channels.AlreadyConnectedException, ALL) : error(errno.EISCONN, 'Socket is already connected'), -(java.nio.channels.AsynchronousCloseException, ALL) : error(-1, 'Unmapped exception: java.nio.AsynchronousCloseException'), -(java.nio.channels.CancelledKeyException, ALL) : error(-1, 'Unmapped exception: java.nio.CancelledKeyException'), -(java.nio.channels.ClosedByInterruptException, ALL) : error(-1, 'Unmapped exception: java.nio.ClosedByInterruptException'), -(java.nio.channels.ClosedChannelException, ALL) : error(errno.EPIPE, 'Socket closed'), -(java.nio.channels.ClosedSelectorException, ALL) : error(-1, 'Unmapped exception: java.nio.ClosedSelectorException'), -(java.nio.channels.ConnectionPendingException, ALL) : error(-1, 'Unmapped exception: java.nio.ConnectionPendingException'), -(java.nio.channels.IllegalBlockingModeException, ALL) : error(-1, 'Unmapped exception: java.nio.IllegalBlockingModeException'), -(java.nio.channels.IllegalSelectorException, ALL) : error(-1, 'Unmapped exception: java.nio.IllegalSelectorException'), -(java.nio.channels.NoConnectionPendingException, ALL) : error(-1, 'Unmapped exception: java.nio.NoConnectionPendingException'), -(java.nio.channels.NonReadableChannelException, ALL) : error(-1, 'Unmapped exception: java.nio.NonReadableChannelException'), -(java.nio.channels.NonWritableChannelException, ALL) : error(-1, 'Unmapped exception: java.nio.NonWritableChannelException'), -(java.nio.channels.NotYetBoundException, ALL) : error(-1, 'Unmapped exception: java.nio.NotYetBoundException'), -(java.nio.channels.NotYetConnectedException, ALL) : error(-1, 'Unmapped exception: java.nio.NotYetConnectedException'), -(java.nio.channels.UnresolvedAddressException, ALL) : gaierror(errno.EGETADDRINFOFAILED, 'getaddrinfo failed'), -(java.nio.channels.UnsupportedAddressTypeException, ALL) : error(-1, 'Unmapped exception: java.nio.UnsupportedAddressTypeException'), +(java.nio.channels.AlreadyConnectedException, ALL) : lambda: error(errno.EISCONN, 'Socket is already connected'), +(java.nio.channels.AsynchronousCloseException, ALL) : None, +(java.nio.channels.CancelledKeyException, ALL) : None, +(java.nio.channels.ClosedByInterruptException, ALL) : None, +(java.nio.channels.ClosedChannelException, ALL) : lambda: error(errno.EPIPE, 'Socket closed'), +(java.nio.channels.ClosedSelectorException, ALL) : None, +(java.nio.channels.ConnectionPendingException, ALL) : None, +(java.nio.channels.IllegalBlockingModeException, ALL) : None, +(java.nio.channels.IllegalSelectorException, ALL) : None, +(java.nio.channels.NoConnectionPendingException, ALL) : None, +(java.nio.channels.NonReadableChannelException, ALL) : None, +(java.nio.channels.NonWritableChannelException, ALL) : None, +(java.nio.channels.NotYetBoundException, ALL) : None, +(java.nio.channels.NotYetConnectedException, ALL) : None, +(java.nio.channels.UnresolvedAddressException, ALL) : lambda: gaierror(errno.EGETADDRINFOFAILED, 'getaddrinfo failed'), +(java.nio.channels.UnsupportedAddressTypeException, ALL) : None, } @@ -127,12 +127,13 @@ def _map_exception(exc, circumstance=ALL): # print "Mapping exception: %s" % exc - try: - mapped_exception = _exception_map[(exc.__class__, circumstance)] - mapped_exception.java_exception = exc - return mapped_exception - except KeyError: - return error(-1, 'Unmapped java exception: <%s:%s>' % (exc.toString(), circumstance)) + mapped_exception = _exception_map.get((exc.__class__, circumstance)) + if mapped_exception: + exception = mapped_exception() + else: + exception = error(-1, 'Unmapped exception: %s' % exc) + exception.java_exception = exc + return exception MODE_BLOCKING = 'block' MODE_NONBLOCKING = 'nonblock' @@ -202,10 +203,16 @@ # close = close4 def shutdownInput(self): - self.jsocket.shutdownInput() + try: + self.jsocket.shutdownInput() + except java.lang.Exception, jlx: + raise _map_exception(jlx) def shutdownOutput(self): - self.jsocket.shutdownOutput() + try: + self.jsocket.shutdownOutput() + except java.lang.Exception, jlx: + raise _map_exception(jlx) def getchannel(self): return self.jchannel This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <am...@us...> - 2008-06-02 00:12:58
|
Revision: 4497 http://jython.svn.sourceforge.net/jython/?rev=4497&view=rev Author: amak Date: 2008-06-01 17:12:57 -0700 (Sun, 01 Jun 2008) Log Message: ----------- Submitted in an incomplete merge in the last checkin; fixing this now. Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2008-06-02 00:11:03 UTC (rev 4496) +++ trunk/jython/Lib/socket.py 2008-06-02 00:12:57 UTC (rev 4497) @@ -207,6 +207,29 @@ self._timeout_millis = int(timeout*1000) self.jsocket.setSoTimeout(self._timeout_millis) + def getsockopt(self, option): + if self.options.has_key(option): + result = getattr(self.jsocket, "get%s" % self.options[option])() + if option == SO_LINGER: + if result == -1: + enabled, linger_time = 0, 0 + else: + enabled, linger_time = 1, result + return struct.pack('ii', enabled, linger_time) + return result + else: + raise error(errno.ENOPROTOOPT, "Option not supported on socket(%s): %d" % (str(self.jsocket), option)) + + def setsockopt(self, option, value): + if self.options.has_key(option): + if option == SO_LINGER: + values = struct.unpack('ii', value) + self.jsocket.setSoLinger(*values) + else: + getattr(self.jsocket, "set%s" % self.options[option])(value) + else: + raise error(errno.ENOPROTOOPT, "Option not supported on socket(%s): %d" % (str(self.jsocket), option)) + def close(self): self.jsocket.close() @@ -230,6 +253,17 @@ class _client_socket_impl(_nio_impl): + options = { + SO_KEEPALIVE: 'KeepAlive', + SO_LINGER: 'SoLinger', + SO_OOBINLINE: 'OOBInline', + SO_RCVBUF: 'ReceiveBufferSize', + SO_REUSEADDR: 'ReuseAddress', + SO_SNDBUF: 'SendBufferSize', + SO_TIMEOUT: 'SoTimeout', + TCP_NODELAY: 'TcpNoDelay', + } + def __init__(self, socket=None): if socket: self.jchannel = socket.getChannel() @@ -755,7 +789,7 @@ addr = None def __init__(self): - self.sock_impl = None + _nonblocking_api_mixin.__init__(self) def bind(self, addr): try: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2008-06-06 00:00:49
|
Revision: 4539 http://jython.svn.sourceforge.net/jython/?rev=4539&view=rev Author: pjenvey Date: 2008-06-05 17:00:48 -0700 (Thu, 05 Jun 2008) Log Message: ----------- fix missing comma which broke test___all__ Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2008-06-05 23:52:58 UTC (rev 4538) +++ trunk/jython/Lib/socket.py 2008-06-06 00:00:48 UTC (rev 4539) @@ -150,7 +150,7 @@ __all__ = [ 'AF_INET', 'SOCK_DGRAM', 'SOCK_RAW', 'SOCK_RDM', 'SOCK_SEQPACKET', 'SOCK_STREAM', 'SOL_SOCKET', 'SO_BROADCAST', 'SO_KEEPALIVE', 'SO_LINGER', 'SO_OOBINLINE', - 'SO_RCVBUF', 'SO_REUSEADDR', 'SO_SNDBUF', 'SO_TIMEOUT', 'TCP_NODELAY' + 'SO_RCVBUF', 'SO_REUSEADDR', 'SO_SNDBUF', 'SO_TIMEOUT', 'TCP_NODELAY', 'SocketType', 'error', 'herror', 'gaierror', 'timeout', 'getfqdn', 'gethostbyaddr', 'gethostbyname', 'gethostname', 'socket', 'getaddrinfo', 'getdefaulttimeout', 'setdefaulttimeout', This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2008-07-16 01:15:47
|
Revision: 4953 http://jython.svn.sourceforge.net/jython/?rev=4953&view=rev Author: pjenvey Date: 2008-07-15 18:15:46 -0700 (Tue, 15 Jul 2008) Log Message: ----------- restore proto=0 as _realsocket asserts it so Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2008-07-15 22:51:51 UTC (rev 4952) +++ trunk/jython/Lib/socket.py 2008-07-16 01:15:46 UTC (rev 4953) @@ -502,7 +502,7 @@ else: return _udpsocket() -def getaddrinfo(host, port, family=None, socktype=None, proto=None, flags=None): +def getaddrinfo(host, port, family=None, socktype=None, proto=0, flags=None): try: if not family in [AF_INET, AF_INET6, AF_UNSPEC]: raise NotSupportedError() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pj...@us...> - 2008-07-16 02:11:49
|
Revision: 4955 http://jython.svn.sourceforge.net/jython/?rev=4955&view=rev Author: pjenvey Date: 2008-07-15 19:11:48 -0700 (Tue, 15 Jul 2008) Log Message: ----------- use getClass here incase class becomes a permanent keyword in 2.5 Modified Paths: -------------- trunk/jython/Lib/socket.py Modified: trunk/jython/Lib/socket.py =================================================================== --- trunk/jython/Lib/socket.py 2008-07-16 01:18:14 UTC (rev 4954) +++ trunk/jython/Lib/socket.py 2008-07-16 02:11:48 UTC (rev 4955) @@ -518,7 +518,7 @@ results = [] for a in java.net.InetAddress.getAllByName(host): if len([f for f in filter_fns if f(a)]): - family = {java.net.Inet4Address: AF_INET, java.net.Inet6Address: AF_INET6}[a.class] + family = {java.net.Inet4Address: AF_INET, java.net.Inet6Address: AF_INET6}[a.getClass()] # TODO: Include flowinfo and scopeid in a 4-tuple for IPv6 addresses results.append( (family, socktype, proto, a.getCanonicalHostName(), (a.getHostAddress(), port)) ) return results This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |