Posted to tcl by aspect at Tue Oct 08 22:09:53 GMT 2019view pretty

method DoOutput {} {
  my variable reply_body chan
  if {$chan eq {}} return
  catch {
    # I'm pretty sure you can't sent utf-8 in headers anyway, but let's roll with it
    chan configure $chan -encoding utf-8 -translation {auto crlf}

    set length [string length $reply_body]
    if {[string length $reply_body] ne ""} {
      # content-length is in bytes
      set body [encoding convertto utf-8 $reply_body]
      set length [string length $reply_body]
      my reply set Content-Length $length
      # headers are sent in whatever encoding you like, with crlf
      chan puts $chan [my reply output]
      # body is sent in binary, with no line ending translation
      chan configure $chan -translation binary
      chan puts $chan $body
    } else {
      chan puts $chan [my reply output]
    }
    catch {chan flush $chan}
    my log HttpAccess {}
  }
}