Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEsteban Dugueperoux2015-05-13 11:38:59 +0000
committerEsteban DUGUEPEROUX2015-05-27 14:50:04 +0000
commit78548e95413156099ca437aa427f1204c6f2911e (patch)
treef678d35d1a8b1a588e51e8f167373a4a98d0fbd5 /plugins/org.eclipse.net4j
parent909da9ee04592199f61d6b699355822786b0a38b (diff)
downloadcdo-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.java25
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:

Back to the top