d9e7381f commented on issue #435:
URL: https://github.com/apache/mina-sshd/issues/435#issuecomment-1857616177
@tomaswolf
In my case, i will keep retrying to establish a connection to the server
until it succeeds. so I overwrite some methods to do that, but I'm not sure if
it will cause bad effect.
```
import org.apache.sshd.client.SshClient;
public class MySshClient extends SshClient {
public static SshClient setUpDefaultClient() {
ClientBuilder builder = ClientBuilder.builder();
builder.factory(MySshClient::new);
return builder.build();
}
protected InetSocketAddress pickSocketAddress(String host, int port)
throws UnknownHostException {
ThreadLocalRandom random = ThreadLocalRandom.current();
final InetAddress[] inetAddresses = InetAddress.getAllByName(host);
final InetAddress pickInetAddress =
inetAddresses[random.nextInt(inetAddresses.length)];
return new InetSocketAddress(pickInetAddress, port);
}
@Override
protected ConnectFuture doConnect(
HostConfigEntry hostConfig,
List<HostConfigEntry> jumps,
AttributeRepository context,
SocketAddress localAddress)
throws IOException {
// some code
String username = hostConfig.getUsername();
if (GenericUtils.isNotEmpty(jumps)) {
InetSocketAddress targetAddress =
pickSocketAddress(hostConfig.getHostName(), hostConfig.getPort());
ConnectFuture connectFuture = new DefaultConnectFuture(username + "@"
+ targetAddress, null);
HostConfigEntry jump = jumps.remove(0);
ConnectFuture f1 = doConnect(jump, jumps, context, null);
// some code
return connectFuture;
} else {
return doConnect(
hostConfig.getUsername(),
pickSocketAddress(host, port),
context,
localAddress,
keys,
hostConfig.isIdentitiesOnly());
}
}
}
```
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]