diff options
author | Esteban Dugueperoux | 2015-05-13 11:38:59 +0000 |
---|---|---|
committer | Esteban DUGUEPEROUX | 2015-05-27 14:50:04 +0000 |
commit | 78548e95413156099ca437aa427f1204c6f2911e (patch) | |
tree | f678d35d1a8b1a588e51e8f167373a4a98d0fbd5 /plugins/org.eclipse.net4j | |
parent | 909da9ee04592199f61d6b699355822786b0a38b (diff) | |
download | cdo-78548e95413156099ca437aa427f1204c6f2911e.tar.gz cdo-78548e95413156099ca437aa427f1204c6f2911e.tar.xz cdo-78548e95413156099ca437aa427f1204c6f2911e.zip |
[467199] Avoid potential LifecycleException when receiving signal
Avoid potential LifecycleException when receiving signal when
SignalProtocol has been deactivated.
Change-Id: I7d546d565d20c130489fb0a6d9fb6d86c68b0634
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=467199
Signed-off-by: Esteban Dugueperoux <esteban.dugueperoux@obeo.fr>
Diffstat (limited to 'plugins/org.eclipse.net4j')
-rw-r--r-- | plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java index 1b4394e8bc..4ede13edcf 100644 --- a/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java +++ b/plugins/org.eclipse.net4j/src/org/eclipse/net4j/signal/SignalProtocol.java @@ -240,16 +240,19 @@ public class SignalProtocol<INFRA_STRUCTURE> extends Protocol<INFRA_STRUCTURE> } signal = provideSignalReactor(signalID); - signal.setCorrelationID(-correlationID); - signal.setBufferInputStream(new SignalInputStream(getTimeout())); - if (signal instanceof IndicationWithResponse) + if (signal != null) { - signal.setBufferOutputStream(new SignalOutputStream(-correlationID, signalID, false)); - } + signal.setCorrelationID(-correlationID); + signal.setBufferInputStream(new SignalInputStream(getTimeout())); + if (signal instanceof IndicationWithResponse) + { + signal.setBufferOutputStream(new SignalOutputStream(-correlationID, signalID, false)); + } - signals.put(-correlationID, signal); - getExecutorService().execute(signal); - newSignalScheduled = true; + signals.put(-correlationID, signal); + getExecutorService().execute(signal); + newSignalScheduled = true; + } } } else @@ -341,7 +344,11 @@ public class SignalProtocol<INFRA_STRUCTURE> extends Protocol<INFRA_STRUCTURE> protected final SignalReactor provideSignalReactor(short signalID) { - checkActive(); + if (!isActive()) + { + return null; + } + switch (signalID) { case SIGNAL_REMOTE_EXCEPTION: |