GitHub user ivmaykov opened a pull request: https://github.com/apache/zookeeper/pull/727
ZOOKEEPER-3172: Quorum TLS - fix port unification to allow rolling upgrades Fix numerous problems with UnifiedServerSocket, such as hanging the accept() thread when the client doesn't send any data or crashing if less than 5 bytes are read from the socket in the initial read. Re-enable the "portUnification" config option. ### Fixed networking issues/bugs in UnifiedServerSocket - don't crash the accept() thread if the client closes the connection without sending any data - don't corrupt the connection if the client sends fewer than 5 bytes for the initial read - delay the detection of TLS vs. plaintext mode until a socket stream is read from or written to. This prevents the accept() thread from getting blocked on a read() operation from the newly connected socket. - prepending 5 bytes to PrependableSocket and then trying to read >5 bytes would only return the first 5 bytes, even if more bytes were available. This is fixed. You can merge this pull request into a Git repository by running: $ git pull https://github.com/ivmaykov/zookeeper ZOOKEEPER-3172-branch-3.5 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/zookeeper/pull/727.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #727 ---- commit 4a6a22f083930597b8ab3a5cb35048a6ab24813b Author: Ilya Maykov <ilyam@...> Date: 2018-10-25T01:22:24Z ZOOKEEPER-3172: Quorum TLS - fix port unification to allow rolling upgrades ---- ---