aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdnan Maolood <[email protected]>2021-02-23 17:32:23 -0500
committerAdnan Maolood <[email protected]>2021-02-23 17:32:23 -0500
commitae3fc2fc73450682aac96ba4553986c65ec46be4 (patch)
tree00a4eba5989249a3f1ce762f2d003b35da3eec53
parentrequest: Fix documentation for TLS (diff)
downloadgo-gemini-ae3fc2fc73450682aac96ba4553986c65ec46be4.tar.xz
go-gemini-ae3fc2fc73450682aac96ba4553986c65ec46be4.zip
response: Add Close method
-rw-r--r--response.go18
-rw-r--r--timeout.go4
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()
+}
diff --git a/timeout.go b/timeout.go
index 0ee21e4..20b270c 100644
--- a/timeout.go
+++ b/timeout.go
@@ -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
+}