Author: markt
Date: Tue Jun 2 11:23:56 2015
New Revision: 1683081
URL: http://svn.apache.org/r1683081
Log:
Avid concurrent writes
Modified:
tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
Modified: tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java?rev=1683081&r1=1683080&r2=1683081&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http2/Http2UpgradeHandler.java Tue Jun
2 11:23:56 2015
@@ -355,10 +355,12 @@ public class Http2UpgradeHandler extends
ByteUtil.setThreeBytes(payloadLength, 0, payload.length);
try {
- socketWrapper.write(true, payloadLength, 0, payloadLength.length);
- socketWrapper.write(true, GOAWAY, 0, GOAWAY.length);
- socketWrapper.write(true, payload, 0, payload.length);
- socketWrapper.flush(true);
+ synchronized (socketWrapper) {
+ socketWrapper.write(true, payloadLength, 0,
payloadLength.length);
+ socketWrapper.write(true, GOAWAY, 0, GOAWAY.length);
+ socketWrapper.write(true, payload, 0, payload.length);
+ socketWrapper.flush(true);
+ }
} catch (IOException ioe) {
// Ignore. GOAWAY is sent on a best efforts basis and the original
// error has already been logged.
@@ -440,9 +442,11 @@ public class Http2UpgradeHandler extends
private void processWrites() throws IOException {
- if (socketWrapper.flush(false)) {
- socketWrapper.registerWriteInterest();
- return;
+ synchronized (socketWrapper) {
+ if (socketWrapper.flush(false)) {
+ socketWrapper.registerWriteInterest();
+ return;
+ }
}
}
@@ -761,9 +765,11 @@ public class Http2UpgradeHandler extends
@Override
public void pingReceive(byte[] payload) throws IOException {
// Echo it back
- socketWrapper.write(true, PING_ACK, 0, PING_ACK.length);
- socketWrapper.write(true, payload, 0, payload.length);
- socketWrapper.flush(true);
+ synchronized (socketWrapper) {
+ socketWrapper.write(true, PING_ACK, 0, PING_ACK.length);
+ socketWrapper.write(true, payload, 0, payload.length);
+ socketWrapper.flush(true);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]