Posted to tcl by colin at Thu Mar 17 06:40:34 GMT 2011view raw
- set ranges [dict get? $reply range]
- if {$ranges ne ""} {
- Debug.httpd {ranges: $ranges}
- set ranges [lindex [lassign [split $ranges =] unit] 0]
- set ranges [split $ranges ,]
- set ranges [lindex $ranges 0] ;# only handle one range
- foreach rr $ranges {
- lassign [split $rr -] from to
- lassign [split $to] to
- set size [dict get $reply content-length]
- if {$from eq ""} {
- set from [expr {$size-$to+1}]
- set to $size
- } elseif {$to > $size || $to eq ""} {
- set to [expr {$size-1}]
- }
- lappend range $from $to ;# remember range to send
- }
- # send appropriate content range and length fields
- set code 206 ;# partial content
- dict set reply content-range "bytes $from-$to/$size"
- dict set reply content-length [expr {$from-$to+1}]