mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-14 20:45:22 +02:00
[235756] [dstore] Unable to connect to host with SSL via REXEC
This commit is contained in:
parent
e880c37f72
commit
2ca959bf55
2 changed files with 29 additions and 2 deletions
|
@ -31,6 +31,7 @@
|
||||||
* David Dykstal (IBM) - [225089][ssh][shells][api] Canceling connection leads to exception
|
* David Dykstal (IBM) - [225089][ssh][shells][api] Canceling connection leads to exception
|
||||||
* David McKnight (IBM) - [227406] [dstore] DStoreFileService must listen to buffer size preference changes
|
* David McKnight (IBM) - [227406] [dstore] DStoreFileService must listen to buffer size preference changes
|
||||||
* David McKnight (IBM) - [228334][api][breaking][dstore] Default DataStore connection timeout is too short
|
* David McKnight (IBM) - [228334][api][breaking][dstore] Default DataStore connection timeout is too short
|
||||||
|
* David McKnight (IBM) - [235756] [dstore] Unable to connect to host with SSL via REXEC
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.connectorservice.dstore;
|
package org.eclipse.rse.connectorservice.dstore;
|
||||||
|
@ -581,6 +582,9 @@ public class DStoreConnectorService extends StandardConnectorService implements
|
||||||
IServerLauncher starter = getRemoteServerLauncher();
|
IServerLauncher starter = getRemoteServerLauncher();
|
||||||
starter.setSignonInformation(info);
|
starter.setSignonInformation(info);
|
||||||
starter.setServerLauncherProperties(serverLauncher);
|
starter.setServerLauncherProperties(serverLauncher);
|
||||||
|
if (starter instanceof RexecDstoreServer){
|
||||||
|
((RexecDstoreServer)starter).setSocketTimeoutValue(timeout);
|
||||||
|
}
|
||||||
if (autoDetectSSL) timeout = 3000;
|
if (autoDetectSSL) timeout = 3000;
|
||||||
else setSSLProperties(isUsingSSL());
|
else setSSLProperties(isUsingSSL());
|
||||||
|
|
||||||
|
@ -1183,7 +1187,29 @@ public class DStoreConnectorService extends StandardConnectorService implements
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Throwable exception = connectStatus.getException();
|
Throwable exception = connectStatus.getException();
|
||||||
if (exception != null)
|
if (exception instanceof SSLHandshakeException)
|
||||||
|
{
|
||||||
|
List certs = connectStatus.getUntrustedCertificates();
|
||||||
|
if (certs != null && certs.size() > 0)
|
||||||
|
{
|
||||||
|
ISystemKeystoreProvider provider = SystemKeystoreProviderManager.getInstance().getDefaultProvider();
|
||||||
|
if (provider != null)
|
||||||
|
{
|
||||||
|
_isConnecting = false;
|
||||||
|
provider.importCertificates(certs, getHostName());
|
||||||
|
_isConnecting = false;
|
||||||
|
|
||||||
|
// Don't attempt reconnect when server was started manually. The problem is that
|
||||||
|
// in that situation, the server will have terminated on the failed connection
|
||||||
|
// due to the missing certs
|
||||||
|
if (serverLauncherType != ServerLaunchType.RUNNING_LITERAL){
|
||||||
|
internalConnect(monitor);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (exception != null)
|
||||||
{
|
{
|
||||||
String msgTxt = NLS.bind(CommonMessages.MSG_CONNECT_FAILED, getHostName());
|
String msgTxt = NLS.bind(CommonMessages.MSG_CONNECT_FAILED, getHostName());
|
||||||
msg = createSystemMessage(ICommonMessageIds.MSG_CONNECT_FAILED, IStatus.ERROR, msgTxt, exception);
|
msg = createSystemMessage(ICommonMessageIds.MSG_CONNECT_FAILED, IStatus.ERROR, msgTxt, exception);
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
* David McKnight (IBM) - [220547] [api][breaking] SimpleSystemMessage needs to specify a message id and some messages should be shared
|
* David McKnight (IBM) - [220547] [api][breaking] SimpleSystemMessage needs to specify a message id and some messages should be shared
|
||||||
* David McKnight (IBM) - [221095] [dstore][launcher] Specified REXEC port number is not used
|
* David McKnight (IBM) - [221095] [dstore][launcher] Specified REXEC port number is not used
|
||||||
* David McKnight (IBM) - [228334][api][breaking][dstore] Default DataStore connection timeout is too short
|
* David McKnight (IBM) - [228334][api][breaking][dstore] Default DataStore connection timeout is too short
|
||||||
|
* David McKnight (IBM) - [235756] [dstore] Unable to connect to host with SSL via REXEC
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.internal.connectorservice.dstore;
|
package org.eclipse.rse.internal.connectorservice.dstore;
|
||||||
|
@ -475,7 +476,7 @@ public class RexecDstoreServer implements IServerLauncher
|
||||||
|
|
||||||
int inBytes = rxIn.available(); // any data available?
|
int inBytes = rxIn.available(); // any data available?
|
||||||
|
|
||||||
int timeout = 600; // 60 second to connect
|
int timeout = _socketTimeoutValue;
|
||||||
|
|
||||||
while (inBytes == 0 && timeout > 0)
|
while (inBytes == 0 && timeout > 0)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue