summaryrefslogtreecommitdiffstats
path: root/src/server/PortImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/PortImpl.cpp')
-rw-r--r--src/server/PortImpl.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/server/PortImpl.cpp b/src/server/PortImpl.cpp
index a5fe8fe6..dfd24dc0 100644
--- a/src/server/PortImpl.cpp
+++ b/src/server/PortImpl.cpp
@@ -367,9 +367,13 @@ PortImpl::broadcast_value(Context& context, bool force)
}
if (val.is_valid() && (force || val != _last_broadcasted_value)) {
- _last_broadcasted_value = val;
- context.notify(key, context.start(), this,
- val.size(), val.type(), val.get_body());
+ if (context.notify(key, context.start(), this,
+ val.size(), val.type(), val.get_body())) {
+ _last_broadcasted_value = val;
+ }
+
+ /* On failure, last_broadcasted_value remains unaffected, so we'll try
+ again next cycle and so on until the value is finally delivered. */
}
}