chiark / gitweb /
audit: give up sending auditing messages when it failed due to EPERM
authorLennart Poettering <lennart@poettering.net>
Mon, 14 Mar 2011 16:48:34 +0000 (17:48 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 14 Mar 2011 16:48:48 +0000 (17:48 +0100)
src/manager.c

index 1ab4c94eefa40978812475872b649de870dcee3c..cee434466591f2c28dc53dfffcd9e2b80ee0ec16 100644 (file)
@@ -2448,8 +2448,19 @@ void manager_send_unit_audit(Manager *m, Unit *u, int type, bool success) {
                 return;
         }
 
-        if (audit_log_user_comm_message(m->audit_fd, type, "", p, NULL, NULL, NULL, success) < 0)
-                log_error("Failed to send audit message: %m");
+        if (audit_log_user_comm_message(m->audit_fd, type, "", p, NULL, NULL, NULL, success) < 0) {
+                log_warning("Failed to send audit message: %m");
+
+                if (errno == EPERM) {
+                        /* We aren't allowed to send audit messages?
+                         * Then let's not retry again, to avoid
+                         * spamming the user with the same and same
+                         * messages over and over. */
+
+                        audit_close(m->audit_fd);
+                        m->audit_fd = -1;
+                }
+        }
 
         free(p);
 #endif