summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2018-10-10 02:45:11 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2018-10-10 02:45:11 +0200
commita13ba7741f35528ea4b8764652101321f089a514 (patch)
tree0006e303a56bd48791fabe2a87b925204aef617a
parente73ce8475e683c62d0335a18788d86ae92a010f0 (diff)
downloadplan9front-a13ba7741f35528ea4b8764652101321f089a514.tar.xz
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.
-rwxr-xr-xrc/bin/hget15
1 files 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)