Fix inconsistent synchronization in HttpTunnelServer.ServerThread

Previously, ServerThread.lastHttpRequestTime was written while
synchronized on this.httpConnections but was read without
synchronization. This could lead to a read of the field producing the
wrong value and cause premature connection timeout.

This commit moves the call to checkNotDisconnected into a block that
sychronizes on this.httpConnections, thereby ensuring that
lastHttpRequestTime can be read safely.

Closes gh-4668
This commit is contained in:
Andy Wilkinson 2015-12-03 10:57:14 +00:00
parent 02830989be
commit 256cad8980

View File

@ -274,8 +274,8 @@ public class HttpTunnelServer {
}
private void closeStaleHttpConnections() throws IOException {
checkNotDisconnected();
synchronized (this.httpConnections) {
checkNotDisconnected();
Iterator<HttpConnection> iterator = this.httpConnections.iterator();
while (iterator.hasNext()) {
HttpConnection httpConnection = iterator.next();