You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "James E. King, III (JIRA)" <ji...@apache.org> on 2017/08/10 19:41:00 UTC
[jira] [Resolved] (THRIFT-4274) Python feature tests for SSL/TLS
failing
[ https://issues.apache.org/jira/browse/THRIFT-4274?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
James E. King, III resolved THRIFT-4274.
----------------------------------------
Resolution: Fixed
Assignee: James E. King, III
Fix Version/s: 0.11.0
> Python feature tests for SSL/TLS failing
> ----------------------------------------
>
> Key: THRIFT-4274
> URL: https://issues.apache.org/jira/browse/THRIFT-4274
> Project: Thrift
> Issue Type: Bug
> Components: Python - Library
> Environment: Arch Linux, Python 3.6.2, OpenSSL 1.1.0.f
> Reporter: HÃ¥kon Hitland
> Assignee: James E. King, III
> Priority: Minor
> Fix For: 0.11.0
>
>
> {{make cross}} fails on the Python feature tests {{py-nosslv3}} and {{py-tls}}, as the test server exits with a stack trace like
> {noformat}
> Traceback (most recent call last):
> File "/thrift/test/py/TestServer.py", line 315, in <module>
> sys.exit(main(options))
> File "/thrift/test/py/TestServer.py", line 268, in main
> server.serve()
> File "/thrift/lib/py/build/lib.linux-x86_64-3.6/thrift/server/TServer.py", line 76, in serve
> client = self.serverTransport.accept()
> File "/thrift/lib/py/build/lib.linux-x86_64-3.6/thrift/transport/TSSLSocket.py", line 370, in accept
> client = self._wrap_socket(plain_client)
> File "/thrift/lib/py/build/lib.linux-x86_64-3.6/thrift/transport/TSSLSocket.py", line 184, in _wrap_socket
> server_hostname=self._server_hostname)
> File "/usr/lib/python3.6/ssl.py", line 401, in wrap_socket
> _context=self, _session=session)
> File "/usr/lib/python3.6/ssl.py", line 808, in __init__
> self.do_handshake()
> File "/usr/lib/python3.6/ssl.py", line 1061, in do_handshake
> self._sslobj.do_handshake()
> File "/usr/lib/python3.6/ssl.py", line 683, in do_handshake
> self._sslobj.do_handshake()
> OSError: [Errno 0] Error
> {noformat}
> This seems to be caused by {{ensure_socket_open}} in {{test/crossrunner/run.py}}, which will make a connection and immediately close the socket without completing the handshake.
> On the server side this causes an {{OSError}} to be thrown from {{SSLContext.wrap_socket()}}, which is not caught in {{TSSLServerSocket.accept()}}.
> This works on older installations, so presumably either Python or OpenSSL has changed to cause an {{OSError}} instead of a {{SSLError}}.
> Catching {{OSError}} in {{accept()}} and handling it the same as {{SSLError}} looks like a reasonable fix.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)