diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-10-10 02:45:11 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2018-10-10 02:45:11 +0200 |
commit | a13ba7741f35528ea4b8764652101321f089a514 (patch) | |
tree | 0006e303a56bd48791fabe2a87b925204aef617a | |
parent | e73ce8475e683c62d0335a18788d86ae92a010f0 (diff) | |
download | plan9front-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-x | rc/bin/hget | 15 |
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) |