docs: def send_headers(self):
          """Assert, process, and send the HTTP response message-headers.
          
          You must set self.status, and self.outheaders before calling this.
          """
          hkeys = [key.lower() for key, value in self.outheaders]
          status = int(self.status[:3])
          
          if status == 413:
              # Request Entity Too Large. Close conn to avoid garbage.
              self.close_connection = True
          elif "content-length" not in hkeys:
              # "All 1xx (informational), 204 (no content),
              # and 304 (not modified) responses MUST NOT
              # include a message-body." So no point chunking.
              if status < 200 or status in (204, 205, 304):
                  pass
              else:
                  if (self.response_protocol == 'HTTP/1.1'
                      and self.method != 'HEAD'):
                      # Use the chunked transfer-coding
                      self.chunked_write = True
                      self.outheaders.append(("Transfer-Encoding", "chunked"))
                  else:
                      # Closing the conn is the only way to determine len.
                      self.close_connection = True
          
          if "connection" not in hkeys:
              if self.response_protocol == 'HTTP/1.1':
                  # Both server and client are HTTP/1.1 or better
                  if self.close_connection:
                      self.outheaders.append(("Connection", "close"))
              else:
                  # Server and/or client are HTTP/1.0
                  if not self.close_connection:
                      self.outheaders.append(("Connection", "Keep-Alive"))
          
          if (not self.close_connection) and (not self.chunked_read):
              # Read any remaining request body data on the socket.
              # "If an origin server receives a request that does not include an
              # Expect request-header field with the "100-continue" expectation,
              # the request includes a request body, and the server responds
              # with a final status code before reading the entire request body
              # from the transport connection, then the server SHOULD NOT close
              # the transport connection until it has read the entire request,
              # or until the client closes the connection. Otherwise, the client
              # might not reliably receive the response message. However, this
              # requirement is not be construed as preventing a server from
              # defending itself against denial-of-service attacks, or from
              # badly broken client implementations."
              remaining = getattr(self.rfile, 'remaining', 0)
              if remaining > 0:
                  self.rfile.read(remaining)
          
          if "date" not in hkeys:
              self.outheaders.append(("Date", rfc822.formatdate()))
          
          if "server" not in hkeys:
              self.outheaders.append(("Server", self.server.server_name))
          
          buf = [self.server.protocol + " " + self.status + CRLF]
          for k, v in self.outheaders:
              buf.append(k + ": " + v + CRLF)
          buf.append(CRLF)
          self.conn.wfile.sendall("".join(buf))