diff options
| author | Adnan Maolood <[email protected]> | 2021-02-23 17:32:23 -0500 |
|---|---|---|
| committer | Adnan Maolood <[email protected]> | 2021-02-23 17:32:23 -0500 |
| commit | ae3fc2fc73450682aac96ba4553986c65ec46be4 (patch) | |
| tree | 00a4eba5989249a3f1ce762f2d003b35da3eec53 | |
| parent | request: Fix documentation for TLS (diff) | |
| download | go-gemini-ae3fc2fc73450682aac96ba4553986c65ec46be4.tar.xz go-gemini-ae3fc2fc73450682aac96ba4553986c65ec46be4.zip | |
response: Add Close method
| -rw-r--r-- | response.go | 18 | ||||
| -rw-r--r-- | timeout.go | 4 |
2 files changed, 18 insertions, 4 deletions
diff --git a/response.go b/response.go index e091c1c..9177b4a 100644 --- a/response.go +++ b/response.go @@ -204,23 +204,29 @@ type ResponseWriter interface { // Flush sends any buffered data to the client. Flush() error + + // Close closes the connection. + // Any blocked Read or Write operations will be unblocked and return errors. + Close() error } type responseWriter struct { b *bufio.Writer + closer io.Closer mediatype string wroteHeader bool bodyAllowed bool } // NewResponseWriter returns a ResponseWriter that uses the provided io.Writer. -func NewResponseWriter(w io.Writer) ResponseWriter { - return newResponseWriter(w) +func NewResponseWriter(wc io.WriteCloser) ResponseWriter { + return newResponseWriter(wc) } -func newResponseWriter(w io.Writer) *responseWriter { +func newResponseWriter(wc io.WriteCloser) *responseWriter { return &responseWriter{ - b: bufio.NewWriter(w), + b: bufio.NewWriter(wc), + closer: wc, } } @@ -266,3 +272,7 @@ func (w *responseWriter) Flush() error { // Write errors from writeHeader will be returned here. return w.b.Flush() } + +func (w *responseWriter) Close() error { + return w.closer.Close() +} @@ -102,3 +102,7 @@ func (w *timeoutWriter) writeHeaderLocked(status Status, meta string) { func (w *timeoutWriter) Flush() error { return nil } + +func (w *timeoutWriter) Close() error { + return nil +} |