Compare commits

...

2 Commits

Author SHA1 Message Date
Fufu Fang 81aac8bb57
fixed spelling, ran through the formatter 2024-01-13 12:31:47 +00:00
Mattias Runge-Broberg 35a213942c
Fix for single file mode not working
- Fix for not sending ranges which exceed the content-length which will result
in an error.
- Fix for byte range being set to 1 byte too large, it should be the end index,
not the size as described in
https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests
2024-01-13 12:30:52 +00:00
2 changed files with 32 additions and 20 deletions

View File

@ -704,7 +704,10 @@ int LinkTable_disk_save(LinkTable *linktbl, const char *dirn)
/* This is necessary to get the compiler on some platforms to stop
complaining about the fact that we're not using the return value of
fread, when we know we aren't and that's fine. */
static inline void ignore_value(int i) { (void) i; }
static inline void ignore_value(int i)
{
(void) i;
}
LinkTable *LinkTable_disk_open(const char *dirn)
{
@ -799,6 +802,8 @@ LinkTable *path_to_Link_LinkTable_new(const char *path)
if (!next_table) {
if (CONFIG.mode == NORMAL) {
next_table = LinkTable_new(tmp_link->f_url);
} else if (CONFIG.mode == SINGLE) {
next_table = single_LinkTable_new(tmp_link->f_url);
} else if (CONFIG.mode == SONIC) {
if (!CONFIG.sonic_id3) {
next_table = sonic_LinkTable_new_index(tmp_link->sonic.id);
@ -808,7 +813,7 @@ LinkTable *path_to_Link_LinkTable_new(const char *path)
tmp_link->sonic.id);
}
} else {
lprintf(fatal, "Invalid CONFIG.mode\n");
lprintf(fatal, "Invalid CONFIG.mode: %d\n", CONFIG.mode);
}
}
if (link) {
@ -981,7 +986,7 @@ static CURL *Link_download_curl_setup(Link *link, size_t req_size, off_t offset,
}
size_t start = offset;
size_t end = start + req_size;
size_t end = start + req_size - 1;
char range_str[64];
snprintf(range_str, sizeof(range_str), "%lu-%lu", start, end);
@ -1061,6 +1066,13 @@ long Link_download(Link *link, char *output_buf, size_t req_size, off_t offset)
header.curr_size = 0;
header.data = NULL;
if (offset + req_size > link->content_length) {
lprintf(error,
"requested size too large, req_size: %lu, recv: %ld, content-length: %ld\n",
req_size, recv, link->content_length);
req_size = link->content_length - offset;
}
CURL *curl = Link_download_curl_setup(link, req_size, offset, &header, &ts);
transfer_blocking(curl);