Close writes any remaining buffered response and deallocates any active resources.
()
| 413 | // Close writes any remaining buffered response and |
| 414 | // deallocates any active resources. |
| 415 | func (rw *responseWriter) Close() error { |
| 416 | // didn't write, probably head request |
| 417 | if !rw.wroteHeader { |
| 418 | cl, err := strconv.Atoi(rw.Header().Get("Content-Length")) |
| 419 | if err == nil && cl > rw.config.MinLength { |
| 420 | rw.init() |
| 421 | } |
| 422 | |
| 423 | // issue #5059, don't write status code if not set explicitly. |
| 424 | if rw.statusCode != 0 { |
| 425 | rw.ResponseWriter.WriteHeader(rw.statusCode) |
| 426 | } |
| 427 | rw.wroteHeader = true |
| 428 | } |
| 429 | |
| 430 | var err error |
| 431 | if rw.w != nil { |
| 432 | err = rw.w.Close() |
| 433 | rw.w.Reset(nil) |
| 434 | rw.config.writerPools[rw.encodingName].Put(rw.w) |
| 435 | rw.w = nil |
| 436 | } |
| 437 | return err |
| 438 | } |
| 439 | |
| 440 | // Unwrap returns the underlying ResponseWriter. |
| 441 | func (rw *responseWriter) Unwrap() http.ResponseWriter { |