From 5cc30b55225ebaeb757eed20bc1cb44a15b1d2b1 Mon Sep 17 00:00:00 2001 From: Martin Oberhuber < martin.oberhuber@windriver.com> Date: Wed, 4 Jul 2007 15:56:47 +0000 Subject: [PATCH] [194464] fix create multiple telnet shells quickly --- .../feature.xml | 7 +---- .../META-INF/MANIFEST.MF | 2 +- .../telnet/TelnetConnectorService.java | 30 +++++++++---------- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/rse/features/org.eclipse.rse.telnet-feature/feature.xml b/rse/features/org.eclipse.rse.telnet-feature/feature.xml index 82be0c9ad44..4e4d66ce358 100644 --- a/rse/features/org.eclipse.rse.telnet-feature/feature.xml +++ b/rse/features/org.eclipse.rse.telnet-feature/feature.xml @@ -2,7 +2,7 @@ @@ -26,15 +26,10 @@ - - - - - diff --git a/rse/plugins/org.eclipse.rse.connectorservice.telnet/META-INF/MANIFEST.MF b/rse/plugins/org.eclipse.rse.connectorservice.telnet/META-INF/MANIFEST.MF index 84b205772a7..596d4b791b7 100644 --- a/rse/plugins/org.eclipse.rse.connectorservice.telnet/META-INF/MANIFEST.MF +++ b/rse/plugins/org.eclipse.rse.connectorservice.telnet/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.rse.connectorservice.telnet;singleton:=true -Bundle-Version: 1.0.0.qualifier +Bundle-Version: 1.0.1.qualifier Bundle-Activator: org.eclipse.rse.internal.connectorservice.telnet.Activator Bundle-Localization: plugin Require-Bundle: org.eclipse.core.runtime, diff --git a/rse/plugins/org.eclipse.rse.connectorservice.telnet/src/org/eclipse/rse/internal/connectorservice/telnet/TelnetConnectorService.java b/rse/plugins/org.eclipse.rse.connectorservice.telnet/src/org/eclipse/rse/internal/connectorservice/telnet/TelnetConnectorService.java index c48902445bf..894eb133730 100644 --- a/rse/plugins/org.eclipse.rse.connectorservice.telnet/src/org/eclipse/rse/internal/connectorservice/telnet/TelnetConnectorService.java +++ b/rse/plugins/org.eclipse.rse.connectorservice.telnet/src/org/eclipse/rse/internal/connectorservice/telnet/TelnetConnectorService.java @@ -15,6 +15,7 @@ * Sheldon D'souza (Celunite) - [186570] handle invalid user id and password more gracefully * Martin Oberhuber (Wind River) - [187218] Fix error reporting for connect() * Sheldon D'souza (Celunite) - [187301] support multiple telnet shells + * Sheldon D'souza (Celunite) - [194464] fix create multiple telnet shells quickly *******************************************************************************/ package org.eclipse.rse.internal.connectorservice.telnet; @@ -67,8 +68,6 @@ public class TelnetConnectorService extends StandardConnectorService implements private static final int TELNET_CONNECT_TIMEOUT = 60; //seconds - TODO: Make configurable private List fTelnetClients = new ArrayList(); private SessionLostHandler fSessionLostHandler; - private InputStream in; - private PrintStream out; private IPropertySet telnetPropertySet = null; private static final int ERROR_CODE = 100; // filed error code private static final int SUCCESS_CODE = 150; // login pass code @@ -148,11 +147,8 @@ public class TelnetConnectorService extends StandardConnectorService implements password = ssi.getPassword(); } - in = client.getInputStream(); - out = new PrintStream(client.getOutputStream()); - long millisToEnd = System.currentTimeMillis() + TELNET_CONNECT_TIMEOUT*1000; - LoginThread checkLogin = new LoginThread(user, password); + LoginThread checkLogin = new LoginThread(user, password,client.getInputStream(),new PrintStream( client.getOutputStream() )); checkLogin.start(); while (checkLogin.isAlive() && System.currentTimeMillis() 0) { - status = readUntil(login_prompt); - write(username); + status = readUntil(login_prompt,this.in); + write(username,this.out); } if (status == SUCCESS_CODE && password_prompt != null && password_prompt.length() > 0) { - status = readUntil(password_prompt); - write(password); + status = readUntil(password_prompt,this.in); + write(password,this.out); } if (status == SUCCESS_CODE && command_prompt != null && command_prompt.length() > 0) { - status = readUntil(command_prompt); + status = readUntil(command_prompt,this.in); } } else { if (command_prompt != null && command_prompt.length() > 0) { - status = readUntil(command_prompt); + status = readUntil(command_prompt,this.in); } } }