Ted Wang created THRIFT-3944: -------------------------------- Summary: TSSLSocket has dead code in checkHandshake Key: THRIFT-3944 URL: https://issues.apache.org/jira/browse/THRIFT-3944 Project: Thrift Issue Type: Bug Components: C++ - Library Affects Versions: 0.9.3 Reporter: Ted Wang Assignee: Ted Wang Priority: Minor
There is a block of code in checkHandshake that attempts to set read/write memory bios to be nonblocking. This code doesn't do anything: https://github.com/apache/thrift/blob/master/lib/cpp/src/thrift/transport/TSSLSocket.cpp#L441 Here's what this code looks like, and the problems: - BIO_new(BIO_s_mem()) creates a new memory BIO. Not sure why. - BIO_set_nbio() executes BIO_ctrl(..., BIO_C_SET_NBIO, ...). This errors out and return 0 because mem_ctrl does not have a case for BIO_C_SET_NBIO. See: https://github.com/openssl/openssl/blob/6f0ac0e2f27d9240516edb9a23b7863e7ad02898/crypto/bio/bss_mem.c#L226 - SSL_set_bio() sets the SSL* to use the memory BIOs. - SSL_set_fd() creates a socket BIO, sets the FD on it, and uses SSL_set_bio() to replace the memory BIOs. As far as I can tell, this block of code does nothing and will not change functionality. If there's a reason that it's there, it needs to be re-implemented. -- This message was sent by Atlassian JIRA (v6.3.4#6332)