[svn] Added support for Range header.

This commit is contained in:
mtortonesi 2006-08-17 02:15:00 -07:00
parent 8566a72767
commit 2c759092f6
1 changed files with 18 additions and 1 deletions

View File

@ -65,7 +65,24 @@ sub run {
$con->send_basic_header($tmp->{code}, $resp->message, $resp->protocol);
print $con $resp->headers_as_string($CRLF);
print $con $CRLF;
print $con $tmp->{content};
print $con $tmp->{content};
next;
}
if ($req->header("Range")) {
$req->header("Range") =~ m/bytes=(\d*)-(\d*)/;
my $content_len = length($tmp->{content});
my $start = $1 ? $1 : 0;
my $end = $2 ? $2 : ($content_len - 1);
my $len = $2 ? ($2 - $start) : ($content_len - $start);
$resp->header("Accept-Ranges" => "bytes");
$resp->header("Content-Length" => $len);
$resp->header("Content-Range" => "bytes $start-$end/$content_len");
$resp->header("Keep-Alive" => "timeout=15, max=100");
$resp->header("Connection" => "Keep-Alive");
$con->send_basic_header(206, "Partial Content", $resp->protocol);
print $con $resp->headers_as_string($CRLF);
print $con $CRLF;
print $con substr($tmp->{content}, $start, $len);
next;
}
# fill in content