diff --git a/release/src-rt-6.x.4708/router/mdu/mdu.c b/release/src-rt-6.x.4708/router/mdu/mdu.c index 80810f2d9c..f5a4adb086 100644 --- a/release/src-rt-6.x.4708/router/mdu/mdu.c +++ b/release/src-rt-6.x.4708/router/mdu/mdu.c @@ -57,7 +57,6 @@ #define MDU_ROUTE_FN "/tmp/mdu-route" #ifdef USE_LIBCURL - int curl_sslerr = 1; FILE *curl_dfile = NULL; CURL *curl_handle = NULL; char errbuf[CURL_ERROR_SIZE]; @@ -301,7 +300,7 @@ static const char *get_dump_name(void) #ifdef USE_LIBCURL static int curl_dump_cb(CURL *handle, curl_infotype type, char *data, size_t size, void *userptr) { - FILE *f_out = (FILE *)userptr; + FILE *stream = (FILE *)userptr; const char *prefix; char *in, *out; unsigned char c; @@ -309,12 +308,13 @@ static int curl_dump_cb(CURL *handle, curl_infotype type, char *data, size_t siz size_t i; struct tm *stm; time_t now; - char buf[20]; + char t_buf[20]; + /* add timestamp */ time(&now); stm = localtime(&now); - memset(buf, 0, sizeof(buf)); - strftime(buf, sizeof(buf), "%b %d %H:%M:%S ", stm); + memset(t_buf, 0, sizeof(t_buf)); + strftime(t_buf, sizeof(t_buf), "%b %d %H:%M:%S ", stm); switch (type) { case CURLINFO_HEADER_OUT: @@ -337,35 +337,41 @@ static int curl_dump_cb(CURL *handle, curl_infotype type, char *data, size_t siz return 0; } - /* pretty up a bit */ - for (in = out = data; *in != '\0'; in++) { - *out = *in; - if (*out != '\r') - out++; + /* pretty up a bit (remove carriage returns and process data in chunks) */ + for (in = out = data; in < data + size; ++in) { + if (*in != '\r') { + *out = *in; + ++out; + } } - *out = '\0'; - size = strlen(data); + *out = '\0'; /* null-terminate the modified string (for convenience) */ + + /* adjust the size after removing '\r' */ + size = out - data; if (data[size - 1] == '\n') size -= 1; if (is_info && data[size - 1] == ':') size -= 1; - fputs(buf, f_out); - fputs(prefix, f_out); + /* write timestamp and prefix to file */ + fputs(t_buf, stream); + fputs(prefix, stream); - c = 0; + /* loop over the data and print it */ for (i = 0; i < size; ++i) { c = data[i]; if (c == '\n') { - fputc('\n', f_out); - fputs(buf, f_out); - fputs(prefix, f_out); + fputc('\n', stream); + fputs(t_buf, stream); + fputs(prefix, stream); } - else - fputc((c >= 0x20 && c < 0x80) ? c : '.', f_out); + else /* if character is printable (0x20 - 0x7E), print it, otherwise print '.' */ + fputc((c >= 0x20 && c < 0x80) ? c : '.', stream); } - fputc('\n', f_out); + + /* end with a newline */ + fputc('\n', stream); return 0; } @@ -383,6 +389,7 @@ static void curl_setup(const unsigned int ssl) { CURLsslset result; const char *dump; + unsigned int curl_sslerr = 1; #ifdef USE_WOLFSSL result = curl_global_sslset(CURLSSLBACKEND_WOLFSSL, NULL, NULL);