diff --git a/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java b/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java index fe8d4c31..584c2ba3 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java @@ -53,8 +53,8 @@ import org.slf4j.LoggerFactory; import java.io.InputStream; import java.io.OutputStream; -import java.util.LinkedList; import java.util.Queue; +import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantLock; @@ -76,7 +76,7 @@ public abstract class AbstractChannel /** Remote recipient ID */ private int recipient; - private final Queue> chanReqResponseEvents = new LinkedList>(); + private final Queue> chanReqResponseEvents = new ConcurrentLinkedQueue>(); /* The lock used by to create the open & close events */ private final ReentrantLock lock = new ReentrantLock(); @@ -364,8 +364,8 @@ public abstract class AbstractChannel stream.receive(buf.array(), buf.rpos(), len); } - protected synchronized Event sendChannelRequest(String reqType, boolean wantReply, - Buffer.PlainBuffer reqSpecific) + protected Event sendChannelRequest(String reqType, boolean wantReply, + Buffer.PlainBuffer reqSpecific) throws TransportException { log.info("Sending channel request for `{}`", reqType); trans.write( @@ -383,7 +383,7 @@ public abstract class AbstractChannel return responseEvent; } - private synchronized void gotResponse(boolean success) + private void gotResponse(boolean success) throws ConnectionException { final Event responseEvent = chanReqResponseEvents.poll(); if (responseEvent != null) { @@ -392,9 +392,8 @@ public abstract class AbstractChannel else responseEvent.deliverError(new ConnectionException("Request failed")); } else - throw new ConnectionException( - DisconnectReason.PROTOCOL_ERROR, - "Received response to channel request when none was requested"); + throw new ConnectionException(DisconnectReason.PROTOCOL_ERROR, + "Received response to channel request when none was requested"); } private synchronized void gotEOF()