Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 68766 Details for
Bug 187301
[telnet] Telnet does not allow multiple shells
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
new patch for 187301
patch187301.txt (text/plain), 7.72 KB, created by
Sheldon
on 2007-05-25 09:34:34 EDT
(
hide
)
Description:
new patch for 187301
Filename:
MIME Type:
Creator:
Sheldon
Created:
2007-05-25 09:34:34 EDT
Size:
7.72 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.rse.connectorservice.telnet >Index: src/org/eclipse/rse/internal/connectorservice/telnet/TelnetConnectorService.java >=================================================================== >RCS file: /cvsroot/dsdp/org.eclipse.tm.rse/plugins/org.eclipse.rse.connectorservice.telnet/src/org/eclipse/rse/internal/connectorservice/telnet/TelnetConnectorService.java,v >retrieving revision 1.11 >diff -u -r1.11 TelnetConnectorService.java >--- src/org/eclipse/rse/internal/connectorservice/telnet/TelnetConnectorService.java 16 May 2007 15:52:44 -0000 1.11 >+++ src/org/eclipse/rse/internal/connectorservice/telnet/TelnetConnectorService.java 25 May 2007 13:32:51 -0000 >@@ -18,6 +18,7 @@ > package org.eclipse.rse.internal.connectorservice.telnet; > > import java.io.InputStream; >+import java.io.OutputStream; > import java.io.PrintStream; > import java.lang.reflect.InvocationTargetException; > >@@ -60,7 +61,7 @@ > > private static final int TELNET_DEFAULT_PORT = 23; // TODO Make configurable > private static final int TELNET_CONNECT_TIMEOUT = 60; //seconds - TODO: Make configurable >- private TelnetClient fTelnetClient = new TelnetClient(); >+ private TelnetClient fTelnetClient ; > private SessionLostHandler fSessionLostHandler; > private InputStream in; > private PrintStream out; >@@ -69,7 +70,9 @@ > private static final int SUCCESS_CODE = 150; // login pass code > private static final int CONNECT_CLOSED = 200; // code for end of login attempts > private static final int CONNECT_CANCELED = 250; // code for cancel progress >- >+ private int numberOfConnections = 0; >+ private String sessionPassword = ""; >+ > public TelnetConnectorService(IHost host) { > super(TelnetConnectorResources.TelnetConnectorService_Name, > TelnetConnectorResources.TelnetConnectorService_Description, >@@ -116,10 +119,16 @@ > Exception nestedException = null; > try { > Activator.trace("Telnet Service: Connecting....."); //$NON-NLS-1$ >+ fTelnetClient = new TelnetClient(); > fTelnetClient.connect(host, TELNET_DEFAULT_PORT); >- SystemSignonInformation ssi = getSignonInformation(); >- if (ssi != null) { >- password = ssi.getPassword(); >+ if( numberOfConnections == 0) { >+ SystemSignonInformation ssi = getSignonInformation(); >+ if (ssi != null) { >+ password = ssi.getPassword(); >+ setSessionPassword( password ); >+ } >+ }else { >+ password = getSessionPassword(); > } > > in = fTelnetClient.getInputStream(); >@@ -158,9 +167,11 @@ > Activator.trace("Telnet Service: Canceled"); //$NON-NLS-1$ > sessionDisconnect(); //will eventually destroy the LoginThread > } else if (status == SUCCESS_CODE) { >- fSessionLostHandler = new SessionLostHandler(this); >- notifyConnection(); >- Activator.trace("Telnet Service: Connected"); //$NON-NLS-1$ >+ if( numberOfConnections == 0 ) { >+ fSessionLostHandler = new SessionLostHandler(this); >+ notifyConnection(); >+ Activator.trace("Telnet Service: Connected"); //$NON-NLS-1$ >+ } > } else { > Activator.trace("Telnet Service: Connect failed"); //$NON-NLS-1$ > //TODO pass the nested exception as well as original prompts >@@ -188,8 +199,12 @@ > try { > if (fTelnetClient != null) { > synchronized (fTelnetClient) { >- if (fTelnetClient.isConnected()) >- fTelnetClient.disconnect(); >+ if( numberOfConnections == 1) { >+ if (fTelnetClient.isConnected()) >+ fTelnetClient.disconnect(); >+ }else { >+ removeConnection(); >+ } > } > } > } catch (Exception e) { >@@ -267,10 +282,45 @@ > notifyDisconnection(); > } > >+ public InputStream getSessionInputStream() { >+ return this.in; >+ } >+ >+ public OutputStream getSessionOutputStream() { >+ return this.out; >+ } >+ public void setSessionPassword( String passwd ) { >+ this.sessionPassword = passwd; >+ } >+ >+ public String getSessionPassword() { >+ return this.sessionPassword; >+ } >+ > public TelnetClient getTelnetClient() { > return fTelnetClient; > } > >+ public void addConnection() { >+ numberOfConnections++; >+ } >+ >+ public void removeConnection() { >+ numberOfConnections--; >+ } >+ >+ public int getNumberOfConnections() { >+ return numberOfConnections; >+ >+ } >+ >+ public void createNewConnection() { >+ try { >+ internalConnect( null ); >+ } catch (Exception e) { >+ SystemBasePlugin.logError(e.getMessage() == null ? e.getClass().getName() : e.getMessage(), e); >+ } >+ } > /** > * Handle session-lost events. This is generic for any sort of connector > * service. Most of this is extracted from dstore's >#P org.eclipse.rse.services.telnet >Index: src/org/eclipse/rse/internal/services/telnet/shell/TelnetHostShell.java >=================================================================== >RCS file: /cvsroot/dsdp/org.eclipse.tm.rse/plugins/org.eclipse.rse.services.telnet/src/org/eclipse/rse/internal/services/telnet/shell/TelnetHostShell.java,v >retrieving revision 1.2 >diff -u -r1.2 TelnetHostShell.java >--- src/org/eclipse/rse/internal/services/telnet/shell/TelnetHostShell.java 11 May 2007 13:30:48 -0000 1.2 >+++ src/org/eclipse/rse/internal/services/telnet/shell/TelnetHostShell.java 25 May 2007 13:32:53 -0000 >@@ -44,10 +44,13 @@ > try { > fSessionProvider = sessionProvider; > >- >- fStdoutHandler = new TelnetShellOutputReader(this, new BufferedReader(new InputStreamReader(sessionProvider.getTelnetClient().getInputStream())), false); >+ if( fSessionProvider.getNumberOfConnections() > 0) { >+ fSessionProvider.createNewConnection(); >+ } >+ fSessionProvider.addConnection(); >+ fStdoutHandler = new TelnetShellOutputReader(this, new BufferedReader(new InputStreamReader(sessionProvider.getSessionInputStream())), false); > fStderrHandler = new TelnetShellOutputReader(this, null,true); >- OutputStream outputStream = sessionProvider.getTelnetClient().getOutputStream(); >+ OutputStream outputStream = sessionProvider.getSessionOutputStream(); > //TODO check if encoding or command to execute needs to be considered > //If a command is given, it might be possible to do without a Thread > //Charset cs = Charset.forName(encoding); >@@ -88,10 +91,13 @@ > TelnetClient client = fSessionProvider.getTelnetClient(); > if (client!=null) { > synchronized(client) { >- if (client.isConnected()) >- client.disconnect(); >+ if( fSessionProvider.getNumberOfConnections() <= 1 ) { >+ if (client.isConnected()) >+ client.disconnect(); >+ } > } > } >+ fSessionProvider.removeConnection(); > } catch (IOException e) { > } > >Index: src/org/eclipse/rse/internal/services/telnet/ITelnetSessionProvider.java >=================================================================== >RCS file: /cvsroot/dsdp/org.eclipse.tm.rse/plugins/org.eclipse.rse.services.telnet/src/org/eclipse/rse/internal/services/telnet/ITelnetSessionProvider.java,v >retrieving revision 1.1 >diff -u -r1.1 ITelnetSessionProvider.java >--- src/org/eclipse/rse/internal/services/telnet/ITelnetSessionProvider.java 11 May 2007 09:28:26 -0000 1.1 >+++ src/org/eclipse/rse/internal/services/telnet/ITelnetSessionProvider.java 25 May 2007 13:32:52 -0000 >@@ -16,12 +16,32 @@ > *******************************************************************************/ > package org.eclipse.rse.internal.services.telnet; > >+import java.io.InputStream; >+import java.io.OutputStream; >+ > import org.apache.commons.net.telnet.TelnetClient; > > public interface ITelnetSessionProvider { > >+ > public TelnetClient getTelnetClient(); > > /* Inform the connectorService that a session has been lost. */ > public void handleSessionLost(); >+ >+ public void addConnection(); >+ >+ public void removeConnection(); >+ >+ public int getNumberOfConnections(); >+ >+ public void createNewConnection(); >+ >+ public void setSessionPassword( String passwd ) ; >+ >+ public String getSessionPassword(); >+ >+ public InputStream getSessionInputStream(); >+ >+ public OutputStream getSessionOutputStream(); > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 187301
:
67796
|
68766
|
70316
|
72503