diff --git a/src/snmp/libnxsnmp/transport.cpp b/src/snmp/libnxsnmp/transport.cpp index fb4f6bb..0d55fa7 100644 (file) --- a/src/snmp/libnxsnmp/transport.cpp +++ b/src/snmp/libnxsnmp/transport.cpp @@ -164,7 +164,12 @@ retry: if (request->getContextEngineIdLength() == 0) { - request->setContextEngineId((*response)->getContextEngineId(), (*response)->getContextEngineIdLength()); + // Use provided context engine ID if set in response + // Use authoritative engine ID if response has no context engine id + if ((*response)->getContextEngineIdLength() > 0) + request->setContextEngineId((*response)->getContextEngineId(), (*response)->getContextEngineIdLength()); + else if ((*response)->getAuthoritativeEngine().getIdLen() != 0) + request->setContextEngineId((*response)->getAuthoritativeEngine().getId(), (*response)->getAuthoritativeEngine().getIdLen()); canRetry = true; } if (m_securityContext->getAuthoritativeEngine().getIdLen() == 0)