You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2012/03/14 05:37:45 UTC

svn commit: r1300461 - in /tomcat/trunk/java/org/apache/tomcat/spdy: SpdyConnection.java SpdyContext.java SpdyContextJni.java SpdyContextProxy.java

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org