X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Flibrrdc.c;h=93d94209cac5fdd6a21a6fcb572bf0c87209f527;hb=e52c79f087fadbab671e81f982b9137184a4d9d0;hp=8b168d6790f29d292b031184ca6d79ea61217dab;hpb=fb14438263cc85fc40a79b5c801a6c40f7ab4d94;p=rrdd.git diff --git a/src/librrdc.c b/src/librrdc.c index 8b168d6..93d9420 100644 --- a/src/librrdc.c +++ b/src/librrdc.c @@ -22,8 +22,6 @@ #include "rrdd.h" #include "rrdc.h" -#define SOCK_TEMPLATE "/tmp/rrdc.sock.XXXXXX" - static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; static int sd; static FILE *sh; @@ -65,6 +63,9 @@ int rrdd_connect (const char *path) struct sockaddr_un sa; int status; + if (path == NULL) + path = RRDD_SOCK_PATH; + pthread_mutex_lock (&lock); if (sh != NULL) @@ -145,6 +146,7 @@ int rrdd_update (const char *filename, int values_num, buffer_ptr = &buffer[0]; buffer_size = sizeof (buffer) - 1; + buffer_add_string ("update", &buffer_ptr, &buffer_size); buffer_add_string (filename, &buffer_ptr, &buffer_size); for (i = 0; i < values_num; i++) buffer_add_value (values[i], &buffer_ptr, &buffer_size); @@ -154,14 +156,29 @@ int rrdd_update (const char *filename, int values_num, if (sh == NULL) { pthread_mutex_unlock (&lock); - return (-1); + return (ENOTCONN); } status = write (sd, buffer, sizeof (buffer) - buffer_size); + status = read (sd, buffer, sizeof (buffer)); + if (status < 0) + { + status = errno; + pthread_mutex_unlock (&lock); + return (status); + } + else if (status == 0) + { + pthread_mutex_unlock (&lock); + return (ENODATA); + } + + status = atoi (buffer); + pthread_mutex_unlock (&lock); - return (0); + return (status); } /* int rrd_update_daemon */ /*