diff --git a/src/cluster/Backend.cc b/src/cluster/Backend.cc index 70f3d7d87c..1f9b9567e0 100644 --- a/src/cluster/Backend.cc +++ b/src/cluster/Backend.cc @@ -132,10 +132,19 @@ std::optional Backend::MakeClusterEvent(FuncValPtr handler, ArgsSpan args * * @J-Gras prefers the current behavior. @awelzel wonders if there should * be an opt-in/opt-out for this behavior. Procrastinating it for now. + * + * In any case, if the current event has no timestamp information + * (detail::NO_TIMESTAMP is -1.0), use the current network time for + * the outgoing event instead as network timestamp metadata. */ zeek::detail::EventMetadataVectorPtr meta; - if ( zeek::BifConst::EventMetadata::add_network_timestamp ) - meta = zeek::detail::MakeEventMetadataVector(zeek::event_mgr.CurrentEventTime()); + if ( zeek::BifConst::EventMetadata::add_network_timestamp ) { + auto ts = zeek::event_mgr.CurrentEventTime(); + if ( ts == zeek::detail::NO_TIMESTAMP ) + ts = run_state::network_time; + + meta = zeek::detail::MakeEventMetadataVector(ts); + } return Event{eh, std::move(*checked_args), std::move(meta)}; } diff --git a/testing/btest/Baseline/cluster.websocket.metadata/..client-metadata.out b/testing/btest/Baseline/cluster.websocket.metadata/..client-metadata.out index 4ce606d056..976973e17e 100644 --- a/testing/btest/Baseline/cluster.websocket.metadata/..client-metadata.out +++ b/testing/btest/Baseline/cluster.websocket.metadata/..client-metadata.out @@ -2,4 +2,4 @@ Connected! ack {'type': 'ack', 'endpoint': 'endpoint', 'version': 'endpoint'} ping {'type': 'data-message', 'topic': '/test/pings/', '@data-type': 'vector', 'data': [{'@data-type': 'count', 'data': 1}, {'@data-type': 'count', 'data': 1}, {'@data-type': 'vector', 'data': [{'@data-type': 'string', 'data': 'ping'}, {'@data-type': 'vector', 'data': [{'@data-type': 'string', 'data': 'fourty-two'}, {'@data-type': 'count', 'data': 42}]}]}]} -pong {'type': 'data-message', 'topic': '/test/pongs/', '@data-type': 'vector', 'data': [{'@data-type': 'count', 'data': 1}, {'@data-type': 'count', 'data': 1}, {'@data-type': 'vector', 'data': [{'@data-type': 'string', 'data': 'pong'}, {'@data-type': 'vector', 'data': [{'@data-type': 'string', 'data': 'fourty-two fourty-two'}, {'@data-type': 'count', 'data': 84}]}, {'@data-type': 'vector', 'data': [{'@data-type': 'vector', 'data': [{'@data-type': 'count', 'data': 1}, {'@data-type': 'timestamp', 'data': '1969-12-31T23:59:59.000'}]}]}]}]} +pong {'type': 'data-message', 'topic': '/test/pongs/', '@data-type': 'vector', 'data': [{'@data-type': 'count', 'data': 1}, {'@data-type': 'count', 'data': 1}, {'@data-type': 'vector', 'data': [{'@data-type': 'string', 'data': 'pong'}, {'@data-type': 'vector', 'data': [{'@data-type': 'string', 'data': 'fourty-two fourty-two'}, {'@data-type': 'count', 'data': 84}]}, {'@data-type': 'vector', 'data': [{'@data-type': 'vector', 'data': [{'@data-type': 'count', 'data': 1}, {'@data-type': 'timestamp', 'data': '1970-01-01T01:18:31.000'}]}]}]}]}