diff --git a/lib/nodes/iec61850_goose.cpp b/lib/nodes/iec61850_goose.cpp index 508ced936..3b7b19b5b 100644 --- a/lib/nodes/iec61850_goose.cpp +++ b/lib/nodes/iec61850_goose.cpp @@ -979,8 +979,14 @@ void GooseNode::parsePublisherData(json_t *json, auto signal = std::optional{}; - if (signal_str) + if (signal_str) { signal = out.signals->getIndexByName(signal_str); + if (!signal || *signal == -1) + throw RuntimeError("Name not found in output signal section"); + } + + if (!json_value && !signal_str) + throw RuntimeError("Need either signal name or signal value"); OutputData value = {.signal = signal, .default_value =