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;