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