Author: costin Date: Wed Mar 14 04:37:44 2012 New Revision: 1300461 URL: http://svn.apache.org/viewvc?rev=1300461&view=rev Log: Fix spdy stream closing / removing from channels Fix/simplify draining. Use the java6 compression by default - not only avoids jzlib depenency, but it's also 20..30% faster. Refactor creation of sockets to allow Jetty-style java7 NPN.
Modified: tomcat/trunk/java/org/apache/tomcat/spdy/SpdyConnection.java tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContext.java tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContextJni.java tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContextProxy.java Modified: tomcat/trunk/java/org/apache/tomcat/spdy/SpdyConnection.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/spdy/SpdyConnection.java?rev=1300461&r1=1300460&r2=1300461&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/spdy/SpdyConnection.java (original) +++ tomcat/trunk/java/org/apache/tomcat/spdy/SpdyConnection.java Wed Mar 14 04:37:44 2012 @@ -138,18 +138,19 @@ public abstract class SpdyConnection { / */ SpdyFrame out; - boolean draining = false; - private int goAway = Integer.MAX_VALUE; public SpdyConnection(SpdyContext spdyContext) { this.spdyContext = spdyContext; outCondition = framerLock.newCondition(); + if (spdyContext.compression) { + setCompressSupport(new CompressDeflater6()); + } } @Override public String toString() { - return "SpdyCon open=" + channels.size(); + return "SpdyCon open=" + channels.size() + " " + lastChannel; } public void dump(PrintWriter out) { @@ -205,15 +206,7 @@ public abstract class SpdyConnection { / public void drain() { synchronized (nbDrain) { - if (draining) { - return; - } - draining = true; - } - - _drain(); - synchronized (nbDrain) { - draining = false; + _drain(); } } @@ -308,9 +301,13 @@ public abstract class SpdyConnection { / } synchronized (channels) { - if (out.stream != null && - out.stream.finRcvd && out.stream.finSent) { - channels.remove(out.streamId); + if (out.stream != null) { + if (out.isHalfClose()) { + out.stream.finSent = true; + } + if (out.stream.finRcvd && out.stream.finSent) { + channels.remove(out.streamId); + } } } out = null; @@ -345,7 +342,7 @@ public abstract class SpdyConnection { / public void send(SpdyFrame oframe, SpdyStream proc) throws IOException { queueFrame(oframe, proc, oframe.pri == 0 ? outQueue : prioriyQueue); - nonBlockingDrain(); + drain(); } private void queueFrame(SpdyFrame oframe, SpdyStream proc, Modified: tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContext.java?rev=1300461&r1=1300460&r2=1300461&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContext.java (original) +++ tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContext.java Wed Mar 14 04:37:44 2012 @@ -51,8 +51,8 @@ public class SpdyContext { public static boolean debug = false; - boolean tls = true; - boolean compression = true; + protected boolean tls = true; + protected boolean compression = false; /** * Get a frame - frames are heavy buffers, may be reused. Modified: tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContextJni.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContextJni.java?rev=1300461&r1=1300460&r2=1300461&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContextJni.java (original) +++ tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContextJni.java Wed Mar 14 04:37:44 2012 @@ -30,6 +30,8 @@ public class SpdyContextJni extends Spdy //AprSocketContext socketCtx; public SpdyContextJni() { + compression = true; + tls = true; con = new AprSocketContext(); //if (insecureCerts) { con.customVerification(new TlsCertVerifier() { @@ -144,10 +146,6 @@ public class SpdyContextJni extends Spdy public SpdyConnectionAprSocket(SpdyContext spdyContext) { super(spdyContext); - //setCompressSupport(new CompressJzlib()); - if (spdyContext.compression) { - setCompressSupport(new CompressDeflater6()); - } } public void setSocket(AprSocket ch) { Modified: tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContextProxy.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContextProxy.java?rev=1300461&r1=1300460&r2=1300461&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContextProxy.java (original) +++ tomcat/trunk/java/org/apache/tomcat/spdy/SpdyContextProxy.java Wed Mar 14 04:37:44 2012 @@ -30,11 +30,14 @@ import java.net.SocketTimeoutException; */ public class SpdyContextProxy extends SpdyContext { + protected Socket getSocket(String host, int port) throws IOException { + return new Socket(host, port); + } @Override public SpdyConnection getConnection(String host, int port) throws IOException { try { - Socket sock = new Socket(host, port); + Socket sock = getSocket(host, port); sock.getInputStream(); SpdyConnectionSocket con = new SpdyConnectionSocket(this, sock); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org