projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'collectd-5.4'
[collectd.git]
/
src
/
ping.c
diff --git
a/src/ping.c
b/src/ping.c
index
cac8a3f
..
da63d3a
100644
(file)
--- a/
src/ping.c
+++ b/
src/ping.c
@@
-244,7
+244,7
@@
static int ping_dispatch_all (pingobj_t *pingobj) /* {{{ */
static void *ping_thread (void *arg) /* {{{ */
{
static void *ping_thread (void *arg) /* {{{ */
{
-
static
pingobj_t *pingobj = NULL;
+ pingobj_t *pingobj = NULL;
struct timeval tv_begin;
struct timeval tv_end;
struct timeval tv_begin;
struct timeval tv_end;
@@
-427,8
+427,10
@@
static int stop_thread (void) /* {{{ */
status = -1;
}
status = -1;
}
+ pthread_mutex_lock (&ping_lock);
memset (&ping_thread_id, 0, sizeof (ping_thread_id));
ping_thread_error = 0;
memset (&ping_thread_id, 0, sizeof (ping_thread_id));
ping_thread_error = 0;
+ pthread_mutex_unlock (&ping_lock);
return (status);
} /* }}} int stop_thread */
return (status);
} /* }}} int stop_thread */
@@
-543,26
+545,21
@@
static int ping_config (const char *key, const char *value) /* {{{ */
tmp, value);
}
else if (strcasecmp (key, "Size") == 0) {
tmp, value);
}
else if (strcasecmp (key, "Size") == 0) {
-
int size
;
+
size_t size = (size_t) atoi (value)
;
- if (ping_data != NULL)
+ /* Max IP packet size - (IPv6 + ICMP) = 65535 - (40 + 8) = 65487 */
+ if (size <= 65487)
{
{
- free (ping_data);
- ping_data = NULL;
- }
+ size_t i;
- size = atoi (value);
- if ((size >= 0) && (size <= 65536))
- {
- int i;
- ping_data = (char *) malloc(size + 1);
+ sfree (ping_data);
+ ping_data = malloc (size + 1);
if (ping_data == NULL)
{
if (ping_data == NULL)
{
- char errbuf[1024];
- ERROR ("ping plugin: malloc failed: %s",
- sstrerror (errno, errbuf, sizeof (errbuf)));
+ ERROR ("ping plugin: malloc failed.");
return (1);
}
return (1);
}
+
/* Note: By default oping is using constant string
* "liboping -- ICMP ping library <http://octo.it/liboping/>"
* which is exactly 56 bytes.
/* Note: By default oping is using constant string
* "liboping -- ICMP ping library <http://octo.it/liboping/>"
* which is exactly 56 bytes.
@@
-576,9
+573,9
@@
static int ping_config (const char *key, const char *value) /* {{{ */
* printable characters, and not NUL character. */
ping_data[i] = ('0' + i % 64);
} /* }}} for (i = 0; i < size; i++) */
* printable characters, and not NUL character. */
ping_data[i] = ('0' + i % 64);
} /* }}} for (i = 0; i < size; i++) */
- ping_data[size] =
'\0'
;
+ ping_data[size] =
0
;
} else
} else
- WARNING ("ping plugin: Ignoring invalid Size %
i
.", size);
+ WARNING ("ping plugin: Ignoring invalid Size %
zu
.", size);
}
else if (strcasecmp (key, "Timeout") == 0)
{
}
else if (strcasecmp (key, "Timeout") == 0)
{