aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYotam Nachum <me@yotam.net>2019-11-01 13:01:21 +0200
committerYotam Nachum <me@yotam.net>2019-11-01 13:01:21 +0200
commite84e0b63cd3792b4f10404d193a56ac2d24ad1b6 (patch)
tree546aa44f4d1875beef364038a94b3110f838777a
parentAdd a license (ISC) (diff)
downloadgo-gemini-e84e0b63cd3792b4f10404d193a56ac2d24ad1b6.tar.gz
go-gemini-e84e0b63cd3792b4f10404d193a56ac2d24ad1b6.zip
Handle nil response body
-rw-r--r--server.go9
1 files changed, 8 insertions, 1 deletions
diff --git a/server.go b/server.go
index ff7df80..d4827e7 100644
--- a/server.go
+++ b/server.go
@@ -81,7 +81,10 @@ func handleConnection(conn io.ReadWriteCloser, handler Handler) {
request := Request{requestURL}
response := handler.Handle(request)
- defer response.Body.Close()
+
+ if response.Body != nil {
+ defer response.Body.Close()
+ }
err = writeResponse(conn, response)
if err != nil {
@@ -109,6 +112,10 @@ func writeResponse(conn io.Writer, response Response) error {
return fmt.Errorf("failed to write header line to the client: %v", err)
}
+ if response.Body == nil {
+ return nil
+ }
+
_, err = io.Copy(conn, response.Body)
if err != nil {
return fmt.Errorf("failed to write the response body to the client: %v", err)