diff --git a/src/lib/ebus/message.cpp b/src/lib/ebus/message.cpp index 45b6f023..b155ea1e 100644 --- a/src/lib/ebus/message.cpp +++ b/src/lib/ebus/message.cpp @@ -1178,11 +1178,13 @@ result_t MessageMap::add(Message* message, bool storeByName) if (!m_addAll) { map >::iterator keyIt = m_messagesByKey.find(key); if (keyIt != m_messagesByKey.end()) { - if (!conditional) - return RESULT_ERR_DUPLICATE; // duplicate key - vector* messages = &keyIt->second; - if (!messages->front()->isConditional()) - return RESULT_ERR_DUPLICATE; // duplicate key + Message* other = getFirstAvailable(keyIt->second, *message); + if (other != NULL) { + if (!conditional) + return RESULT_ERR_DUPLICATE; // duplicate key + if (!other->isConditional()) + return RESULT_ERR_DUPLICATE; // duplicate key + } } } bool isPassive = message->isPassive();