Linindoo opened a new issue, #754:
URL: https://github.com/apache/mina-sshd/issues/754

   ### Version
   
   sshd-client:2.15.0
   
   ### Bug description
   
   It throw `Address already in use: bind` Exception after invoke 
`startLocalPortForwarding` , and then  invoke `startLocalPortForwarding`  at 
the same port  again, it throw `TcpipForwarder is closed or closing: Closed` 
exception, the Port Forwarding can't restart until create new `ClientSession` .
   
   ### Actual behavior
   
   Port forwarding was closed after throw `Address already in use: bind` 
exception,and can't restart in the same `ClientSession`  until create new 
instance
   
   ### Expected behavior
   
   No matter how many times invoke It should throw the same exception `Address 
already in use: bind` ,it should invoke `startLocalPortForwarding` success 
after solve the local port conflict problem at the same `ClientSession` instance
   
   ### Relevant log output
   
   ```Shell
   java.net.BindException: Address already in use: bind
        at java.base/sun.nio.ch.Net.bind0(Native Method)
        at java.base/sun.nio.ch.Net.bind(Net.java:555)
        at 
java.base/sun.nio.ch.ServerSocketChannelImpl.netBind(ServerSocketChannelImpl.java:337)
        at 
java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:294)
        at 
io.netty.channel.socket.nio.NioServerSocketChannel.doBind(NioServerSocketChannel.java:141)
        at 
io.netty.channel.AbstractChannel$AbstractUnsafe.bind(AbstractChannel.java:562)
        at 
io.netty.channel.DefaultChannelPipeline$HeadContext.bind(DefaultChannelPipeline.java:1334)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:506)
        at 
io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:491)
        at io.netty.handler.logging.LoggingHandler.bind(LoggingHandler.java:230)
        at 
io.netty.channel.AbstractChannelHandlerContext.invokeBind(AbstractChannelHandlerContext.java:506)
        at 
io.netty.channel.AbstractChannelHandlerContext.bind(AbstractChannelHandlerContext.java:491)
        at 
io.netty.channel.DefaultChannelPipeline.bind(DefaultChannelPipeline.java:973)
        at io.netty.channel.AbstractChannel.bind(AbstractChannel.java:260)
        at 
io.netty.bootstrap.AbstractBootstrap$2.run(AbstractBootstrap.java:356)
        at 
io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
        at 
io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)
        at 
io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
        at --- Async.Stack.Trace --- (captured by IntelliJ IDEA debugger)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:836)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.execute0(SingleThreadEventExecutor.java:827)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:817)
        at 
io.netty.bootstrap.AbstractBootstrap.doBind0(AbstractBootstrap.java:352)
        at 
io.netty.bootstrap.AbstractBootstrap.access$000(AbstractBootstrap.java:53)
        at 
io.netty.bootstrap.AbstractBootstrap$1.operationComplete(AbstractBootstrap.java:299)
        at 
io.netty.bootstrap.AbstractBootstrap$1.operationComplete(AbstractBootstrap.java:286)
        at 
io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:578)
        at 
io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:552)
        at 
io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:491)
        at 
io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:616)
        at 
io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:605)
        at 
io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:104)
        at 
io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)
        at 
io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:990)
        at 
io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:516)
        at 
io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:429)
        at 
io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:486)
        at 
io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
        at 
io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:167)
        at 
io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
        at --- Async.Stack.Trace --- (captured by IntelliJ IDEA debugger)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.addTask(SingleThreadEventExecutor.java)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:836)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.execute0(SingleThreadEventExecutor.java:827)
        at 
io.netty.util.concurrent.SingleThreadEventExecutor.execute(SingleThreadEventExecutor.java:817)
        at 
io.netty.channel.AbstractChannel$AbstractUnsafe.register(AbstractChannel.java:483)
        at 
io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:89)
        at 
io.netty.channel.SingleThreadEventLoop.register(SingleThreadEventLoop.java:83)
        at 
io.netty.channel.MultithreadEventLoopGroup.register(MultithreadEventLoopGroup.java:86)
        at 
io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:323)
        at 
io.netty.bootstrap.AbstractBootstrap.doBind(AbstractBootstrap.java:272)
        at io.netty.bootstrap.AbstractBootstrap.bind(AbstractBootstrap.java:268)
        at 
org.apache.sshd.netty.NettyIoAcceptor.bindInternal(NettyIoAcceptor.java:151)
        at org.apache.sshd.netty.NettyIoAcceptor.bind(NettyIoAcceptor.java:141)
        at 
org.apache.sshd.common.forward.DefaultForwarder.doBind(DefaultForwarder.java:937)
        at 
org.apache.sshd.common.forward.DefaultForwarder.startLocalPortForwarding(DefaultForwarder.java:194)
        at 
org.apache.sshd.client.session.AbstractClientSession.startLocalPortForwarding(AbstractClientSession.java:446)
        at cn.olange.SshDDemo.main(SshDDemo.java:56)
   java.lang.IllegalStateException: TcpipForwarder is closed or closing: Closed
        at 
org.apache.sshd.common.forward.DefaultForwarder.startLocalPortForwarding(DefaultForwarder.java:186)
        at 
org.apache.sshd.client.session.AbstractClientSession.startLocalPortForwarding(AbstractClientSession.java:446)
        at cn.olange.SshDDemo.main(SshDDemo.java:63)
   ```
   
   ### Other information
   
   ` 
   
   SshClient client = SshClient.setUpDefaultClient();
           List<KeyExchangeFactory> keyExchangeFactories = 
BaseBuilder.DEFAULT_KEX_PREFERENCE
               .stream()
               .map(ClientBuilder.DH2KEX)
               .toList();
           client.setKeyExchangeFactories(keyExchangeFactories);
           client.setCipherFactories(new 
ArrayList<>(NamedFactory.setUpBuiltinFactories(false, 
BaseBuilder.DEFAULT_CIPHERS_PREFERENCE)));
           client.setMacFactories(new 
ArrayList<>(NamedFactory.setUpBuiltinFactories(false, 
BaseBuilder.DEFAULT_MAC_PREFERENCE)));
           client.setSignatureFactories(new 
ArrayList<>(NamedFactory.setUpBuiltinFactories(false, 
BaseBuilder.DEFAULT_SIGNATURE_PREFERENCE)));
           client.start();
           ClientSession session = null;
           try {
               session = client
                   .connect("root", "host", 22)
                   .verify(1000)
                   .getSession();
               session.addPasswordIdentity("password");
               session.auth().verify(10000);
               session.startLocalPortForwarding(new 
SshdSocketAddress("127.0.0.1", 3306), new SshdSocketAddress("127.0.0.1", 3306));
   
               System.out.println("connection success");
           } catch (IOException e) {
               e.printStackTrace();
               try {
                   session.startLocalPortForwarding(new 
SshdSocketAddress("127.0.0.1", 3306), new SshdSocketAddress("127.0.0.1", 3306));
               } catch (Exception exception) {
                   exception.printStackTrace();
               }
   
           }
       }
   
   `


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org
For additional commands, e-mail: dev-h...@mina.apache.org

Reply via email to