You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by ph...@apache.org on 2013/07/02 01:22:45 UTC
svn commit: r1498738 - in /zookeeper/branches/branch-3.4: CHANGES.txt
src/java/main/org/apache/zookeeper/ClientCnxnSocketNIO.java
Author: phunt
Date: Mon Jul 1 23:22:45 2013
New Revision: 1498738
URL: http://svn.apache.org/r1498738
Log:
ZOOKEEPER-1702. ZooKeeper client may write operation packets before receiving successful response to connection request, can cause TCP RST (Chris Nauroth via phunt)
Modified:
zookeeper/branches/branch-3.4/CHANGES.txt
zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/ClientCnxnSocketNIO.java
Modified: zookeeper/branches/branch-3.4/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.4/CHANGES.txt?rev=1498738&r1=1498737&r2=1498738&view=diff
==============================================================================
--- zookeeper/branches/branch-3.4/CHANGES.txt (original)
+++ zookeeper/branches/branch-3.4/CHANGES.txt Mon Jul 1 23:22:45 2013
@@ -75,6 +75,10 @@ BUGFIXES:
ZOOKEEPER-1719. zkCli.sh, zkServer.sh and zkEnv.sh regression caused by ZOOKEEPER-1663
(Marshall McMullen via camille)
+ ZOOKEEPER-1702. ZooKeeper client may write operation packets before
+ receiving successful response to connection request, can cause TCP
+ RST (Chris Nauroth via phunt)
+
IMPROVEMENTS:
ZOOKEEPER-1564. Allow JUnit test build with IBM Java
Modified: zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/ClientCnxnSocketNIO.java
URL: http://svn.apache.org/viewvc/zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/ClientCnxnSocketNIO.java?rev=1498738&r1=1498737&r2=1498738&view=diff
==============================================================================
--- zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/ClientCnxnSocketNIO.java (original)
+++ zookeeper/branches/branch-3.4/src/java/main/org/apache/zookeeper/ClientCnxnSocketNIO.java Mon Jul 1 23:22:45 2013
@@ -134,6 +134,17 @@ public class ClientCnxnSocketNIO extends
// to attempt SASL authentication), or in either doIO() or
// in doTransport() if not.
disableWrite();
+ } else if (!initialized && p != null && !p.bb.hasRemaining()) {
+ // On initial connection, write the complete connect request
+ // packet, but then disable further writes until after
+ // receiving a successful connection response. If the
+ // session is expired, then the server sends the expiration
+ // response and immediately closes its end of the socket. If
+ // the client is simultaneously writing on its end, then the
+ // TCP stack may choose to abort with RST, in which case the
+ // client would never receive the session expired event. See
+ // http://docs.oracle.com/javase/6/docs/technotes/guides/net/articles/connection_release.html
+ disableWrite();
} else {
// Just in case
enableWrite();