From: David Titarenco Date: Sat, 14 Nov 2009 02:06:47 +0000 (-0800) Subject: Created new Conn.Flush() public method so the fd pipeline can be drained arbitrarily... X-Git-Tag: weekly.2009-11-17~71 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=aebae2577af4d6ae99abd9adf799cf58952377c5;p=gostls13.git Created new Conn.Flush() public method so the fd pipeline can be drained arbitrarily by the user. Commented both flush methods so people know what they are looking at. This is a necessary fix for streaming and long polling HTTP services. Fixes #93. R=r, rsc, david.titarenco https://golang.org/cl/154099 --- diff --git a/src/pkg/http/server.go b/src/pkg/http/server.go index d4b23a20f9..9178d5438c 100644 --- a/src/pkg/http/server.go +++ b/src/pkg/http/server.go @@ -238,7 +238,7 @@ func errorKludge(c *Conn, req *Request) { } } -func (c *Conn) flush() { +func (c *Conn) finishRequest() { if !c.wroteHeader { c.WriteHeader(StatusOK) } @@ -251,6 +251,14 @@ func (c *Conn) flush() { c.buf.Flush(); } +// Flush sends any buffered data to the client. +func (c *Conn) Flush() { + if !c.wroteHeader { + c.WriteHeader(StatusOK) + } + c.buf.Flush(); +} + // Close the connection. func (c *Conn) close() { if c.buf != nil { @@ -277,7 +285,7 @@ func (c *Conn) serve() { if c.hijacked { return } - c.flush(); + c.finishRequest(); if c.closeAfterReply { break }