From 234cf10c048f4f81d8d4d00128ec2fb8d74cc35d Mon Sep 17 00:00:00 2001 From: David McKnight Date: Tue, 3 Feb 2009 22:13:16 +0000 Subject: [PATCH] [244070] [dstore] DStoreHostShell#exit() does not terminate child processes --- .../services/dstore/shells/DStoreHostShell.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/shells/DStoreHostShell.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/shells/DStoreHostShell.java index 2dc01ca521d..b6ae614413f 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/shells/DStoreHostShell.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/internal/services/dstore/shells/DStoreHostShell.java @@ -13,6 +13,7 @@ * * Contributors: * David McKnight (IBM) [251619] [dstore] shell output readers not cleaned up on disconnect + * David McKnight (IBM) [244070] [dstore] DStoreHostShell#exit() does not terminate child processes *******************************************************************************/ package org.eclipse.rse.internal.services.dstore.shells; @@ -72,8 +73,19 @@ public class DStoreHostShell extends AbstractHostShell implements IHostShell public void exit() { - writeToShell("exit"); //$NON-NLS-1$ + // send cancel command + DataElement command = _status.getParent(); + DataStore dataStore = command.getDataStore(); + DataElement cmdDescriptor = command.getDescriptor(); + DataElement cancelDescriptor = dataStore.localDescriptorQuery(cmdDescriptor, "C_CANCEL"); //$NON-NLS-1$ + + if (cancelDescriptor != null) + { + dataStore.command(cancelDescriptor, command); + } + _status.setAttribute(DE.A_VALUE, "done"); //$NON-NLS-1$ + _stdoutHandler.finish(); _stderrHandler.finish();