X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_daemon.c;h=495a313d28e4cfd240bd5408c4c7cbf8293e5100;hp=79fbc310e13836c4f9d3268f4290361cc7a6b5e1;hb=ed3ee7c81e23fcd41693bc372470945576ae54d1;hpb=c597537ef581c7281a0ee75f712778dddd1d6929 diff --git a/src/rrd_daemon.c b/src/rrd_daemon.c index 79fbc31..495a313 100644 --- a/src/rrd_daemon.c +++ b/src/rrd_daemon.c @@ -63,7 +63,7 @@ * Now for some includes.. */ /* {{{ */ -#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) && !defined(HAVE_CONFIG_H) +#if defined(WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) && !defined(HAVE_CONFIG_H) #include "../win32/config.h" #else #ifdef HAVE_CONFIG_H @@ -188,7 +188,7 @@ struct cache_item_s size_t values_num; /* number of valid pointers */ size_t values_alloc; /* number of allocated pointers */ time_t last_flush_time; - time_t last_update_stamp; + double last_update_stamp; #define CI_FLAGS_IN_TREE (1<<0) #define CI_FLAGS_IN_QUEUE (1<<1) int flags; @@ -1331,7 +1331,7 @@ static int handle_request_update (HANDLER_PROTO) /* {{{ */ /* save it for the journal later */ if (!JOURNAL_REPLAY(sock)) - strncpy(orig_buf, buffer, buffer_size); + strncpy(orig_buf, buffer, min(RRD_CMD_MAX,buffer_size)); status = buffer_get_field (&buffer, &buffer_size, &file); if (status != 0) @@ -1422,7 +1422,7 @@ static int handle_request_update (HANDLER_PROTO) /* {{{ */ while (buffer_size > 0) { char *value; - time_t stamp; + double stamp; char *eostamp; status = buffer_get_field (&buffer, &buffer_size, &value); @@ -1432,8 +1432,9 @@ static int handle_request_update (HANDLER_PROTO) /* {{{ */ break; } - /* make sure update time is always moving forward */ - stamp = strtol(value, &eostamp, 10); + /* make sure update time is always moving forward. We use double here since + update does support subsecond precision for timestamps ... */ + stamp = strtod(value, &eostamp); if (eostamp == value || eostamp == NULL || *eostamp != ':') { pthread_mutex_unlock(&cache_lock); @@ -1444,8 +1445,8 @@ static int handle_request_update (HANDLER_PROTO) /* {{{ */ { pthread_mutex_unlock(&cache_lock); return send_response(sock, RESP_ERR, - "illegal attempt to update using time %ld when last" - " update time is %ld (minimum one second step)\n", + "illegal attempt to update using time %lf when last" + " update time is %lf (minimum one second step)\n", stamp, ci->last_update_stamp); } else @@ -2653,7 +2654,7 @@ static void *connection_thread_main (void *args) /* {{{ */ getting overwritten by another thread. */ struct request_info req; - request_init(&req, RQ_DAEMON, "rrdcache\0", RQ_FILE, fd, NULL ); + request_init(&req, RQ_DAEMON, "rrdcached\0", RQ_FILE, fd, NULL ); fromhost(&req); if(!hosts_access(&req)) { RRDD_LOG(LOG_INFO, "refused connection from %s", eval_client(&req));