Mercurial > 510Connectbot
diff src/ch/ethz/ssh2/channel/ChannelManager.java @ 288:5824a1475be4 ganymed
start conversion from trilead to ganymed
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Fri, 18 Jul 2014 19:59:32 -0700 |
parents | 91a31873c42a |
children | d2ee20d9dff1 |
line wrap: on
line diff
--- a/src/ch/ethz/ssh2/channel/ChannelManager.java Fri Jul 18 19:52:08 2014 -0700 +++ b/src/ch/ethz/ssh2/channel/ChannelManager.java Fri Jul 18 19:59:32 2014 -0700 @@ -46,7 +46,9 @@ private int globalSuccessCounter = 0; private int globalFailedCounter = 0; - private final Map<Integer, RemoteForwardingData> remoteForwardings = new HashMap<Integer, RemoteForwardingData>(); + private final HashMap<Integer, RemoteForwardingData> remoteForwardings = new HashMap<Integer, RemoteForwardingData>(); + + private AuthAgentCallback authAgent; private final List<IChannelWorkerThread> listenerThreads = new ArrayList<IChannelWorkerThread>(); @@ -460,6 +462,35 @@ } } + /** + * @param agent + * @throws IOException + */ + public boolean requestChannelAgentForwarding(Channel c, AuthAgentCallback authAgent) throws IOException { + synchronized (this) { + if (this.authAgent != null) + throw new IllegalStateException("Auth agent already exists"); + + this.authAgent = authAgent; + } + + synchronized (channels) { + globalSuccessCounter = globalFailedCounter = 0; + } + + log.debug("Requesting agent forwarding"); + + PacketChannelAuthAgentReq aar = new PacketChannelAuthAgentReq(c.remoteID); + tm.sendMessage(aar.getPayload()); + + if (waitForChannelRequestResult(c) == false) { + authAgent = null; + return false; + } + + return true; + } + public void registerThread(IChannelWorkerThread thr) throws IOException { synchronized(listenerThreads) { if(listenerThreadsAllowed == false) {