@cryptotaxi247 / netdata-1 / commits / 09bcae250

small changes, adaptation of #428 from @fredericopissarra

Costa Tsaousis (ktsaou) committed Jun 11, 2016 at 02:15 UTC 09bcae250f27aae232e0a4a27cdbcd76720e933a
7 files changed +62 -54
src/common.c
+7 -8
@@ -682,7 +682,7 @@ void *mymmap(const char *filename, size_t size, int flags, int ksm)
682 errno = 0;
683 fd = open(filename, O_RDWR|O_CREAT|O_NOATIME, 0664);
684 if(fd != -1) {
685 - if(lseek(fd, size, SEEK_SET) == (long)size) {
685 + if(lseek(fd, size, SEEK_SET) == (off_t)size) {
686 if(write(fd, "", 1) == 1) {
687 if(ftruncate(fd, size))
688 error("Cannot truncate file '%s' to size %ld. Will use the larger file.", filename, size);
@@ -691,7 +691,7 @@ void *mymmap(const char *filename, size_t size, int flags, int ksm)
691 if(flags & MAP_SHARED || !enable_ksm || !ksm) {
692 #endif
693 mem = mmap(NULL, size, PROT_READ|PROT_WRITE, flags, fd, 0);
694 - if(mem) {
694 + if(mem != MAP_FAILED) {
695 int advise = MADV_SEQUENTIAL|MADV_DONTFORK;
696 if(flags & MAP_SHARED) advise |= MADV_WILLNEED;
697
@@ -702,7 +702,7 @@ void *mymmap(const char *filename, size_t size, int flags, int ksm)
702 }
703 else {
704 mem = mmap(NULL, size, PROT_READ|PROT_WRITE, flags|MAP_ANONYMOUS, -1, 0);
705 - if(mem) {
705 + if(mem != MAP_FAILED) {
706 if(lseek(fd, 0, SEEK_SET) == 0) {
707 if(read(fd, mem, size) != (ssize_t)size)
708 error("Cannot read from file '%s'", filename);
@@ -733,7 +733,7 @@ void *mymmap(const char *filename, size_t size, int flags, int ksm)
733 return mem;
734 }
735
736 -int savememory(const char *filename, void *mem, unsigned long size)
736 +int savememory(const char *filename, void *mem, size_t size)
737 {
738 char tmpfilename[FILENAME_MAX + 1];
739
@@ -745,7 +745,7 @@ int savememory(const char *filename, void *mem, unsigned long size)
745 return -1;
746 }
747
748 - if(write(fd, mem, size) != (long)size) {
748 + if(write(fd, mem, size) != (ssize_t)size) {
749 error("Cannot write to file '%s' %ld bytes.", filename, (long)size);
750 close(fd);
751 return -1;
@@ -753,13 +753,12 @@ int savememory(const char *filename, void *mem, unsigned long size)
753
754 close(fd);
755
756 - int ret = 0;
756 if(rename(tmpfilename, filename)) {
757 error("Cannot rename '%s' to '%s'", tmpfilename, filename);
759 - ret = -1;
758 + return -1;
759 }
760
762 - return ret;
761 + return 0;
762 }
763
764 int fd_is_valid(int fd) {
src/common.h
+1 -1
@@ -32,7 +32,7 @@ extern int vsnprintfz(char *dst, size_t n, const char *fmt, va_list args);
32 extern int snprintfz(char *dst, size_t n, const char *fmt, ...);
33
34 extern void *mymmap(const char *filename, size_t size, int flags, int ksm);
35 -extern int savememory(const char *filename, void *mem, unsigned long size);
35 +extern int savememory(const char *filename, void *mem, size_t size);
36
37 extern int fd_is_valid(int fd);
38
src/log.c
+12 -14
@@ -108,7 +108,7 @@ int error_log_limit(int reset) {
108
109 void log_date(FILE *out)
110 {
111 - char outstr[200];
111 + char outstr[24];
112 time_t t;
113 struct tm *tmp, tmbuf;
114
@@ -116,7 +116,7 @@ void log_date(FILE *out)
116 tmp = localtime_r(&t, &tmbuf);
117
118 if (tmp == NULL) return;
119 - if (strftime(outstr, sizeof(outstr), "%y-%m-%d %H:%M:%S", tmp) == 0) return;
119 + if (unlikely(strftime(outstr, sizeof(outstr), "%y-%m-%d %H:%M:%S", tmp) == 0)) return;
120
121 fprintf(out, "%s: ", outstr);
122 }
@@ -127,11 +127,10 @@ void debug_int( const char *file, const char *function, const unsigned long line
127
128 log_date(stdout);
129 va_start( args, fmt );
130 - fprintf(stdout, "DEBUG (%04lu@%-10.10s:%-15.15s): %s: ", line, file, function, program_name);
131 - vfprintf( stdout, fmt, args );
130 + printf("DEBUG (%04lu@%-10.10s:%-15.15s): %s: ", line, file, function, program_name);
131 + printf(fmt, args);
132 va_end( args );
133 - fprintf(stdout, "\n");
134 - // fflush( stdout );
133 + putchar('\n');
134
135 if(output_log_syslog) {
136 va_start( args, fmt );
@@ -155,7 +154,7 @@ void info_int( const char *file, const char *function, const unsigned long line,
154 vfprintf( stderr, fmt, args );
155 va_end( args );
156
158 - fprintf(stderr, "\n");
157 + fputc('\n', stderr);
158
159 if(error_log_syslog) {
160 va_start( args, fmt );
@@ -180,12 +179,12 @@ void error_int( const char *prefix, const char *file, const char *function, cons
179 va_end( args );
180
181 if(errno) {
183 - char buf[200];
184 - char *s = strerror_r(errno, buf, 200);
185 - fprintf(stderr, " (errno %d, %s)\n", errno, s);
182 + char buf[1024];
183 + fprintf(stderr, " (errno %d, %s)\n", errno, strerror_r(errno, buf, 1023));
184 errno = 0;
185 }
188 - else fprintf(stderr, "\n");
186 + else
187 + fputc('\n', stderr);
188
189 if(error_log_syslog) {
190 va_start( args, fmt );
@@ -207,7 +206,7 @@ void fatal_int( const char *file, const char *function, const unsigned long line
206 va_end( args );
207
208 perror(" # ");
210 - fprintf(stderr, "\n");
209 + fputc('\n', stderr);
210
211 if(error_log_syslog) {
212 va_start( args, fmt );
@@ -228,8 +227,7 @@ void log_access( const char *fmt, ... )
227 va_start( args, fmt );
228 vfprintf( stdaccess, fmt, args );
229 va_end( args );
231 - fprintf( stdaccess, "\n");
232 - // fflush( stdaccess );
230 + fputc('\n', stdaccess);
231 }
232
233 if(access_log_syslog) {
src/main.c
+12 -13
@@ -450,12 +450,7 @@ int main(int argc, char **argv)
450 char *access_log_file = NULL;
451 char *user = NULL;
452 {
453 - char buffer[1024];
454 -
455 - // --------------------------------------------------------------------
456 -
457 - sprintf(buffer, "0x%08llx", 0ULL);
458 - char *flags = config_get("global", "debug flags", buffer);
453 + char *flags = config_get("global", "debug flags", "0x00000000");
454 setenv("NETDATA_DEBUG_FLAGS", flags, 1);
455
456 debug_flags = strtoull(flags, NULL, 0);
@@ -534,10 +529,13 @@ int main(int argc, char **argv)
529
530 // --------------------------------------------------------------------
531
537 - if(gethostname(buffer, HOSTNAME_MAX) == -1)
538 - error("WARNING: Cannot get machine hostname.");
539 - hostname = config_get("global", "hostname", buffer);
540 - debug(D_OPTIONS, "hostname set to '%s'", hostname);
532 + {
533 + char hostnamebuf[HOSTNAME_MAX + 1];
534 + if(gethostname(hostnamebuf, HOSTNAME_MAX) == -1)
535 + error("WARNING: Cannot get machine hostname.");
536 + hostname = config_get("global", "hostname", hostnamebuf);
537 + debug(D_OPTIONS, "hostname set to '%s'", hostname);
538 + }
539
540 // --------------------------------------------------------------------
541
@@ -561,8 +559,8 @@ int main(int argc, char **argv)
559
560 // let the plugins know the min update_every
561 {
564 - char buf[51];
565 - snprintfz(buf, 50, "%d", rrd_update_every);
562 + char buf[16];
563 + snprintfz(buf, 15, "%d", rrd_update_every);
564 setenv("NETDATA_UPDATE_EVERY", buf, 1);
565 }
566
@@ -638,7 +636,8 @@ int main(int argc, char **argv)
636 // --------------------------------------------------------------------
637
638 listen_fd = create_listen_socket();
641 - if(listen_fd < 0) fatal("Cannot listen socket.");
639 + if(listen_fd == -1)
640 + fatal("Cannot listen socket.");
641 }
642
643 // never become a problem
src/web_buffer.c
+4 -1
@@ -332,7 +332,10 @@ void buffer_increase(BUFFER *b, size_t free_size_required)
332 debug(D_WEB_BUFFER, "Increasing data buffer from size %d to %d.", b->size, b->size + increase);
333
334 b->buffer = realloc(b->buffer, b->size + increase + sizeof(BUFFER_OVERFLOW_EOF) + 2);
335 - if(!b->buffer) fatal("Failed to increase data buffer from size %d to %d.", b->size + sizeof(BUFFER_OVERFLOW_EOF) + 2, b->size + increase + sizeof(BUFFER_OVERFLOW_EOF) + 2);
335 + if(!b->buffer)
336 + fatal("Failed to increase data buffer from size %d to %d.",
337 + b->size + sizeof(BUFFER_OVERFLOW_EOF) + 2,
338 + b->size + increase + sizeof(BUFFER_OVERFLOW_EOF) + 2);
339
340 b->size += increase;
341
src/web_client.c
+20 -14
@@ -221,10 +221,10 @@ void web_client_reset(struct web_client *w) {
221
222 log_access("%llu: (sent/all = %zu/%zu bytes %0.0f%%, prep/sent/total = %0.2f/%0.2f/%0.2f ms) %s: %d '%s'",
223 w->id,
224 - sent, size, -((size > 0) ? ((float) (size - sent) / (float) size * 100.0) : 0.0),
225 - (float) usecdiff(&w->tv_ready, &w->tv_in) / 1000.0,
226 - (float) usecdiff(&tv, &w->tv_ready) / 1000.0,
227 - (float) usecdiff(&tv, &w->tv_in) / 1000.0,
224 + sent, size, -((size > 0) ? ((size - sent) / (double) size * 100.0) : 0.0),
225 + usecdiff(&w->tv_ready, &w->tv_in) / 1000.0,
226 + usecdiff(&tv, &w->tv_ready) / 1000.0,
227 + usecdiff(&tv, &w->tv_in) / 1000.0,
228 (w->mode == WEB_CLIENT_MODE_FILECOPY) ? "filecopy" : ((w->mode == WEB_CLIENT_MODE_OPTIONS)
229 ? "options" : "data"),
230 w->response.code,
@@ -371,7 +371,8 @@ int mysendfile(struct web_client *w, char *filename)
371 while (*filename == '/') filename++;
372
373 // if the filename contain known paths, skip them
374 - if(strncmp(filename, WEB_PATH_FILE "/", strlen(WEB_PATH_FILE) + 1) == 0) filename = &filename[strlen(WEB_PATH_FILE) + 1];
374 + if(strncmp(filename, WEB_PATH_FILE "/", strlen(WEB_PATH_FILE) + 1) == 0)
375 + filename = &filename[strlen(WEB_PATH_FILE) + 1];
376
377 char *s;
378 for(s = filename; *s ;s++) {
@@ -1340,8 +1341,8 @@ int web_client_api_old_data_request(struct web_client *w, char *url, int datasou
1341 debug(D_WEB_CLIENT, "%llu: Found RRD data with name '%s'.", w->id, tok);
1342
1343 // how many entries does the client want?
1343 - long lines = rrd_default_history_entries;
1344 - long group_count = 1;
1344 + int lines = rrd_default_history_entries;
1345 + int group_count = 1;
1346 time_t after = 0, before = 0;
1347 int group_method = GROUP_AVERAGE;
1348 int nonzero = 0;
@@ -1454,8 +1455,10 @@ int web_client_api_old_data_request(struct web_client *w, char *url, int datasou
1455 google_responseHandler, google_version, google_reqId, st->last_updated.tv_sec);
1456 }
1457
1457 - debug(D_WEB_CLIENT_ACCESS, "%llu: Sending RRD data '%s' (id %s, %d lines, %d group, %d group_method, %lu after, %lu before).", w->id, st->name, st->id, lines, group_count, group_method, after, before);
1458 - time_t timestamp_in_data = rrd_stats_json(datasource_type, st, w->response.data, lines, group_count, group_method, after, before, nonzero);
1458 + debug(D_WEB_CLIENT_ACCESS, "%llu: Sending RRD data '%s' (id %s, %d lines, %d group, %d group_method, %lu after, %lu before).",
1459 + w->id, st->name, st->id, lines, group_count, group_method, after, before);
1460 +
1461 + time_t timestamp_in_data = rrd_stats_json(datasource_type, st, w->response.data, lines, group_count, group_method, (unsigned long)after, (unsigned long)before, nonzero);
1462
1463 if(datasource_type == DATASOURCE_DATATABLE_JSONP) {
1464 if(timestamp_in_data > last_timestamp_in_data)
@@ -1952,7 +1955,7 @@ void web_client_process(struct web_client *w) {
1955 const char *content_type_string = web_content_type_to_string(w->response.data->contenttype);
1956 const char *code_msg = web_response_code_to_string(code);
1957
1955 - char date[100];
1958 + char date[32];
1959 struct tm tmbuf, *tm = gmtime_r(&w->response.data->date, &tmbuf);
1960 strftime(date, sizeof(date), "%a, %d %b %Y %H:%M:%S %Z", tm);
1961
@@ -2017,7 +2020,7 @@ void web_client_process(struct web_client *w) {
2020 , date);
2021 }
2022 else if(w->mode != WEB_CLIENT_MODE_OPTIONS) {
2020 - char edate[100];
2023 + char edate[32];
2024 time_t et = w->response.data->date + (86400 * 14);
2025 struct tm etmbuf, *etm = gmtime_r(&et, &etmbuf);
2026 strftime(edate, sizeof(edate), "%a, %d %b %Y %H:%M:%S %Z", etm);
@@ -2114,7 +2117,7 @@ void web_client_process(struct web_client *w) {
2117 ssize_t web_client_send_chunk_header(struct web_client *w, size_t len)
2118 {
2119 debug(D_DEFLATE, "%llu: OPEN CHUNK of %d bytes (hex: %x).", w->id, len, len);
2117 - char buf[1024];
2120 + char buf[24];
2121 sprintf(buf, "%zX\r\n", len);
2122
2123 ssize_t bytes = send(w->ofd, buf, strlen(buf), 0);
@@ -2187,7 +2190,8 @@ ssize_t web_client_send_deflate(struct web_client *w)
2190 // when using compression,
2191 // w->response.sent is the amount of bytes passed through compression
2192
2190 - debug(D_DEFLATE, "%llu: web_client_send_deflate(): w->response.data->len = %d, w->response.sent = %d, w->response.zhave = %d, w->response.zsent = %d, w->response.zstream.avail_in = %d, w->response.zstream.avail_out = %d, w->response.zstream.total_in = %d, w->response.zstream.total_out = %d.", w->id, w->response.data->len, w->response.sent, w->response.zhave, w->response.zsent, w->response.zstream.avail_in, w->response.zstream.avail_out, w->response.zstream.total_in, w->response.zstream.total_out);
2193 + debug(D_DEFLATE, "%llu: web_client_send_deflate(): w->response.data->len = %d, w->response.sent = %d, w->response.zhave = %zu, w->response.zsent = %zu, w->response.zstream.avail_in = %d, w->response.zstream.avail_out = %d, w->response.zstream.total_in = %d, w->response.zstream.total_out = %d.",
2194 + w->id, w->response.data->len, w->response.sent, w->response.zhave, w->response.zsent, w->response.zstream.avail_in, w->response.zstream.avail_out, w->response.zstream.total_in, w->response.zstream.total_out);
2195
2196 if(w->response.data->len - w->response.sent == 0 && w->response.zstream.avail_in == 0 && w->response.zhave == w->response.zsent && w->response.zstream.avail_out != 0) {
2197 // there is nothing to send
@@ -2282,7 +2286,9 @@ ssize_t web_client_send_deflate(struct web_client *w)
2286 debug(D_WEB_CLIENT, "%llu: Sent %d bytes.", w->id, len);
2287 }
2288 else if(len == 0) {
2285 - debug(D_WEB_CLIENT, "%llu: Did not send any bytes to the client (zhave = %ld, zsent = %ld, need to send = %ld).", w->id, w->response.zhave, w->response.zsent, w->response.zhave - w->response.zsent);
2289 + debug(D_WEB_CLIENT, "%llu: Did not send any bytes to the client (zhave = %zu, zsent = %zu, need to send = %zu).",
2290 + w->id, w->response.zhave, w->response.zsent, w->response.zhave - w->response.zsent);
2291 +
2292 WEB_CLIENT_IS_DEAD(w);
2293 }
2294 else {
src/web_server.c
+6 -3
@@ -219,10 +219,13 @@ int create_listen_socket(void) {
219 else if(!strcmp(ipv, "ipv6") || !strcmp(ipv, "IPV6") || !strcmp(ipv, "IPv6") || !strcmp(ipv, "6")) ip = 6;
220 else error("Cannot understand ip version '%s'. Assuming 'any'.", ipv);
221
222 - if(ip == 0 || ip == 6) listen_fd = create_listen_socket6(config_get("global", "bind socket to IP", "*"), listen_port, listen_backlog);
223 - if(listen_fd < 0) {
222 + if(ip == 0 || ip == 6)
223 + listen_fd = create_listen_socket6(config_get("global", "bind socket to IP", "*"), listen_port, listen_backlog);
224 +
225 + if(listen_fd == -1) {
226 listen_fd = create_listen_socket4(config_get("global", "bind socket to IP", "*"), listen_port, listen_backlog);
225 - // if(listen_fd >= 0 && ip != 4) info("Managed to open an IPv4 socket on port %d.", listen_port);
227 + //if(listen_fd != -1 && ip != 4)
228 + // info("Managed to open an IPv4 socket on port %d.", listen_port);
229 }
230
231 return listen_fd;