osaf/services/saf/amf/amfd/ntf.cc | 17 ++++++++++++++---
1 files changed, 14 insertions(+), 3 deletions(-)
Notifications are pused in job queue (fixed in ticket #314).
During switchover, active controller will empty the job queue.
Since notifications allocate memory it needs to be freed.
diff --git a/osaf/services/saf/amf/amfd/ntf.cc
b/osaf/services/saf/amf/amfd/ntf.cc
--- a/osaf/services/saf/amf/amfd/ntf.cc
+++ b/osaf/services/saf/amf/amfd/ntf.cc
@@ -546,14 +546,12 @@ SaAisErrorT avd_try_send_notification(Nt
SaNtfNotificationsT *myntf = &job->myntf;
SaAisErrorT rc = SA_AIS_OK;
SaNtfNotificationHeaderT *header = nullptr;
- SaNtfNotificationHandleT notificationHandle = 0;
+ SaNtfNotificationHandleT ¬ificationHandle =
myntf->notification.stateChangeNotification.notificationHandle;
if (myntf->notificationType == SA_NTF_TYPE_STATE_CHANGE) {
header = &myntf->notification.stateChangeNotification.notificationHeader;
- notificationHandle =
myntf->notification.stateChangeNotification.notificationHandle;
} else if (myntf->notificationType == SA_NTF_TYPE_ALARM) {
header = &myntf->notification.alarmNotification.notificationHeader;
- notificationHandle =
myntf->notification.alarmNotification.notificationHandle;
}
//Try to send the notification if not sent.
@@ -573,6 +571,8 @@ SaAisErrorT avd_try_send_notification(Nt
rc = saNtfNotificationFree(notificationHandle);
if ((rc == SA_AIS_ERR_TRY_AGAIN) || (rc == SA_AIS_ERR_TIMEOUT)) {
TRACE("Notification Free unsuccesful TRY_AGAIN or TIMEOUT rc:%u", rc);
+ } else {
+ notificationHandle = 0;
}
done:
@@ -887,4 +887,15 @@ AvdJobDequeueResultT NtfSend::exec(const
}
NtfSend::~NtfSend() {
+ SaAisErrorT rc = SA_AIS_OK;
+ if (myntf.notificationType == SA_NTF_TYPE_STATE_CHANGE) {
+ if (myntf.notification.stateChangeNotification.notificationHandle != 0)
+ rc =
saNtfNotificationFree(myntf.notification.stateChangeNotification.notificationHandle);
+ } else if (myntf.notificationType == SA_NTF_TYPE_ALARM) {
+ if (myntf.notification.alarmNotification.notificationHandle != 0)
+ rc =
saNtfNotificationFree(myntf.notification.alarmNotification.notificationHandle);
+ }
+ if (rc != SA_AIS_OK) {
+ TRACE("Notification Free failed rc:%u", rc);
+ }
}
------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel