33 lines
1.1 KiB
Diff
33 lines
1.1 KiB
Diff
diff -urNp a/snmplib/callback.c b/snmplib/callback.c
|
|
--- a/snmplib/callback.c 2025-08-13 15:21:25.507544080 +0200
|
|
+++ b/snmplib/callback.c 2025-08-13 15:25:01.973092935 +0200
|
|
@@ -346,13 +346,17 @@ snmp_call_callbacks(int major, int minor
|
|
/*
|
|
* for each registered callback of type major and minor
|
|
*/
|
|
- for (scp = thecallbacks[major][minor]; scp != NULL; scp = scp->next) {
|
|
+ scp = thecallbacks[major][minor];
|
|
+ while (scp != NULL) {
|
|
+ struct snmp_gen_callback *scp_next = scp->next;
|
|
|
|
/*
|
|
* skip unregistered callbacks
|
|
*/
|
|
- if(NULL == scp->sc_callback)
|
|
+ if(NULL == scp->sc_callback) {
|
|
+ scp = scp_next;
|
|
continue;
|
|
+ }
|
|
|
|
DEBUGMSGTL(("callback", "calling a callback for maj=%d min=%d\n",
|
|
major, minor));
|
|
@@ -363,6 +367,8 @@ snmp_call_callbacks(int major, int minor
|
|
(*(scp->sc_callback)) (major, minor, caller_arg,
|
|
scp->sc_client_arg);
|
|
count++;
|
|
+
|
|
+ scp = scp_next;
|
|
}
|
|
|
|
DEBUGMSGTL(("callback",
|