diff options
| author | Stephen Ma <stephenm@golang.org> | 2009-04-27 00:38:04 -0700 |
|---|---|---|
| committer | Stephen Ma <stephenm@golang.org> | 2009-04-27 00:38:04 -0700 |
| commit | eb5eea9a8f336355fa2c7d006a56bb740b3486ec (patch) | |
| tree | ccbfca664a4711c8bd6e31bbc96f1d6d7be3f6af /src/lib/http/server.go | |
| parent | f4b92c8624d220592b374fb8d1a654d6e8a356c6 (diff) | |
| download | go-eb5eea9a8f336355fa2c7d006a56bb740b3486ec.tar.xz | |
Fix the chunked encoding - terminate the chunk with CRLF.
R=rsc
APPROVED=r
DELTA=11 (10 added, 0 deleted, 1 changed)
OCL=27723
CL=27879
Diffstat (limited to 'src/lib/http/server.go')
| -rw-r--r-- | src/lib/http/server.go | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/lib/http/server.go b/src/lib/http/server.go index 3595a515dc..9b6aa6c414 100644 --- a/src/lib/http/server.go +++ b/src/lib/http/server.go @@ -174,7 +174,17 @@ func (c *Conn) Write(data []byte) (n int, err os.Error) { if c.chunking { fmt.Fprintf(c.buf, "%x\r\n", len(data)); // TODO(rsc): use strconv not fmt } - return c.buf.Write(data); + n, err = c.buf.Write(data); + if err == nil && c.chunking { + if n != len(data) { + err = bufio.ShortWrite; + } + if err == nil { + io.WriteString(c.buf, "\r\n"); + } + } + + return n, err; } func (c *Conn) flush() { |
