projects
/
collectd.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Initial support of GPSd in collectd.
[collectd.git]
/
src
/
network.c
diff --git
a/src/network.c
b/src/network.c
index
bbdd6dd
..
af24911
100644
(file)
--- a/
src/network.c
+++ b/
src/network.c
@@
-22,6
+22,7
@@
* Aman Gupta <aman at tmm1.net>
**/
* Aman Gupta <aman at tmm1.net>
**/
+#define _DEFAULT_SOURCE
#define _BSD_SOURCE /* For struct ip_mreq */
#include "collectd.h"
#define _BSD_SOURCE /* For struct ip_mreq */
#include "collectd.h"
@@
-2026,6
+2027,7
@@
static sockent_t *sockent_create (int type) /* {{{ */
if (type == SOCKENT_TYPE_SERVER)
{
se->data.server.fd = NULL;
if (type == SOCKENT_TYPE_SERVER)
{
se->data.server.fd = NULL;
+ se->data.server.fd_num = 0;
#if HAVE_LIBGCRYPT
se->data.server.security_level = SECURITY_LEVEL_NONE;
se->data.server.auth_file = NULL;
#if HAVE_LIBGCRYPT
se->data.server.security_level = SECURITY_LEVEL_NONE;
se->data.server.auth_file = NULL;
@@
-2239,6
+2241,9
@@
static int sockent_server_listen (sockent_t *se) /* {{{ */
if (se == NULL)
return (-1);
if (se == NULL)
return (-1);
+ assert (se->data.server.fd == NULL);
+ assert (se->data.server.fd_num == 0);
+
node = se->node;
service = se->service;
node = se->node;
service = se->service;
@@
-2438,13
+2443,13
@@
static int network_receive (void) /* {{{ */
int buffer_len;
int i;
int buffer_len;
int i;
- int status;
+ int status
= 0
;
receive_list_entry_t *private_list_head;
receive_list_entry_t *private_list_tail;
uint64_t private_list_length;
receive_list_entry_t *private_list_head;
receive_list_entry_t *private_list_tail;
uint64_t private_list_length;
-
assert (listen_sockets_num > 0);
+ assert (listen_sockets_num > 0);
private_list_head = NULL;
private_list_tail = NULL;
private_list_head = NULL;
private_list_tail = NULL;
@@
-2453,15
+2458,14
@@
static int network_receive (void) /* {{{ */
while (listen_loop == 0)
{
status = poll (listen_sockets_pollfd, listen_sockets_num, -1);
while (listen_loop == 0)
{
status = poll (listen_sockets_pollfd, listen_sockets_num, -1);
-
if (status <= 0)
{
char errbuf[1024];
if (errno == EINTR)
continue;
if (status <= 0)
{
char errbuf[1024];
if (errno == EINTR)
continue;
- ERROR ("
poll
failed: %s",
+ ERROR ("
network plugin: poll(2)
failed: %s",
sstrerror (errno, errbuf, sizeof (errbuf)));
sstrerror (errno, errbuf, sizeof (errbuf)));
-
return (-1)
;
+
break
;
}
for (i = 0; (i < listen_sockets_num) && (status > 0); i++)
}
for (i = 0; (i < listen_sockets_num) && (status > 0); i++)
@@
-2479,10
+2483,10
@@
static int network_receive (void) /* {{{ */
if (buffer_len < 0)
{
char errbuf[1024];
if (buffer_len < 0)
{
char errbuf[1024];
- ERROR ("recv failed: %s",
-
sstrerror (errno, errbuf
,
-
sizeof (errbuf)));
-
return (-1)
;
+ status = (errno != 0) ? errno : -1;
+
ERROR ("network plugin: recv(2) failed: %s"
,
+
sstrerror (errno, errbuf,
sizeof (errbuf)));
+
break
;
}
stats_octets_rx += ((uint64_t) buffer_len);
}
stats_octets_rx += ((uint64_t) buffer_len);
@@
-2496,7
+2500,8
@@
static int network_receive (void) /* {{{ */
if (ent == NULL)
{
ERROR ("network plugin: malloc failed.");
if (ent == NULL)
{
ERROR ("network plugin: malloc failed.");
- return (-1);
+ status = ENOMEM;
+ break;
}
memset (ent, 0, sizeof (receive_list_entry_t));
ent->data = malloc (network_config_packet_size);
}
memset (ent, 0, sizeof (receive_list_entry_t));
ent->data = malloc (network_config_packet_size);
@@
-2504,7
+2509,8
@@
static int network_receive (void) /* {{{ */
{
sfree (ent);
ERROR ("network plugin: malloc failed.");
{
sfree (ent);
ERROR ("network plugin: malloc failed.");
- return (-1);
+ status = ENOMEM;
+ break;
}
ent->fd = listen_sockets_pollfd[i].fd;
ent->next = NULL;
}
ent->fd = listen_sockets_pollfd[i].fd;
ent->next = NULL;
@@
-2540,7
+2546,12
@@
static int network_receive (void) /* {{{ */
private_list_tail = NULL;
private_list_length = 0;
}
private_list_tail = NULL;
private_list_length = 0;
}
+
+ status = 0;
} /* for (listen_sockets_pollfd) */
} /* for (listen_sockets_pollfd) */
+
+ if (status != 0)
+ break;
} /* while (listen_loop == 0) */
/* Make sure everything is dispatched before exiting. */
} /* while (listen_loop == 0) */
/* Make sure everything is dispatched before exiting. */
@@
-2555,15
+2566,11
@@
static int network_receive (void) /* {{{ */
receive_list_tail = private_list_tail;
receive_list_length += private_list_length;
receive_list_tail = private_list_tail;
receive_list_length += private_list_length;
- private_list_head = NULL;
- private_list_tail = NULL;
- private_list_length = 0;
-
pthread_cond_signal (&receive_list_cond);
pthread_mutex_unlock (&receive_list_lock);
}
pthread_cond_signal (&receive_list_cond);
pthread_mutex_unlock (&receive_list_lock);
}
- return (
0
);
+ return (
status
);
} /* }}} int network_receive */
static void *receive_thread (void __attribute__((unused)) *arg)
} /* }}} int network_receive */
static void *receive_thread (void __attribute__((unused)) *arg)
@@
-3006,7
+3013,7
@@
static int network_config_set_ttl (const oconfig_item_t *ci) /* {{{ */
network_config_ttl = tmp;
else {
WARNING ("network plugin: The `TimeToLive' must be between 1 and 255.");
network_config_ttl = tmp;
else {
WARNING ("network plugin: The `TimeToLive' must be between 1 and 255.");
- return (-1);
+ return (-1);
}
return (0);
}
return (0);