]> git.stg.codes - ssmd.git/blobdiff - src/snmptable.cpp
Ommit "too big" error
[ssmd.git] / src / snmptable.cpp
index b0aaba33d0f987aa9165bc33e9e44dac302f753e..e729b058ca4c65d2a3e7e11ef3b752c1c9fbf10f 100644 (file)
@@ -11,8 +11,12 @@ SNMPTable::SNMPTable(Snmp & snmp,
     Vb vb(oid);
     Pdu pdu(&vb, 1);
     while (true) {
-        if (snmp.get_next(pdu, target) != SNMP_CLASS_SUCCESS) {
-            logger << "SNMPTable::SNMPTable() - failed to invoke Snmp::get_next (oid: '" << oid.get_printable() << "')" << std::endl;
+        int c = snmp.get_next(pdu, target);
+        for (size_t i = 0; i < 3 && c != SNMP_CLASS_SUCCESS; ++i) {
+            c = snmp.get_next(pdu, target);
+        }
+        if (c != SNMP_CLASS_SUCCESS) {
+            logger << "SNMPTable::SNMPTable() - failed to invoke Snmp::get_next (oid: '" << oid.get_printable() << "'). Error message: '" << Snmp::error_msg(c) << "'" << std::endl;
             return;
         }
         if (pdu.get_vb(0).get_oid().nCompare(oid.len(), oid) != 0) {