From a13ba7741f35528ea4b8764652101321f089a514 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Wed, 10 Oct 2018 02:45:11 +0200 Subject: [PATCH] hget: do a HEAD request to check if the file is already complete (thanks miscief) when we continue a download, make sure the file isnt already complete, as otherwise the server might respond with a 416 as the range request will out of range. --- rc/bin/hget | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/rc/bin/hget b/rc/bin/hget index dca3c1522..ce258575b 100755 --- a/rc/bin/hget +++ b/rc/bin/hget @@ -47,13 +47,24 @@ if(! ~ $#o 0){ if(test -s $o) s=`{ls -l $o | awk '{print $6}'} } -if(! ~ $s 0) - r=($r 'Range: bytes='^$s^'-') <[3=0] <>/mnt/web/clone { d=/mnt/web/^`{sed 1q} if(~ $#b 1) echo -n baseurl $b >[1=0] echo -n url $1 >[1=0] + if(! ~ $s 0 && ~ $#p 0 && ~ $#P 0 && ~ $#m 0){ + for(i in $r) + echo -n headers $i >[1=0] + echo -n request HEAD >[1=0] + <$d/body { + if(~ $s `{cat $d/contentlength >[2]/dev/null}) + exit '' + } + if(~ $#b 1) + echo -n baseurl $b >[1=0] + echo -n url $1 >[1=0] + r=($r 'Range: bytes='^$s^'-') + } for(i in $r) echo -n headers $i >[1=0] if(~ $#m 1)