[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[monit-dev] [monit] r214 committed - - don't use service name in queued
From: |
monit |
Subject: |
[monit-dev] [monit] r214 committed - - don't use service name in queued event path since service name can c... |
Date: |
Fri, 30 Jul 2010 20:55:59 +0000 |
Revision: 214
Author: martin2812
Date: Fri Jul 30 13:55:29 2010
Log: - don't use service name in queued event path since service name can
contain '/' which has special meaning in filesystem and event store attempt
failed
- improve error logging for event queue so it is clear why it failed
http://code.google.com/p/monit/source/detail?r=214
Modified:
/trunk/event.c
/trunk/file.c
=======================================
--- /trunk/event.c Mon Jul 26 12:10:25 2010
+++ /trunk/event.c Fri Jul 30 13:55:29 2010
@@ -499,21 +499,21 @@
DEBUG("%s: processing queued event %s\n", prog, file_name);
if (! (file = fopen(file_name, "r")) ) {
- LogError("%s: Processing failed - cannot open the event file %s
-- %s\n", prog, file_name, STRERROR);
+ LogError("%s: queued event processing failed - cannot open the
file %s -- %s\n", prog, file_name, STRERROR);
goto error1;
}
/* read event structure version */
if (!(version = File_readQueue(file, &size))) {
- LogError("skipping %s - unknown data format\n", file_name);
+ LogError("skipping queued event %s - unknown data format\n",
file_name);
goto error2;
}
if (size != sizeof(int)) {
- LogError("Aborting event %s - invalid size %d\n", file_name, size);
+ LogError("Aborting queued event %s - invalid size %d\n",
file_name, size);
goto error3;
}
if (*version != EVENT_VERSION) {
- LogError("Aborting event %s - incompatible data format
version %d\n", file_name, *version);
+ LogError("Aborting queued event %s - incompatible data format
version %d\n", file_name, *version);
goto error3;
}
@@ -579,7 +579,7 @@
/* If no error persists, remove it from the queue */
if (e->flag == HANDLER_SUCCEEDED) {
- DEBUG("Removing event %s from the queue for later external
delivery\n", file_name);
+ DEBUG("Removing queued event %s\n", file_name);
if (unlink(file_name) < 0)
LogError("Failed to remove queued event file '%s' -- %s\n",
file_name, STRERROR);
} else if (handlers_passed > 0) {
@@ -749,7 +749,7 @@
}
/* compose the file name of actual timestamp and service name */
- snprintf(file_name, STRLEN, "%s/%ld_%s", Run.eventlist_dir, (long
int)time(NULL), E->source);
+ snprintf(file_name, STRLEN, "%s/%ld_%lx", Run.eventlist_dir, (long
int)time(NULL), (long unsigned)E->source);
DEBUG("%s: Adding event to the queue file %s for later delivery\n",
prog, file_name);
=======================================
--- /trunk/file.c Fri Jan 8 03:20:43 2010
+++ /trunk/file.c Fri Jul 30 13:55:29 2010
@@ -313,7 +313,6 @@
* @return TRUE if the test succeeded otherwise FALSE
*/
int File_checkStat(char *filename, char *description, int permmask) {
-
struct stat buf;
errno= 0;
@@ -390,7 +389,6 @@
* @return TRUE if the succeeded otherwise FALSE
*/
int File_checkQueueDirectory(char *path, mode_t mode) {
-
struct stat st;
if(stat(path, &st)) {
@@ -400,17 +398,17 @@
rv = mkdir(path, mode);
umask(mask);
if(rv) {
- LogError("%s: cannot create the directory %s -- %s\n",
+ LogError("%s: cannot create the event queue directory %s -- %s\n",
prog, path, STRERROR);
return FALSE;
}
} else {
- LogError("%s: cannot read the directory %s -- %s\n",
+ LogError("%s: cannot read the event queue directory %s -- %s\n",
prog, path, STRERROR);
return FALSE;
}
} else if(! S_ISDIR(st.st_mode)) {
- LogError("%s: the %s is not the directory\n", prog, path);
+ LogError("%s: event queue: the %s is not the directory\n", prog, path);
return FALSE;
}
return TRUE;
@@ -424,7 +422,6 @@
* @return TRUE if the succeeded otherwise FALSE
*/
int File_checkQueueLimit(char *path, int limit) {
-
int used = 0;
DIR *dir = NULL;
struct dirent *de = NULL;
@@ -433,7 +430,7 @@
return TRUE;
if(! (dir = opendir(path)) ) {
- LogError("%s: cannot open the directory %s -- %s\n", prog, path,
STRERROR);
+ LogError("%s: cannot open the event queue directory %s -- %s\n", prog,
path, STRERROR);
return FALSE;
}
while( (de = readdir(dir)) ) {
@@ -458,23 +455,31 @@
* @return TRUE if the succeeded otherwise FALSE
*/
int File_writeQueue(FILE *file, void *data, int size) {
+ int rv;
ASSERT(file);
/* write size */
- if(fwrite(&size, 1, sizeof(int), file) != sizeof(int) || ferror(file))
- goto error;
+ if((rv = fwrite(&size, 1, sizeof(int), file)) != sizeof(int)) {
+ if (feof(file) || ferror(file))
+ LogError("%s: queued event file: unable to write event size
-- %s\n", prog, feof(file) ? "end of file" : "stream error");
+ else
+ LogError("%s: queued event file: unable to write event size -- read
returned %d bytes\n", prog, rv);
+ return FALSE;
+ }
/* write data if any */
- if(size > 0)
- if(fwrite(data, 1, size, file) != size || ferror(file))
- goto error;
+ if(size > 0) {
+ if((rv = fwrite(data, 1, size, file)) != size) {
+ if (feof(file) || ferror(file))
+ LogError("%s: queued event file: unable to write event size
-- %s\n", prog, feof(file) ? "end of file" : "stream error");
+ else
+ LogError("%s: queued event file: unable to write event size --
read returned %d bytes\n", prog, rv);
+ return FALSE;
+ }
+ }
return TRUE;
-
- error:
- LogError("%s: unable to write data to the file\n", prog);
- return FALSE;
}
@@ -486,28 +491,32 @@
* appropriately.
*/
void *File_readQueue(FILE *file, int *size) {
-
+ int rv;
void *data = NULL;
ASSERT(file);
/* read size */
- if(fread(size, 1, sizeof(int), file) != sizeof(int) || ferror(file))
- goto error;
+ if((rv = fread(size, 1, sizeof(int), file)) != sizeof(int)) {
+ if (feof(file) || ferror(file))
+ LogError("%s: queued event file: unable to read event size -- %s\n",
prog, feof(file) ? "end of file" : "stream error");
+ else
+ LogError("%s: queued event file: unable to read event size -- read
returned %d bytes\n", prog, rv);
+ return NULL;
+ }
/* read data if any (allow 1MB at maximum to prevent enormous memory
allocation) */
if(*size > 0 && *size < 1048576) {
data = xcalloc(1, *size);
- if(fread(data, 1, *size, file) != *size || ferror(file)) {
+ if((rv = fread(data, 1, *size, file)) != *size) {
FREE(data);
- goto error;
+ if (feof(file) || ferror(file))
+ LogError("%s: queued event file: unable to read event data
-- %s\n", prog, feof(file) ? "end of file" : "stream error");
+ else
+ LogError("%s: queued event file: unable to read event data -- read
returned %d bytes\n", prog, rv);
+ return NULL;
}
}
-
return data;
-
- error:
- LogError("%s: unable to read data from the file\n", prog);
- return FALSE;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [monit-dev] [monit] r214 committed - - don't use service name in queued event path since service name can c...,
monit <=