Compare commits
2 Commits
00764d6a3c
...
81aac8bb57
Author | SHA1 | Date |
---|---|---|
Fufu Fang | 81aac8bb57 | |
Mattias Runge-Broberg | 35a213942c |
18
src/link.c
18
src/link.c
|
@ -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
|
/* 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
|
complaining about the fact that we're not using the return value of
|
||||||
fread, when we know we aren't and that's fine. */
|
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)
|
LinkTable *LinkTable_disk_open(const char *dirn)
|
||||||
{
|
{
|
||||||
|
@ -799,6 +802,8 @@ LinkTable *path_to_Link_LinkTable_new(const char *path)
|
||||||
if (!next_table) {
|
if (!next_table) {
|
||||||
if (CONFIG.mode == NORMAL) {
|
if (CONFIG.mode == NORMAL) {
|
||||||
next_table = LinkTable_new(tmp_link->f_url);
|
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) {
|
} else if (CONFIG.mode == SONIC) {
|
||||||
if (!CONFIG.sonic_id3) {
|
if (!CONFIG.sonic_id3) {
|
||||||
next_table = sonic_LinkTable_new_index(tmp_link->sonic.id);
|
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);
|
tmp_link->sonic.id);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
lprintf(fatal, "Invalid CONFIG.mode\n");
|
lprintf(fatal, "Invalid CONFIG.mode: %d\n", CONFIG.mode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (link) {
|
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 start = offset;
|
||||||
size_t end = start + req_size;
|
size_t end = start + req_size - 1;
|
||||||
|
|
||||||
char range_str[64];
|
char range_str[64];
|
||||||
snprintf(range_str, sizeof(range_str), "%lu-%lu", start, end);
|
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.curr_size = 0;
|
||||||
header.data = NULL;
|
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);
|
CURL *curl = Link_download_curl_setup(link, req_size, offset, &header, &ts);
|
||||||
|
|
||||||
transfer_blocking(curl);
|
transfer_blocking(curl);
|
||||||
|
|
Loading…
Reference in New Issue