X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fapcups.c;h=2d1c16bb2424e3aaea49653fc4aba02da700323c;hb=b81104a423234c04f0eb4ace0ec5e93a363c917a;hp=29d58c3ad6e0a2d1b2038bf6433d078113fe0497;hpb=b24fe01f603e1422de29c2cf090eabb043df1965;p=collectd.git diff --git a/src/apcups.c b/src/apcups.c index 29d58c3a..2d1c16bb 100644 --- a/src/apcups.c +++ b/src/apcups.c @@ -40,6 +40,10 @@ # include #endif +#ifndef APCUPS_SERVER_TIMEOUT +# define APCUPS_SERVER_TIMEOUT 15.0 +#endif + #ifndef APCUPS_DEFAULT_NODE # define APCUPS_DEFAULT_NODE "localhost" #endif @@ -220,7 +224,7 @@ static int net_recv (int *sockfd, char *buf, int buflen) * Returns zero on success * Returns non-zero on error */ -static int net_send (int *sockfd, char *buff, int len) +static int net_send (int *sockfd, const char *buff, int len) { uint16_t packet_size; @@ -322,9 +326,6 @@ static int apc_query_server (char const *node, char const *service, printf ("net_recv = `%s';\n", recvline); #endif /* if APCMAIN */ - if (strncmp ("END APC", recvline, strlen ("END APC")) == 0) - break; - toksaveptr = NULL; tokptr = strtok_r (recvline, " :\t", &toksaveptr); while (tokptr != NULL) @@ -381,6 +382,7 @@ static int apc_query_server (char const *node, char const *service, static int apcups_config (oconfig_item_t *ci) { int i; + _Bool persistent_conn_set = 0; for (i = 0; i < ci->children_num; i++) { @@ -392,16 +394,29 @@ static int apcups_config (oconfig_item_t *ci) cf_util_get_service (child, &conf_service); else if (strcasecmp (child->key, "ReportSeconds") == 0) cf_util_get_boolean (child, &conf_report_seconds); - else if (strcasecmp (child->key, "PersistentConnection") == 0) + else if (strcasecmp (child->key, "PersistentConnection") == 0) { cf_util_get_boolean (child, &conf_persistent_conn); + persistent_conn_set = 1; + } else ERROR ("apcups plugin: Unknown config option \"%s\".", child->key); } + if (!persistent_conn_set) { + double interval = CDTIME_T_TO_DOUBLE(plugin_get_interval()); + if (interval > APCUPS_SERVER_TIMEOUT) { + NOTICE ("apcups plugin: Plugin poll interval set to %.3f seconds. " + "Apcupsd NIS socket timeout is %.3f seconds, " + "PersistentConnection disabled by default.", + interval, APCUPS_SERVER_TIMEOUT); + conf_persistent_conn = 0; + } + } + return (0); } /* int apcups_config */ -static void apc_submit_generic (char *type, char *type_inst, double value) +static void apc_submit_generic (const char *type, const char *type_inst, double value) { value_t values[1]; value_list_t vl = VALUE_LIST_INIT;