summaryrefslogtreecommitdiff
path: root/src/pkg/http/response.go
diff options
context:
space:
mode:
authorPetar Maymounkov <petarm@gmail.com>2010-02-09 17:42:51 -0800
committerPetar Maymounkov <petarm@gmail.com>2010-02-09 17:42:51 -0800
commit4c6707de3ff6dc376215849135c4af10c52fec61 (patch)
tree583c017455d1e073f68a56a9085a3f9948d6b280 /src/pkg/http/response.go
parentb07eb5f7acdf58ef956cf93dc0b3d73093eea738 (diff)
downloadgolang-4c6707de3ff6dc376215849135c4af10c52fec61.tar.gz
http: protect io.WriteString in Request/Response.Write with error checking,
since they were causing a silent program exit (too many EPIPE's). R=rsc CC=golang-dev http://codereview.appspot.com/204062 Committer: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/pkg/http/response.go')
-rw-r--r--src/pkg/http/response.go12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/pkg/http/response.go b/src/pkg/http/response.go
index 30f893491..b3743a88c 100644
--- a/src/pkg/http/response.go
+++ b/src/pkg/http/response.go
@@ -459,7 +459,10 @@ func (resp *Response) Write(w io.Writer) os.Error {
}
// Rest of header
- writeSortedKeyValue(w, resp.Header, respExcludeHeader)
+ err := writeSortedKeyValue(w, resp.Header, respExcludeHeader)
+ if err != nil {
+ return err
+ }
// End-of-header
io.WriteString(w, "\r\n")
@@ -494,7 +497,7 @@ func (resp *Response) Write(w io.Writer) os.Error {
return nil
}
-func writeSortedKeyValue(w io.Writer, kvm map[string]string, exclude map[string]int) {
+func writeSortedKeyValue(w io.Writer, kvm map[string]string, exclude map[string]int) os.Error {
kva := make([]string, len(kvm))
i := 0
for k, v := range kvm {
@@ -506,6 +509,9 @@ func writeSortedKeyValue(w io.Writer, kvm map[string]string, exclude map[string]
kva = kva[0:i]
sort.SortStrings(kva)
for _, l := range kva {
- io.WriteString(w, l)
+ if _, err := io.WriteString(w, l); err != nil {
+ return err
+ }
}
+ return nil
}