Posted to tcl by colin at Thu Mar 17 06:40:34 GMT 2011view raw

  1. set ranges [dict get? $reply range]
  2. if {$ranges ne ""} {
  3. Debug.httpd {ranges: $ranges}
  4. set ranges [lindex [lassign [split $ranges =] unit] 0]
  5. set ranges [split $ranges ,]
  6. set ranges [lindex $ranges 0] ;# only handle one range
  7. foreach rr $ranges {
  8. lassign [split $rr -] from to
  9. lassign [split $to] to
  10. set size [dict get $reply content-length]
  11. if {$from eq ""} {
  12. set from [expr {$size-$to+1}]
  13. set to $size
  14. } elseif {$to > $size || $to eq ""} {
  15. set to [expr {$size-1}]
  16. }
  17.  
  18. lappend range $from $to ;# remember range to send
  19. }
  20.  
  21. # send appropriate content range and length fields
  22. set code 206 ;# partial content
  23. dict set reply content-range "bytes $from-$to/$size"
  24. dict set reply content-length [expr {$from-$to+1}]